Twitterのタイムライン収集を行うPythonの関数の動かし方
環境: Ubuntu 16.04.3, python 2.7.14
https://qiita.com/kenmatsu4/items/23768cbe32fe381d54a2
twitterのタイムラインから単語を収集し解析するプログラムの勉強のために、上記ページのプログラムで、Twitterのタイムラインを収集するプログラムを動かしたいです。
functions.pyで以下のようにエラーが表示されます。
$ python functions.py
Traceback (most recent call last):
File "functions.py", line 31, in <module>
print(getTweetData())
TypeError: getTweetData() takes exactly 3 arguments (0 given)
自分の手元にコピーし、編集したソースコードは以下のようになっています。
functions.py
from initialize import initialize
def getTweetData(search_word, max_id, since_id):
global twitter
url = 'https://api.twitter.com/1.1/search/tweets.json'
params = {'q': 'search_word',
'count':'100',
}
# max_idの指定があれば設定する
if max_id != -1:
params['max_id'] = max_id
# since_idの指定があれば設定する
if since_id != -1:
params['since_id'] = since_id
req = twitter.get(url, params = params) # Tweetデータの取得
# 取得したデータの分解
if req.status_code == 200: # 成功した場合
timeline = json.loads(req.text)
metadata = timeline['search_metadata']
statuses = timeline['statuses']
limit = req.headers['x-rate-limit-remaining'] if 'x-rate-limit-remaining' in req.headers else 0
reset = req.headers['x-rate-limit-reset'] if 'x-rate-limit-reset' in req.headers else 0
return {"result":True, "metadata":metadata, "statuses":statuses, "limit":limit, "reset_time":datetime.datetime.fromtimestamp(float(reset)), "reset_time_unix":reset}
else: # 失敗した場合
print ("Error: %d" % req.status_code)
return{"result":False, "status_code":req.status_code}
print(getTweetData())
def obj_nullcheck(string): # Y if X else Z
return False if string is None else True
def is_exist_id(id_str):
return tweetdata.find({'id':long(id_str)},{'id':1}).count() > 0
initialize.py
from requests_oauthlib import OAuth1Session
from requests.exceptions import ConnectionError, ReadTimeout, SSLError
import json, datetime, time, pytz, re, sys, traceback, unicodedata, pymongo
from pymongo import MongoClient
import numpy as np
from collections import defaultdict
from bson.objectid import ObjectId
import MeCab as mc
from logging import getLogger, DEBUG
from logging.handlers import SysLogHandler
KEYS = {
'consumer_key':'*****************',
'consumer_secret':'*****************',
'access_token':'*****************',
'access_secret':'*****************',
}
twitter = None
connect = None
db = None
tweetdata = None
meta = None
posi_nega_dict = None
def initialize(): # twitter接続情報や、mongoDBへの接続処理等initial処理実行
global twitter, twitter, connect, db, tweetdata, meta
twitter = OAuth1Session(KEYS['consumer_key'],KEYS['consumer_secret'],
KEYS['access_token'],KEYS['access_secret'])
connect = MongoClient('localhost', 27017)
db = connect.kenko
tweetdata = db.tweetdata
meta = db.metadata
posi_nega_dict = db.posinegadict
initialize()
print(initialize())
自分で調べて実行したことは
1.global変数twitterの中身が定義されていないので twitter = で
req = twitter.get(url, params = params) # Tweetデータの取得までを {}で囲む
→ 結果
File "functions.py", line 7
url = 'https://api.twitter.com/1.1/search/tweets.json'
^
SyntaxError: invalid syntax
色々試すが無関係そうだと判断。
initialize.py内のtwitterのapiキーが間違っている
→ キーを確認。問題なし。0 givenとエラーに表示されているので、 search_word, max_id, since_id が機能していないのではと考えたがその先どうすれば直るのかが不明
お手数ですが、アドバイスよろしくお願いします。