def createDb(): db = sqlite3.connect('./db/users.db') cursor = db.cursor() sql_create = " ".join(( "CREATE TABLE followers (", "user_name text,", "screen_name text,", "image_url text,", "false_percent integer,", "profile_text text,", "followers_count integer,", "profile_image binary", ");")) sql_insert_f = " ".join(( "INSERT INTO followers (", "user_name,", "screen_name,", "image_url,", "false_percent,", "profile_text,", "followers_count,", "profile_image", ") VALUES (?,?,?,?,?,?,?);")) cur = db.execute("SELECT * FROM sqlite_master WHERE type='table' and name='%s'" % "followers") if cur.fetchone()==None: #存在してないので作る cursor.execute(sql_create) db.commit() else: cursor.execute("""DROP TABLE %s;""" % "followers") #リセット cursor.execute(sql_create) # OAuth2.0用のキーを取得する with open("secret.json") as f: secretjson = json.load(f) # Twitterへの接続 t = Twitter(auth=OAuth(secretjson["access_token"], secretjson["access_token_secret"], secretjson["consumer_key"], secretjson["consumer_secret"])) my_account = input('あなたのアカウント名>>> @') my_account = "@" + my_account print(my_account) # 検索する try: followers = t.followers.list(screen_name=str(my_account), count=50) except: print("ERROR!!") exit() followers_list = [] for x in followers['users']: user = {} user['name'] = x['name'] user['screen_name'] = x['screen_name'] user['image_url'] = x['profile_image_url_https'] user['false_percent'] = 0 user['profile_text'] = x['description'] user['followers_count'] = x['followers_count'] Image.saveImage(user['image_url'], user['screen_name'], "./pictures/followers") followers_list.append(user) for u in followers_list: same_names = t.users.search(q=u['name'],count=50) same_names = sorted(same_names, key=lambda x:x["followers_count"],reverse=True) same_name = u for s in same_names: if u['name'] == s['name']: same_name = s break print("[ユーザー名] " + u['name']) if u['name']==same_name['name']: if u['screen_name']==same_name['screen_name']: print(' [アカウント名] ' + u['name'] + '@' + u['screen_name'] + " " + str(u['followers_count']) + " [本物]\n") cursor.execute(sql_insert_f,(u['name'], u['screen_name'], u['image_url'], 0, u['profile_text'], u['followers_count'], None)) else: print(' [アカウント名] ' + same_name['name'] + '@' + same_name['screen_name'] + " " + str(same_name['followers_count']) + " [本物?]") print(' [アカウント名] ' + u['name'] + '@' + u['screen_name'] + " " + str(u['followers_count']) + " [偽物かも?]") ######## 画像比較 ######## print(" -> 画像判別: ") Image.saveImage(same_name['profile_image_url_https'], same_name['screen_name'], "./pictures/same_name_users") image_match = Image.compareImage(u['screen_name'], same_name['screen_name']) print(" 画像類似度" + str(image_match) + "%") u['false_percent'] = u['false_percent'] + image_match ######## 文字比較 ######## print(" -> 文字判別: ") word_match = Word.wordCompare(u['profile_text'],same_name['description']) u['false_percent'] = u['false_percent'] + word_match print(" プロフィール類似度: " + str(word_match) + "%") print(" -> その他: 未実装") print("なりすましアカウント率: " + str(u['false_percent']) + "%\n") cursor.execute(sql_insert_f,(u['name'], u['screen_name'], u['image_url'], u['false_percent'], u['profile_text'], u['followers_count'], None)) print('---------------------------------------------------') pass db.commit() db.close()
def createDb(): db = sqlite3.connect('./db/users.db') cursor = db.cursor() sql_create = " ".join( ("CREATE TABLE followers (", "user_name text,", "screen_name text,", "image_url text,", "false_percent integer,", "profile_text text,", "followers_count integer,", "profile_image binary", ");")) sql_insert_f = " ".join( ("INSERT INTO followers (", "user_name,", "screen_name,", "image_url,", "false_percent,", "profile_text,", "followers_count,", "profile_image", ") VALUES (?,?,?,?,?,?,?);")) cur = db.execute( "SELECT * FROM sqlite_master WHERE type='table' and name='%s'" % "followers") if cur.fetchone() == None: #存在してないので作る cursor.execute(sql_create) db.commit() else: cursor.execute("""DROP TABLE %s;""" % "followers") #リセット cursor.execute(sql_create) # OAuth2.0用のキーを取得する with open("secret.json") as f: secretjson = json.load(f) # Twitterへの接続 t = Twitter(auth=OAuth( secretjson["access_token"], secretjson["access_token_secret"], secretjson["consumer_key"], secretjson["consumer_secret"])) my_account = input('あなたのアカウント名>>> @') my_account = "@" + my_account print(my_account) # 検索する try: followers = t.followers.list(screen_name=str(my_account), count=50) except: print("ERROR!!") exit() followers_list = [] for x in followers['users']: user = {} user['name'] = x['name'] user['screen_name'] = x['screen_name'] user['image_url'] = x['profile_image_url_https'] user['false_percent'] = 0 user['profile_text'] = x['description'] user['followers_count'] = x['followers_count'] Image.saveImage(user['image_url'], user['screen_name'], "./pictures/followers") followers_list.append(user) for u in followers_list: same_names = t.users.search(q=u['name'], count=50) same_names = sorted(same_names, key=lambda x: x["followers_count"], reverse=True) same_name = u for s in same_names: if u['name'] == s['name']: same_name = s break print("[ユーザー名] " + u['name']) if u['name'] == same_name['name']: if u['screen_name'] == same_name['screen_name']: print(' [アカウント名] ' + u['name'] + '@' + u['screen_name'] + " " + str(u['followers_count']) + " [本物]\n") cursor.execute(sql_insert_f, (u['name'], u['screen_name'], u['image_url'], 0, u['profile_text'], u['followers_count'], None)) else: print(' [アカウント名] ' + same_name['name'] + '@' + same_name['screen_name'] + " " + str(same_name['followers_count']) + " [本物?]") print(' [アカウント名] ' + u['name'] + '@' + u['screen_name'] + " " + str(u['followers_count']) + " [偽物かも?]") ######## 画像比較 ######## print(" -> 画像判別: ") Image.saveImage(same_name['profile_image_url_https'], same_name['screen_name'], "./pictures/same_name_users") image_match = Image.compareImage(u['screen_name'], same_name['screen_name']) print(" 画像類似度" + str(image_match) + "%") u['false_percent'] = u['false_percent'] + image_match ######## 文字比較 ######## print(" -> 文字判別: ") word_match = Word.wordCompare(u['profile_text'], same_name['description']) u['false_percent'] = u['false_percent'] + word_match print(" プロフィール類似度: " + str(word_match) + "%") print(" -> その他: 未実装") print("なりすましアカウント率: " + str(u['false_percent']) + "%\n") cursor.execute(sql_insert_f, (u['name'], u['screen_name'], u['image_url'], u['false_percent'], u['profile_text'], u['followers_count'], None)) print('---------------------------------------------------') pass db.commit() db.close()