Using twurl in a python3 file to retrieve data from a twitter user

i’m working through the Charles Severance book: Python for Everybody. The code example that imports twurl and accesses twitter to pull some info os broken. I’m searching for tutorials that will help me with this.

Broken in what way?

If you post the code example, and the error that you get, maybe we can suggest how to fix it.

Please do not post a screen shot or image. Copy and paste the text.

The code resides on the website for the Python For Everybody book.
The actual code is here: https://www.py4e.com/code3/twspider.py

#In the book the Twitter account entered is drchuck
from urllib.request import urlopen
import urllib.error
import twurl
import json
import sqlite3
import ssl

TWITTER_URL = ‘https://api.twitter.com/1.1/friends/list.json

conn = sqlite3.connect(‘spider.sqlite’)
cur = conn.cursor()

cur.execute(’’’
CREATE TABLE IF NOT EXISTS Twitter
(name TEXT, retrieved INTEGER, friends INTEGER)’’’)

Ignore SSL certificate errors

ctx = ssl.create_default_context()
ctx.check_hostname = False
ctx.verify_mode = ssl.CERT_NONE

while True:
acct = input('Enter a Twitter account, or quit: ')
if (acct == ‘quit’): break
if (len(acct) < 1):
cur.execute(‘SELECT name FROM Twitter WHERE retrieved = 0 LIMIT 1’)
try:
acct = cur.fetchone()[0]
except:
print(‘No unretrieved Twitter accounts found’)
continue

url = twurl.augment(TWITTER_URL, {'screen_name': acct, 'count': '20'})
print('Retrieving', url)
connection = urlopen(url, context=ctx)
data = connection.read().decode()
headers = dict(connection.getheaders())

print('Remaining', headers['x-rate-limit-remaining'])
js = json.loads(data)
# Debugging
# print json.dumps(js, indent=4)

cur.execute('UPDATE Twitter SET retrieved=1 WHERE name = ?', (acct, ))

countnew = 0
countold = 0
for u in js['users']:
    friend = u['screen_name']
    print(friend)
    cur.execute('SELECT friends FROM Twitter WHERE name = ? LIMIT 1',
                (friend, ))
    try:
        count = cur.fetchone()[0]
        cur.execute('UPDATE Twitter SET friends = ? WHERE name = ?',
                    (count+1, friend))
        countold = countold + 1
    except:
        cur.execute('''INSERT INTO Twitter (name, retrieved, friends)
                    VALUES (?, 0, 1)''', (friend, ))
        countnew = countnew + 1
print('New accounts=', countnew, ' revisited=', countold)
conn.commit()

cur.close()