· 6 years ago · Nov 28, 2018, 03:12 AM
1#-*- coding: utf-8 -*-
2'''
3Created on 2012/07/21
4
5@author: sakura
6'''
7import tweepy
8import inspect
9import ConfigParser
10import os
11
12from DayOneEntry import DayOneEntry
13
14class TweetReader():
15
16 SETTING_FILE = os.path.dirname(os.path.abspath(__file__)) + "/setting"
17 OUTPUT_DIR = "/Users/XXXXXX/Dropbox/Journal.dayone/entries/"
18 def __init__(self):
19 #twitter apiã®å–å¾—
20 consumer_key = ""
21 consumer_secret = ""
22 oauth_token = ""
23 oauth_token_secret = ""
24
25 auth = tweepy.OAuthHandler(consumer_key, consumer_secret)
26 auth.set_access_token(oauth_token, oauth_token_secret)
27 self.api = tweepy.API(auth)
28
29 #å‰å›žå–å¾—ã—ãŸIDã®æœ€å¤§å€¤
30 self.readedTweetId = 1
31
32 #è¨å®šã®èªã¿è¾¼ã¿
33 self.readSetting()
34
35 def readSetting(self):
36 self.config = ConfigParser.RawConfigParser()
37 self.config.read(self.SETTING_FILE)
38 if len(self.config.sections()) == 0:
39 self.config.add_section("tweet")
40 else:
41 self.readedTweetId = self.config.getint("tweet", "readedTweetId")
42
43 def saveSetting(self):
44 self.config.set("tweet", "readedTweetId", self.readedTweetId)
45 with open(self.SETTING_FILE, 'wb') as configfile:
46 self.config.write(configfile)
47
48 def readTweets(self):
49 doeList = []
50 tweetId = 0
51
52 #ã‚ã‚‹idã®ãƒ„イート以é™ã‚’å–å¾—
53 #retweets = api.user_timeline(user_id='masumi_asano',since_id = 224511525484888064)
54 for i in range(1,17):
55 #3200ä»¶ã¾ã§ã“ã®æ–¹æ³•ã§å–å¾—ã§ãる 
56 tweets = self.api.user_timeline(count=200,page=i,since_id=self.readedTweetId)
57 if len(tweets) == 0:
58 break
59 for t in tweets:
60 if tweetId < t.id:
61 tweetId = t.id
62 #ツイートã®DayOneEntryオブジェクトを作æˆã—リストã«è¿½åŠ
63 doeList.append(DayOneEntry(t.created_at,unicode(t.text),t.favorited))
64
65 if not tweetId == 0:
66 self.readedTweetId = tweetId
67
68 return doeList
69
70 def readAndOutputDOE(self):
71 doeList = self.readTweets()
72 i = 0
73 while len(doeList) > 0:
74 for doeObj in doeList:
75 #ãƒ•ã‚¡ã‚¤ãƒ«ã®æ›¸ã出ã—
76 uuid = doeObj.entryUUID
77 myFile = open(self.OUTPUT_DIR + uuid + ".doentry",'w')
78 myFile.write(doeObj.toXML())
79 myFile.close()
80 #print doeObj.getDOEntryDoc()
81
82 doeList = self.readTweets()
83 i+=1
84 if i > 100:#念ã®ç‚º
85 break;
86
87 self.saveSetting()
88
89reader = TweetReader()
90reader.readAndOutputDOE()
91print "fin."