風柳メモ

ソフトウェア・プログラミング関連の覚書が中心

【librtrt】ホームやユーザタイムラインからRTを抜き出してRtRTする例

承前

user_timelineで自分のTLを持ってきて"retweeted_status"要素を持っているもので絞り込むと、自分がRTしたつぶやきのRtRTが探せるので、100RT以上のつぶやきのテストや「へー、みんなはこんなこと言ってるんだなー」という暇つぶしに使えます。絞り込んだ後の処理はほとんど同じなので、手間の割には楽しいかと思います。

esuji5さんのコメントより

100RT以上には対応していないけれど、とりあえず librtrt の使用例を兼ねて。

サンプルソース

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

from librtrt import Rtrt
import tweepy


DEBUG = False

USER_NAME = 'furyutei' # 自分の screen_name

LIMIT_RT = 5           # タイムラインから取得するRT件数の制限(最新からLIMIT_RT件目まで)
LIMIT_RTERS = 20       # RT人数制限(最新からLIMIT_RTERS人まで)


def get_rtid_list(tl_iter): #{
  rtid_list = []
  for status in tl_iter:
    rt = getattr(status, 'retweeted_status', None)
    if rt:
      if DEBUG: print rt.id
      rtid_list.append(rt.id)
      if LIMIT_RT and LIMIT_RT <= len(rtid_list): break
  return rtid_list
#} // end of get_rtid_list()


rtrt = Rtrt(use_aauth=True)

print "##### ユーザタイムラインのRTよりRtRT検索"
api = rtrt.api
tl_iter = tweepy.Cursor(api.user_timeline, screen_name=USER_NAME, count=rtrt.MAX_STATUSES_PER_CALL_TIMELINE).items()
rtid_list = get_rtid_list(tl_iter)
rtrt.get_rtrt(retweeted_ids=rtid_list, limit_rters=LIMIT_RTERS, debug=DEBUG)
rtrt.json_write('user_rt_rtrt')


print "##### ホームタイムラインのRTよりRtRT検索"
api = rtrt.oapi # OAuth用API使用時は Rtrt#oapi を使用
tl_iter = tweepy.Cursor(api.home_timeline, count=rtrt.MAX_STATUSES_PER_CALL_TIMELINE).items()
rtid_list = get_rtid_list(tl_iter)
rtrt.get_rtrt(retweeted_ids=rtid_list, limit_rters=LIMIT_RTERS, debug=DEBUG)
rtrt.json_write('home_rt_rtrt')