3

ご存知のとおり、Twitter は新しい API (1.1) に移行しており、古い API (1.0) は停電に直面しており、最終的には終了しています。

私は Python/ Djangoを使用してグループ プロジェクトに取り組んでいますが、API 1.1 を使用している大きな Python Twitter ライブラリはないようです。Python インターフェースを使用せずに API と直接インターフェースすることもできますが、OAuthログインを使用する必要があるため、問題があります。

そこで、質問が 2 つあります。

  1. Twitter API 1.1 をサポートする Python ライブラリはありますか?

  2. 次の URL のように新しい API と直接やり取りする場合、OAuth でログインする必要があることを考えると、どのように機能させるのでしょうか?

    URL:https://api.twitter.com/1.1/search/tweets.json?q=#freebandnames&since_id=24012619984051000&max_id=250126199840518145&result_type=mixed&count=4

4

2 に答える 2

5

Twitterモジュールは機能します。これを使用して、Twitterに認証を依頼し、Twitter Webサイトにアクセスし、ユーザーとパスワードを入力して、コンピューターにトークンを保存することができます。

このコードを使用してTwitterのステータスを検索します(リアルタイム検索は標準のTwitter検索とは少し異なります)。

コード:

# -*- coding: utf-8 -*-

import os
import twitter
import json
import csv

from twitter.oauth import write_token_file, read_token_file
from twitter.oauth_dance import oauth_dance

def login():
    # Go to http://twitter.com/apps/new to create an app and get these items.
    # See also http://dev.twitter.com/pages/oauth_single_token.

    APP_NAME = 'xxx'
    CONSUMER_KEY = 'xxx'
    CONSUMER_SECRET = 'xxx'
    TOKEN_FILE = '/token.txt'

    try:
        (oauth_token, oauth_token_secret) = read_token_file(TOKEN_FILE)
    except IOError, e:
        (oauth_token, oauth_token_secret) = oauth_dance(APP_NAME, CONSUMER_KEY,
                CONSUMER_SECRET)
        print e.errno
        print e

        if not os.path.isdir('out'):
            os.mkdir('out')

        write_token_file(TOKEN_FILE, oauth_token, oauth_token_secret)

    auth=twitter.oauth.OAuth(oauth_token, oauth_token_secret,CONSUMER_KEY, CONSUMER_SECRET)
    return twitter.TwitterStream(auth = auth, secure = True)

if __name__=="__main__":
    t = login()
    res = t.statuses.filter(track = "search text")

    res_list = []
    tweetfields = set()
    for r in res:
        if len(res_list)<100:
            print len(res_list)
            res_list.append(r)
            tweetfields = tweetfields.union(r.keys())
        else:
            break

    fname = '/results.csv'
    f = open(fname,'w')
    dw = csv.DictWriter(f,fieldnames=list(tweetfields))
    dw.writeheader()

    for r in res_list:
        dw.writerow({k:v.encode('utf8') if isinstance(v,unicode) else v for k,v in r.items()})
    f.close()

    print [result['text'] for result in res_list]
于 2013-03-22T03:56:29.783 に答える
0

次のように新しい API と直接やり取りする場合、OAuth でログインする必要があることを考慮して、どのように機能させるのでしょうか?

>>> import twitter
>>> client = twitter.Api(username='yourusername', password='yourpassword')
>>> update = client.PostUpdate('The Twitter API is easy')
于 2013-03-09T15:42:39.183 に答える