Changeset 17940
- Timestamp:
- 08/21/08 08:55:37 (5 months ago)
- Location:
- lang/python/crochet
- Files:
-
- 2 modified
-
chat_allsrc.py (modified) (10 diffs)
-
twitter3.py (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
-
lang/python/crochet/chat_allsrc.py
r17088 r17940 64 64 def run(self): 65 65 #ここに通信処理を書く 66 a = self.tw.get("") 66 #a = self.tw.get("") 67 a = self.tw.getWithScraping("") 67 68 self.func(a) 68 69 70 """ 71 カスタムページ(自分でフィルタリングする) 72 """ 73 class CustomPage(wx.NotebookPage): 74 75 dataList = [] 76 def __init__(self, parent): 77 78 self.owner = parent 79 wx.NotebookPage.__init__(self,parent.getNotebook(),-1) 80 parent.getNotebook().AddPage(self,'DM') 81 list = self.list = wx.ListCtrl(self,-1,style=wx.LC_REPORT|wx.LC_HRULES) 82 list.Bind(wx.EVT_KEY_DOWN, self.myKeyHandler) 83 list.Bind(wx.EVT_LIST_ITEM_ACTIVATED,self.OnDoubleClick) 84 85 list.InsertColumn(0," ",1,20) 86 list.InsertColumn(1,u"ユーザ") 87 list.InsertColumn(2,u"発言",0,200) 88 list.Bind(wx.EVT_LIST_ITEM_SELECTED,self.OnTwitListSelect) 89 90 def Reflesh(self): 91 t = TwDMHttpThread(self.owner.tw,self.RefleshList) 92 t.run() 69 93 """ 70 94 最近のfriendsの発言一覧を表示するページ … … 193 217 194 218 dataList.append(dataListElement) 219 220 # Listへの追加 195 221 i = 0 222 import re 223 user = self.owner.tw.user['user'] 196 224 for b in dataList: 197 225 j = 0 … … 200 228 list.SetStringItem(i,j,b[j]) 201 229 230 if re.match(user,b[1]): 231 self.list.SetItemTextColour(i,wx.Color(0,0,255)) 232 233 if re.search(user,b[2]): 234 self.list.SetItemTextColour(i,wx.Color(255,0,0)) 202 235 #import time 203 236 #time.sleep(1) … … 251 284 252 285 def Reflesh(self): 253 t = TwDMHttpThread(self.owner.tw,self.RefleshList) 254 t.run() 286 #t = TwDMHttpThread(self.owner.tw,self.RefleshList) 287 #t.run() 288 pass 255 289 256 290 class MainFrame(wx.Frame): … … 287 321 notebook = self.notebook = wx.Notebook(self,-1) 288 322 289 # Recent290 323 self.recentPage = RecentPage(self) 291 292 # Reply293 324 self.replyPage = ReplyPage(self) 294 295 # Direct296 325 self.directPage = DMPage(self) 297 326 … … 304 333 userIcon = self.userIcon = wx.StaticBitmap(self,-1,wx.NullBitmap,(0,0),(64,64)) 305 334 userName = self.userName = wx.StaticText(self,-1,"test") 306 twitTime = self.twitTime = wx.StaticText(self,-1," ")335 twitTime = self.twitTime = wx.StaticText(self,-1,"---") 307 336 308 337 messageSizer3 = wx.BoxSizer(wx.HORIZONTAL) 309 messageSizer3.Add(userName, 0)310 messageSizer3.Add(twitTime, 0)338 messageSizer3.Add(userName,1,wx.EXPAND) 339 messageSizer3.Add(twitTime,1,wx.EXPAND) 311 340 312 341 messageSizer2 = wx.BoxSizer(wx.VERTICAL) … … 341 370 self.timer2 = wx.Timer(self,self.TIMER_ID2) 342 371 wx.EVT_TIMER(self,self.TIMER_ID2,self.OnReplyUpdate) 343 self.timer2.Start( 90000)372 self.timer2.Start(300000) 344 373 345 374 self.timer3 = wx.Timer(self,self.TIMER_ID3) 346 375 wx.EVT_TIMER(self,self.TIMER_ID3,self.OnDMUpdate) 347 self.timer3.Start( 90000)376 self.timer3.Start(600000) 348 377 self.RefleshTw() 349 378 self.SetNowTime2StatusBar() … … 353 382 # コンボボックスの中身を空にする 354 383 combo = self.text 355 #name = XRCCTRL(self,'ID_NAME')356 384 self.tw.put(combo.GetValue()) 357 385 combo.SetValue("") … … 361 389 def RefleshTw(self): 362 390 self.recentPage.Reflesh() 363 #self.replyPage.Reflesh()364 #self.directPage.Reflesh()365 391 366 392 def OnUpdate(self, event): … … 416 442 if self.imageList.has_key(unicodeUrl): 417 443 418 self.userIcon.SetBitmap(self.imageList[unicodeUrl].ConvertToBitmap())444 #self.userIcon.SetBitmap(self.imageList[unicodeUrl].ConvertToBitmap()) 419 445 pass 420 446 else: -
lang/python/crochet/twitter3.py
r17088 r17940 163 163 In: なし(クラスメンバ変数でuser,pass) 164 164 """ 165 """def signIn(self):165 def singIn(self,s): 166 166 import cookielib 167 #opener.open("http://twitter.com/sessions","username=&s&password%s" % (self.user['user'],self.user["pass"])) 168 postdata = {} 169 postdata['session[username_or_email]'] = self.user['user'] 170 postdata['session[password]'] = self.user['pass'] 171 #postdata['source'] = s 172 en_post_data = urllib.urlencode(postdata) 173 167 174 cj = cookielib.CookieJar() 168 175 opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cj)) 176 177 # ログイン/cookie取得 178 r = opener.open("http://twitter.com/sessions",en_post_data) 179 print r.read() 169 180 return opener 170 def putHtml(self,s): 171 import cookielib 172 173 #cookie管理オブジェクト作る 174 try: 175 opener = signIn() 176 177 except: 178 pass 179 180 opener.open("http://twitter.com/sessions","username=&s&password%s" % (self.user['user'],self.user["pass"])) 181 postdata = {} 182 postdata['status'] = s.encode('utf-8') 183 #postdata['source'] = s 184 param = urllib.urlencode(postdata) 185 data = urllib2.urlopen("http://"+self.url+"/statuses/update",param) 186 print data.read()""" 187 def getUserPageWithScraping(self,user,num): 188 self.setAuthHandler() 189 s = "http://"+self.url+"/"+user+"?page="+str(num) 190 print "url+" +s 191 data = urllib2.urlopen(s) 192 urlstring = data.read() 181 def getWithScraping(self,user,num=1): 182 183 opener = self.singIn("") 184 #ログイン必要? 185 s = "http://"+self.url+"/home?page="+str(num) 186 print "url+" +s 187 data = opener.open(s) 188 urlstring = data.read() 189 print urlstring 193 190 if num == 1: 194 191 return self.scrapeTwit(urlstring,True) 195 192 else: 196 193 return self.scrapeTwit(urlstring,False) 194 195 def getUserPageWithScraping(self,user,num): 196 197 self.setAuthHandler() 198 s = "http://"+self.url+"/"+user+"?page="+str(num) 199 print "url+" +s 200 data = urllib2.urlopen(s) 201 urlstring = data.read() 202 if num == 1: 203 return self.scrapeTwitUserPage(urlstring,True) 204 else: 205 return self.scrapeTwitUserPage(urlstring,False) 197 206 198 207 # HTMLをスクレイプします。 199 def scrapeTwit (self,a,isFirst):208 def scrapeTwitUserPage(self,a,isFirst): 200 209 import re 201 210 # <span class="entry-title entry-content">~</span>(最短) … … 215 224 216 225 return retList 226 227 228 def scrapeTwit(self,str,flag): 229 import re 230 regTwit = re.compile("<tr class=\"hentry hentry_hover\"([\w\W]*?)</tr>",re.MULTILINE) 231 regImage = re.compile("<img [\w\W]*? src=\"([\w\W]*?)\"",re.MULTILINE) 232 regUserAndMessage = re.compile("<td class=\"content\">([\w\W]*?)</td>") 233 regUser = re.compile("<a href=.*?>(.*?)</a>") 234 regMessage = re.compile("<span class=\"entry-content\">([\w\W]*?)</span>") 235 regTime = re.compile("<abbr class=\"[\w\W]*?\" title=\"([\w\W]*?)\">") 236 str = str.replace("\t","") 237 str = str.replace("\n","") 238 a = regTwit.findall(str) 239 #print a 240 resultList = [] 241 for aa in a: 242 resultData = {} 243 244 b = regImage.search(aa) 245 resultData['image'] = b.group(1) 246 c = regUserAndMessage.search(aa).group(1) 247 d1 = regUser.search(c) 248 d2 = regMessage.search(c) 249 resultData['user'] = unicode(d1.group(1),'utf-8') 250 resultData['message'] = unicode(d2.group(1),'utf-8') 251 tm = regTime.search(aa) 252 resultData['time'] = tm.group(1) 253 result = [] 254 result.append(resultData['user']) 255 result.append(resultData['message']) 256 result.append(resultData['time']) 257 result.append(resultData['image']) 258 resultList.append(result) 259 260 return resultList
![(please configure the [header_logo] section in trac.ini)](/share/chrome/site/your_project_logo.png)