/cn-version/twi_service.py
Python | 1914 lines | 1714 code | 95 blank | 105 comment | 163 complexity | 9a2c2c61fc0987641f68e02adbfa537a MD5 | raw file
Possible License(s): MIT
Large files files are truncated, but you can click here to view the full file
- #!/usr/bin/env python
- # -*- coding: utf-8 -*-
- #
- # TwiTalker - Tweet it easy with your GTalk
- # Copyright 2009-2010 Kavin Gray
- # See LICENSE for details.
- #
- #
-
- import re
- import base64
- import httplib, urllib,urllib2
- from django.utils import simplejson
- from google.appengine.ext import webapp
- from google.appengine.api import xmpp
- from apptwitter import AppEngineTwitter
- from db_service import DBService
- import config
-
- DATABASE={1:"TwiDbA",2:"TwiDbB",3:"TwiDbC",4:"TwiDbD",5:"TwiDbE",6:"TwiDbF",7:"TwiDbG",8:"TwiDbH",9:"TwiDbI",10:"TwiDbJ"}
- UNBINDING_MSG="????????????????????? http://twitalker.appspot.com/ ?????????\
- ??????????????: *-v ?? ??? ?? ??*\n????????: http://twitalker.appspot.com/faq:\n\n"
-
-
- class TService():
-
- def __init__(self):
-
- self.oauth_key = config.OAUTH_KEY # app oauth_key
- self.oauth_secret = config.OAUTH_SECRET # app oauth_secret
- self.bot_acount= config.ACCOUNT # bot account
- self._results = None # result for the querying user
-
-
- def isCommand(self,msg):
- '''
- Check for Commands
- Command => Retrun True
- Not a command => Return False
- '''
- if(len(msg)<=1):
- if(msg=='-'):
- return True
- else:
- return False
- elif(msg.lower()=='help' or (msg[0]=='-' and msg[1]<>'-')):
- return True
- else:
- return False
-
-
- def parseCommand(self,msg,add):
- '''
- Check and execute command
- Account unbinded => Retrun UNBINDING_MSG
- Invalid command => Retrun ERROR Msg
- Command => Execute funciton and return the respon
- '''
- command=msg.lower()
- param=command.split(' ')
- db_ser=DBService(add)
-
- # check if the gtalk user have already binded to the account
- if(not db_ser.isUser()):
- # command to bind to a new account
- if(len(param)==3 and param[0]=='-v'):
- return self.setOauth(msg.split(' ')[1],msg.split(' ')[2],add)
-
- return UNBINDING_MSG
-
- self._results=db_ser.getQuery()
- # Proccess and execute the commands
- if(command=='-help' or command=='-h' or command=='help' or command=='-?'):
- return self.getHelp()
- elif(command=='-all'):
- return self.getCommands()
- elif(command=='-tool'):
- return self.getTool()
- elif(command=='-on'):
- return self.setMode('on')
- elif(command=='-self'):
- return self.setMode('self')
- elif(command=='-live'):
- return self.setMode('live')
- elif(command=='-off'):
- return self.setMode('off')
- elif(command=='-idon'):
- return self.setMode('idon')
- elif(command=='-idoff'):
- return self.setMode('idoff')
- elif(command=='-status' or command=='-st'):
- return self.getStatus()
- elif(command=='-@'):
- return self.getMention()
- elif(command=='-d'):
- return self.getDM()
- elif(command=='-r' or command=='-rt'):
- return self.getRT()
- elif(command=='-fav'):
- return self.getFav()
- elif(command=='-me' or command=='-tl'):
- return self.getTL()
- elif(command=='-home' or command=='-ho'):
- return self.getHomeTL()
- elif(command=='-del'):
- return self.delMsg()
- elif(command=='-mlist' or command=='-mt'):
- return self.getIList()
- elif(command=='-list' or command=='-lt'):
- return self.getList()
- elif(command=='-listed' or command=='-ld'):
- return self.getListed()
- elif(command=='-bind'):
- return self.getMultiUser()
- elif(command=='-remove'):
- return self.removeUser()
- elif(command=='-update'):
- return self.updateUser()
- # command which have a arg
- elif(len(param)==2):
- if(param[0]=='-rt'):
- if(param[1].isdigit()):
- return self.setRT(param[1])
- else:
- return self.getRT(param[1])
- elif(param[0]=='-r'):
- if(param[1].isdigit()):
- return self.setNewRT(param[1])
- else:
- return self.getRT(param[1])
- elif(param[0]=='-del'):
- return self.delMsg(param[1])
- elif(param[0]=='-status' or param[0]=='-st'):
- return self.getStatus(param[1])
- elif(param[0]=='-@'):
- return self.getMention(param[1])
- elif(param[0]=='-d'):
- return self.getDM(param[1])
- elif(param[0]=='-fav'):
- if(param[1].isdigit()):
- return self.setFav(param[1])
- else:
- return self.getFav(param[1])
- elif(param[0]=='-unfav'):
- return self.unFav(param[1])
- elif(param[0]=='-me'):
- return self.getTL(param[1])
- elif(param[0]=='-tl'):
- return self.getUserTL(param[1])
- elif(param[0]=='-home' or param[0]=='-ho'):
- return self.getHomeTL(param[1])
- elif(param[0]=='-follow' or param[0]=='-fo'):
- return self.setFollow(param[1])
- elif(param[0]=='-unfollow' or param[0]=='-uf' or param[0]=='-unfo'):
- return self.setUnFollow(param[1])
- elif(param[0]=='-if'):
- return self.isFollow(param[1])
- elif(param[0]=='-block'):
- return self.setBlock(param[1])
- elif(param[0]=='-msg'):
- return self.getMsg(param[1])
- elif(param[0]=='-time' or param[0]=='-t'):
- return self.setTime(param[1])
- elif(param[0]=='-mlist' or param[0]=='-mt'):
- return self.getIList(param[1])
- elif(param[0]=='-list' or param[0]=='-lt'):
- return self.getList(param[1])
- elif(param[0]=='-listed' or param[0]=='-ld'):
- return self.getListed(param[1])
- elif(param[0]=='-s'):
- return self.getSearch(param[1])
- elif(param[0]=='-switch' or param[0]=='-sw' ):
- return self.switchMultiUser(param[1])
- elif(param[0]=='-unbind'):
- return self.removeMultiUser(param[1])
- # command which have two arg
- elif(len(param)>=3):
- if(param[0]=='-@'):
- return self.setReply(param[1],msg)
- elif(param[0]=='-d'):
- return self.setDM(msg.split(' ')[1],msg)
- elif(param[0]=='-rt' or param[0]=='-r'):
- return self.setRT(param[1],msg)
- elif(param[0]=='-live'):
- return self.setMode('live',param[1],param[2])
- elif(param[0]=='-tl'):
- return self.getUserTL(param[1],param[2])
- elif(param[0]=='-s'):
- p = re.compile("p\d+$")
- if(p.match(param[-1].encode('utf-8'))):
- return self.getSearch(' '.join(param[1:-1]),param[-1])
- else:
- return self.getSearch(' '.join(param[1:]))
- elif(param[0]=='-list'):
- if(len(param)==3):
- return self.getListTL(param[1],param[2])
- else:
- return self.getListTL(param[1],param[2],param[3])
- elif(param[0]=='-v'):
- return self.updateOauth(msg.split(' ')[1],msg.split(' ')[2])
- elif(param[0]=='-bind'):
- return self.addMultiUser(msg.split(' ')[1],msg.split(' ')[2])
-
- return '????????????????????????????-help????'
-
-
-
-
-
- # =======================================================================
- #
- # Methods to proccess and execute the commands
- #
- # =======================================================================
-
-
-
-
- def getHelp(self):
- '''
- Command: -help/-h
- Return help lists
- '''
- return '''????TwiTalker V2.0.3?\
- ????????????? http://twitalker.appspot.com/ ?????\
- ???TwiTalker??????????-all??????\n\n\
- ? *???????140????????*\n\
- ? ?????-v ??? ??\n\
- ? ????????(?????????)?-on\n\
- ? ????????(???@??????)?-self\n\
- ? ????????(??????)?-off\n\
- ? ????????(????????)?-live\n\
- ? ????????-d ??? ????\n\
- ? *?????@??? ??*\n\
- ? ?????-follow ??? ? -fo ???\n\
- ? ??????: -unfollow ??? ? -uf ???\n\
- ? ??????ID???-idon\n\
- ? ??????ID???-idoff\n\
- ? ???????-bind ??? ??\n\
- ? *???????-all*\n\n\
- ???????????Follow????Twi_Talker( https://twitter.com/twi_talker )??????? ^ ^'''
-
-
- def getCommands(self):
- '''
- Command: -all
- List all the commands of twitalker
- '''
- return '''\
- TwiTalker V2.0.3?????\n\n\
- ? *???????140????????*\n\
- ? ?????-v ??? ??\n\
- ? ?????-remove\n\
- ? ??TwiTalker???-status ? -st\n\
- ? ?????-tool\n\n\
- ? ????????(?????????)?-on\n\
- ? ????????(???@??????)?-self\n\
- ? ????????(??????)?-off\n\
- ? *????????(????????)?-live*\n\
- ? *???????????-live ???????? ??????ID?* _(?:-live kavin_gray test)_\n\
- ? ???????????-time ??? _(???1?5???)_\n\n\
- ? ?????-fav ?? _(??????????????P??-fav p2)_\n\
- ? ?????-d ?? _(??????????????P??-d p2)_\n\
- ? @????-@ ?? _(??????????????P??-@ p2)_\n\
- ? ??RT???-rt ?? _(??????????????P??-rt p2)_\n\
- ? ????????-me ?? _(??????????????P??-me p2)_\n\
- ? ???????-home ?? ? -ho ?? _(??????????????P??-ho p2)_\n\
- ? ???????-tl ??? ?? _(??????????????P??-tl twi_talker p2)_\n\
- ? ?????-s ??? ?? _(??????????????P??-s twitalker p1)_\n\
- ? ???????-list ????? ??????ID ?? ? -lt ????? ??????ID ?? _(??????????????P)_\n\n\
- ? ???????-mlist next/pre ? -mt next/pre _(next?pre??????????next?pre?????????)_\n\
- ? ???????-list next/pre ? -lt next/pre _(next?pre??????????next?pre?????????)_\n\
- ? ???????-listed next/pre ? -ld next/pre _(next?pre??????????next?pre?????????)_\n\n\
- ? *?????@??? ??*\n\
- ? ???????-@ ??id? ????\n\
- ? ???????-msg ??id?\n\
- ? ????????????-del\n\
- ? ????????-del ??id?\n\
- ? ????????-d ??? ????\n\
- ? ?????-fav ??id?\n\
- ? ???????-unfav ??id?\n\
- ? ??RT?-rt ??id? ????(???????)\n\
- ? ??RT?-r ??id?\n\n\
- ? ???????-status ??? ? -st ???\n\
- ? ?????-follow ??? ? -fo ???\n\
- ? ??????: -unfollow ??? ? -uf ???\n\
- ? ????: -block ???\n\
- ? ???????: -if ??\n\n\
- ? ??????ID???-idon\n\
- ? ??????ID???-idoff\n\n\
- ? ????????: -bind\n\
- ? ????????-bind ??? ?? \n\
- ? ?????????-unbind ???\n\
- ? ?????-switch ??? ? -sw ???\n\n'''
-
-
- def getTool(self):
- '''
- Command: -tool
- List all the commands of twitalker
- '''
- return '''\
- TwiTalker???\n\n\
- ? TwiTalker FAQ?http://twitalker.appspot.com/faq \n\n\
- ? ??????http://longurl.org/expand\n\n\
- ? ?????http://www.mobypicture.com\n\n'''
-
-
-
- def setMode(self,mode,name='',list='0'):
- '''
- Command: -on/-off/-self/-live/-live name list/-idon/-idoff
- Set the mode for receiving tweets
- '''
- db_ser = DBService()
-
- for user in self._results:
-
- if(mode==user.mode and name==''):
- return '?????????'+mode+'???\n\n'
-
- if(mode=='on'):
- db_ser.setMode(user,'on')
- return '???????????????????????????:)\n\n'
-
- elif(mode=='self'):
- db_ser.setMode(user,'self')
- return '?????????????????????@??????:)\n\n'
-
- elif(mode=='live'):
- # -live
- if(list=='0'):
- if(user.list=='null' or user.list==''):
- return '????????????? *-live ???????? ??????ID* ??????\n\n'
- else:
- db_ser.setMode(user,'live')
- return '?????Live???????????'+user.list.replace('/lists/',':').encode('utf-8')+'???:)\n\n'
- # -live name list
- else:
- actoken=user.actoken
- actokense=user.actokense
- tww = AppEngineTwitter()
- tww.set_oauth(self.oauth_key,
- self.oauth_secret,
- actoken,
- actokense)
- try:
- statecode=tww.getListInfo(name,list)
- except:
- statecode=400
- if(statecode==200):
- live=name+'/lists/'+str(list)
- db_ser.setMode(user,'live',live)
- return '?????Live???????????'+live.replace('/lists/',':').encode('utf-8')+'???:)\n\n'
- else:
- return '?????????????????????????????????????????\n\n'
-
- elif(mode=='off'):
- db_ser.setMode(user,'off')
- return '??????????????????????:)\n\n'
-
- elif(mode=='idon'):
- db_ser.setMode(user,'idon')
- return '?????????ID?????:)\n\n'
-
- elif(mode=='idoff'):
- db_ser.setMode(user,'idoff')
- return '?????????ID?????:)\n\n'
-
-
-
- def getStatus(self,name=''):
- '''
- Command: -status/-st/-status name/-st name
- Return the status of the user
- '''
- for user in self._results:
-
- actoken=user.actoken
- actokense=user.actokense
- tww = AppEngineTwitter()
- tww.set_oauth(self.oauth_key,
- self.oauth_secret,
- actoken,
- actokense)
-
- retry=2 # set the retry times
- statecode=400 # init status code
-
- for times in range(retry):
- try:
- if(name==''):
- statecode=tww.getUserInfo(user.name.encode("utf-8"))
- else:
- statecode=tww.getUserInfo(name.encode("utf-8"))
- if(statecode==200):
- break
- except:
- pass
-
- if(statecode==404):
- return '?????????????????????????\n\n'
-
- elif(statecode<>200):
- return '?????????????ERROR:'+str(statecode)+'\n\n'
-
- # parsing info for users
- content = simplejson.loads(tww.getContent())
- respon="??????\n\n"
- respon=respon+"???? "+content['screen_name'].encode("utf-8")+"\n\n"
- respon=respon+"??? "+content['name'].encode("utf-8")+"\n\n"
- respon=respon+"???: "+content['location'].encode("utf-8")+"\n\n"
- respon=respon+"???: "+str(content['statuses_count'])+"\n\n"
- respon=respon+"???: "+str(content['friends_count'])+"\n\n"
- respon=respon+"???: "+str(content['followers_count'])+"\n\n"
- respon=respon+"????: "+content['description'].encode("utf-8")+"\n\n"
- respon=respon+"????: "+content['status']['text'].encode("utf-8")+"\n\n"
-
- # -st/-status.show more info
- if(name==''):
- respon=respon+"??????: "
- if(user.mode=='self'):
- respon=respon+"-self ??????????"
- elif(user.mode=='on'):
- respon=respon+"-on ??????????"
- elif(user.mode=='off'):
- respon=respon+"-off ??????????"
- else:
- respon=respon+"-live ?Live?????????:"+user.list.replace('/lists/',':').encode("utf-8")+")"
- respon=respon+"\n\n????????: "+str(user.settime)+"??"
- respon=respon+"\n\n??ID??: "
- if(user.rt==True):
- respon=respon+"????"
- else:
- respon=respon+"????"
-
- respon=respon+"\n\n"
-
- return respon
-
-
-
- def getMention(self,page='p0'):
- '''
- Command: -@/-@ page
- Return tweets from mentions timeline.
- '''
- for user in self._results:
-
- actoken=user.actoken
- actokense=user.actokense
- tww = AppEngineTwitter()
- tww.set_oauth(self.oauth_key,
- self.oauth_secret,
- actoken,
- actokense)
-
- pg=self._parsePage(page)
- if(pg==-1):
- return '????????????????p??-@ p1????????\n\n'
- if(pg==-2):
- return '?????????????????????\n\n'
-
- retry=2 # set the retry times
- statecode=400 # init status code
- for times in range(retry):
- try:
- statecode=tww.mentions(0,pg)
- except:
- pass
- if(statecode==200):
- break
-
- if(statecode<>200):
- return '?????????????ERROR:'+str(statecode)+'\n\n'
-
- contents = simplejson.loads(tww.getContent())
- respon=''
- respon=self._formatMsg(contents,'ment',user) # get tweets
- if(respon<>''):
- if(pg==0):
- respon='???????? \n\n'+respon
- else:
- respon='???? (Page '+str(pg)+')? \n\n'+respon
- else:
- respon='Oops..???????\n\n'
-
- return respon
-
-
-
- def getDM(self,page='p0'):
- '''
- Command: -d/-d page
- Return the direct messages.
- '''
- for user in self._results:
-
- actoken=user.actoken
- actokense=user.actokense
- tww = AppEngineTwitter()
- tww.set_oauth(self.oauth_key,
- self.oauth_secret,
- actoken,
- actokense)
-
- pg=self._parsePage(page)
- if(pg==-1):
- return '????????????????p??-d p1????????\n\n'
- if(pg==-2):
- return '?????????????????????\n\n'
-
- retry=2 # set the retry times
- statecode=400 # init status code
- for times in range(retry):
- try:
- statecode=tww.getDMessage(0,pg)
- except:
- pass
- if(statecode==200):
- break
-
- if(statecode<>200):
- return '?????????????ERROR:'+str(statecode)+'\n\n'
-
- contents = simplejson.loads(tww.getContent())
- respon=''
- respon=self._formatMsg(contents,'dm',user)
- if(respon<>''):
- if(pg==0):
- respon='???????? \n\n'+respon
- else:
- respon='????? (Page '+str(pg)+')? \n\n'+respon
- else:
- respon='Oop..???????\n\n'
-
- return respon
-
-
-
-
- def getFav(self,page='p0'):
- '''
- Command: -fav/-fav page
- Return the timeline of ur favorite tweets
- '''
- for user in self._results:
-
- actoken=user.actoken
- actokense=user.actokense
- tww = AppEngineTwitter()
- tww.set_oauth(self.oauth_key,
- self.oauth_secret,
- actoken,
- actokense)
-
- pg=self._parsePage(page)
- if(pg==-1):
- return '????????????????p??-fav p1????????\n\n'
- if(pg==-2):
- return '?????????????????????\n\n'
-
- retry=2 # set the retry times
- statecode=400 # init status code
- for times in range(retry):
- try:
- statecode=tww.getFav(pg)
- except:
- pass
- if(statecode==200):
- break
-
- if(statecode<>200):
- return '?????????????ERROR:'+str(statecode)+'\n\n'
-
- contents = simplejson.loads(tww.getContent())
- respon=''
- respon=self._formatMsg(contents,'fav',user)
- if(respon<>''):
- if(pg==0):
- respon='????????? \n\n'+respon
- else:
- respon='?????? (Page '+str(pg)+')? \n\n'+respon
- else:
- respon='Oop..??????\n\n'
-
- return respon
-
-
-
- def getRT(self,page='p0'):
- '''
- Command: -r/-rt
- Return the timeline of ur friends' retweets
- '''
- for user in self._results:
-
- actoken=user.actoken
- actokense=user.actokense
- tww = AppEngineTwitter()
- tww.set_oauth(self.oauth_key,
- self.oauth_secret,
- actoken,
- actokense)
-
- pg=self._parsePage(page)
- if(pg==-1):
- return '????????????????p??????RT\n\n'
- if(pg==-2):
- return '?????????????????????\n\n'
-
- retry=2 # set the retry times
- statecode=400 # init status code
- for times in range(retry):
- try:
- statecode=tww.getRt2Me(pg)
- except:
- pass
- if(statecode==200):
- break
-
- if(statecode<>200):
- return '?????????????ERROR:'+str(statecode)+'\n\n'
-
- contents = simplejson.loads(tww.getContent())
- respon=''
- respon=self._formatMsg(contents,'r',user)
- if(respon<>''):
- if(pg==0):
- respon='?????RT??? \n\n'+respon
- else:
- respon='???RT?? (Page '+str(pg)+')? \n\n'+respon
- else:
- respon='Oop.?????RT??\n\n'
-
- return respon
-
-
-
-
- def getTL(self,page='p0'):
- '''
- Command: -me/-me page
- Return the user timeline
- '''
- for user in self._results:
-
- actoken=user.actoken
- actokense=user.actokense
- tww = AppEngineTwitter()
- tww.set_oauth(self.oauth_key,
- self.oauth_secret,
- actoken,
- actokense)
-
- pg=self._parsePage(page)
- if(pg==-1):
- return '????????????????p??-me p1????????\n\n'
- if(pg==-2):
- return '?????????????????????\n\n'
-
- retry=2 # set the retry times
- statecode=400 # init status code
- for times in range(retry):
- try:
- statecode=tww.user_timeline(pg)
- except:
- pass
- if(statecode==200):
- break
-
- if(statecode<>200):
- return '?????????????ERROR:'+str(statecode)+'\n\n'
-
- contents = simplejson.loads(tww.getContent())
- respon=''
- respon=self._formatMsg(contents,'tl',user)
- if(respon<>''):
- if(pg==0):
- respon='????????? \n\n'+respon
- else:
- respon='?????? (Page '+str(pg)+')? \n\n'+respon
- else:
- respon='Oop...??????\n\n'
-
- return respon
-
-
-
-
-
- def getHomeTL(self,page='p0'):
- '''
- Command: -home/-home page/-ho/-ho page
- Return the user timeline
- '''
- for user in self._results:
-
- actoken=user.actoken
- actokense=user.actokense
- tww = AppEngineTwitter()
- tww.set_oauth(self.oauth_key,
- self.oauth_secret,
- actoken,
- actokense)
-
- pg=self._parsePage(page)
- if(pg==-1):
- return '????????????????p??-home p1????????\n\n'
- if(pg==-2):
- return '?????????????????????\n\n'
-
- retry=2 # set the retry times
- statecode=400 # init status code
- for times in range(retry):
- try:
- statecode=tww.home_timeline(0,pg)
- except:
- pass
- if(statecode==200):
- break
-
- if(statecode<>200):
- return '?????????????ERROR:'+str(statecode)+'\n\n'
-
- contents = simplejson.loads(tww.getContent())
- respon=''
- respon=self._formatMsg(contents,'htl',user)
- if(respon<>''):
- if(pg==0):
- respon='??????? \n\n'+respon
- else:
- respon='???? (Page '+str(pg)+')? \n\n'+respon
- else:
- respon='Oop...??????\n\n'
-
- return respon
-
-
-
-
- def getUserTL(self,name,page='p0'):
- '''
- Command: -tl username/-tl username page
- Return the user timeline
- '''
- for user in self._results:
-
- actoken=user.actoken
- actokense=user.actokense
- tww = AppEngineTwitter()
- tww.set_oauth(self.oauth_key,
- self.oauth_secret,
- actoken,
- actokense)
-
- pg=self._parsePage(page)
- if(pg==-1):
- return '????????????????p??-tl twi_talker p1????????\n\n'
- if(pg==-2):
- return '?????????????????????\n\n'
-
- retry=2 # set the retry times
- statecode=400 # init status code
- for times in range(retry):
- try:
- statecode=tww.user_timeline(pg,name)
- except:
- pass
- if(statecode==200):
- break
-
- if(statecode<>200):
- return '?????????????ERROR:'+str(statecode)+'\n\n'
-
- contents = simplejson.loads(tww.getContent())
- respon=''
- respon=self._formatMsg(contents,'tl',user)
- if(respon<>''):
- if(pg==0):
- respon='??????? \n\n'+respon
- else:
- respon='???? (Page '+str(pg)+')? \n\n'+respon
- else:
- respon='Oop...??????\n\n'
-
- return respon
-
-
-
-
- def getSearch(self,word='',page='p0'):
- '''
- Command: -s keyword/-s keyword page
- Return the timeline
- '''
- for user in self._results:
-
- actoken=user.actoken
- actokense=user.actokense
- tww = AppEngineTwitter()
- tww.set_oauth(self.oauth_key,
- self.oauth_secret,
- actoken,
- actokense)
-
- pg=self._parsePage(page)
- if(pg==-1):
- return '????????????????p??-s twitalker p1????????\n\n'
- if(pg==-2):
- return '?????????????????????\n\n'
-
- retry=2 # set the retry times
- statecode=100 # init status code
- for times in range(retry):
- try:
- statecode=tww.searchTweet(word,pg)
- except:
- pass
- if(statecode==200):
- break
-
- if(statecode<>200):
- return '?????????????ERROR:'+str(statecode)+'\n\n'
-
- contents = simplejson.loads(tww.getContent())
- respon=''
- respon=self._formatMsg(contents['results'],'s',user)
- if(respon<>''):
- if(pg==0):
- respon='????? \n\n'+respon
- else:
- respon='???? (Page '+str(pg)+')? \n\n'+respon
- else:
- respon='Oop...??????\n\n'
-
- return respon
-
-
-
- def getListTL(self,name,list,page='p0'):
- '''
- Command: -list name list /-list name list page
- Return the list timeline
- '''
- for user in self._results:
-
- actoken=user.actoken
- actokense=user.actokense
- tww = AppEngineTwitter()
- tww.set_oauth(self.oauth_key,
- self.oauth_secret,
- actoken,
- actokense)
-
- pg=self._parsePage(page)
- if(pg==-1):
- return '????????????????p??-list kavin_gray test p1????????\n\n'
- if(pg==-2):
- return '?????????????????????\n\n'
-
- url=name+'/lists/'+list
- retry=2 # set the retry times
- statecode=400 # init status code
- for times in range(retry):
- try:
- statecode=tww.list_timeline(url,0,pg)
- except:
- pass
- if(statecode==200):
- break
-
- if(statecode<>200):
- return '???????????????????????????\n\n'
-
- contents = simplejson.loads(tww.getContent())
- respon=''
- respon=self._formatMsg(contents,'lt',user)
- if(respon<>''):
- if(pg==0):
- respon='??????? \n\n'+respon
- else:
- respon='???? (Page '+str(pg)+')? \n\n'+respon
- else:
- respon='Oop...??????\n\n'
-
- return respon
-
-
-
- def getIList(self,page=''):
- '''
- Command: -mlist/-mt
- Return the list The user've created
- '''
- db_ser = DBService()
- for user in self._results:
-
- actoken=user.actoken
- actokense=user.actokense
- tww = AppEngineTwitter()
- tww.set_oauth(self.oauth_key,
- self.oauth_secret,
- actoken,
- actokense)
-
- # get listcursor
- if(page.lower()=='next'):
- cr=user.mlistcursor[1].encode('utf-8')
- elif(page.lower()=='pre'):
- cr=user.mlistcursor[0].encode('utf-8')
- elif(page==''):
- cr='-1'
- else:
- return '?????-mlist?????next?pre????????????????\n\n'
-
- retry=2 # set the retry times
- statecode=400 # init status code
- for times in range(retry):
- try:
- statecode=tww.getLists(user.name,cr)
- except:
- pass
- if(statecode==200):
- break
-
- if(statecode<>200):
- return '?????????????ERROR:'+str(statecode)+'\n\n'
-
- contents = simplejson.loads(tww.getContent())
- respon=''
- for content in reversed(contents['lists']):
- respon=respon+'*'+content['user']['screen_name'].encode('utf8')+' '
- respon=respon+content['slug'].encode('utf8')+'* : '
- respon=respon+'???: '+content['slug'].encode('utf8')+' '
- respon=respon+'ID: '+str(content['id'])+' '
- respon=respon+'???:'+str(content['member_count'])+' '
- respon=respon+'??:'+content['description'].encode('utf8')+'\n\n'
-
- if(respon<>''):
- respon=respon.replace("<","<")
- respon=respon.replace(">",">")
-
- respon='??????? \n\n'+respon
- # setting the listcursor
- db_ser.setMListcursor(user,contents['previous_cursor_str'],contents['next_cursor_str'])
-
- else:
- respon='Oop.???????\n\n'
-
- return respon
-
-
- def getList(self,page=''):
- '''
- Command: -list/-lt
- Return the list The user've followed
- '''
- db_ser = DBService()
- for user in self._results:
-
- actoken=user.actoken
- actokense=user.actokense
- tww = AppEngineTwitter()
- tww.set_oauth(self.oauth_key,
- self.oauth_secret,
- actoken,
- actokense)
-
- # get listcursor
- if(page.lower()=='next'):
- cr=user.listcursor[1].encode('utf-8')
- elif(page.lower()=='pre'):
- cr=user.listcursor[0].encode('utf-8')
- elif(page==''):
- cr='-1'
- else:
- return '?????-list?????next?pre????????????????\n\n'
-
- retry=2 # set the retry times
- statecode=400 # init status code
- for times in range(retry):
- try:
- statecode=tww.getSubscriptions(user.name,cr)
- except:
- pass
- if(statecode==200):
- break
-
- if(statecode<>200):
- return '?????????????ERROR:'+str(statecode)+'\n\n'
-
- contents = simplejson.loads(tww.getContent())
- respon=''
-
- for content in reversed(contents['lists']):
- respon=respon+'*'+content['user']['screen_name'].encode('utf8')+' '
- respon=respon+content['slug'].encode('utf8')+'* : '
- respon=respon+'???: '+content['slug'].encode('utf8')+' '
- respon=respon+'ID: '+str(content['id'])+' '
- respon=respon+'???:'+content['user']['screen_name'].encode('utf8')+' '
- respon=respon+'???:'+str(content['member_count'])+' '
- respon=respon+'??:'+content['description'].encode('utf8')+'\n\n'
-
- if(respon<>''):
- respon=respon.replace("<","<")
- respon=respon.replace(">",">")
- respon='??????? \n\n'+respon
- # setting the listcursor
- db_ser.setListcursor(user,contents['previous_cursor_str'],contents['next_cursor_str'])
- else:
- respon='Oop.????????\n\n'
-
- return respon
-
-
-
- def getListed(self,page=''):
- '''
- Command: -listed/-ld
- Return the lists that following the user
- '''
- db_ser = DBService()
- for user in self._results:
-
- actoken=user.actoken
- actokense=user.actokense
- tww = AppEngineTwitter()
- tww.set_oauth(self.oauth_key,
- self.oauth_secret,
- actoken,
- actokense)
-
- # get listcursor
- if(page.lower()=='next'):
- cr=user.listedcursor[1].encode('utf-8')
- elif(page.lower()=='pre'):
- cr=user.listedcursor[0].encode('utf-8')
- elif(page==''):
- cr='-1'
- else:
- return '?????-listed?????next?pre????????????????\n\n'
-
- retry=2 # set the retry times
- statecode=400 # init status code
- for times in range(retry):
- try:
- statecode=tww.getMemberships(user.name,cr)
- except:
- pass
- if(statecode==200):
- break
-
- if(statecode<>200):
- return '?????????????ERROR:'+str(statecode)+'\n\n'
-
- contents = simplejson.loads(tww.getContent())
- respon=''
-
- for content in reversed(contents['lists']):
- respon=respon+'*'+content['user']['screen_name'].encode('utf8')+' '
- respon=respon+content['slug'].encode('utf8')+'* : '
- respon=respon+'???: '+content['slug'].encode('utf8')+' '
- respon=respon+'ID: '+str(content['id'])+' '
- respon=respon+'???:'+content['user']['screen_name'].encode('utf8')+' '
- respon=respon+'???:'+str(content['member_count'])+' '
- respon=respon+'??:'+content['description'].encode('utf8')+'\n\n'
-
- if(respon<>''):
- respon=respon.replace("<","<")
- respon=respon.replace(">",">")
- respon='??????? \n\n'+respon
- # setting the listcursor
- db_ser.setListedcursor(user,contents['previous_cursor_str'],contents['next_cursor_str'])
- else:
- respon='Oop.????????\n\n'
-
- return respon
-
-
-
-
- def getMsg(self,msgid):
- '''
- Command: -msg msgid
- Return the info of the tweet
- '''
- for user in self._results:
-
- actoken=user.actoken
- actokense=user.actokense
- tww = AppEngineTwitter()
- tww.set_oauth(self.oauth_key,
- self.oauth_secret,
- actoken,
- actokense)
-
- retry=2 # set the retry times
- statecode=400 # init status code
- for times in range(retry):
- try:
- statecode=tww.rtMsg(msgid)
- except:
- pass
- if(statecode==200):
- break
-
- if(statecode<>200):
- return '????????????id???????????? ERROR:'+str(statecode)+'\n\n'
-
- content = simplejson.loads(tww.getContent())
- rex='<a href=.*?>(.*)</a>'
- respon='??????: *'+content['user']['screen_name'].encode('utf8')+': '
- respon=respon+content['text'].encode('utf8')+'*\n'
-
- # Attach info to the target tweet
- respon=respon+self._attachID(content)
- respon=respon+'\n\n'
-
- # check for in reply status
- in_reply=content['in_reply_to_status_id']
- count=0
- statecode=400
- # get the thread(lateset three tweets) for the tweet
- while(count<>3 and str(in_reply).lower()<>'none'):
- count+=1
- try:
- statecode=tww.rtMsg(in_reply)
- except:
- pass
- if(statecode==200):
- reply_content = simplejson.loads(tww.getContent())
- respon=respon+'????: '+reply_content['user']['screen_name'].encode('utf8')+': '
- respon=respon+reply_content['text'].encode('utf8')
- # Attach info to the tweet
- respon=respon+'\n'+self._attachID(reply_content)
- respon=respon+'\n\n'
- in_reply=reply_content['in_reply_to_status_id']
- else:
- break
-
- return respon
-
-
-
- def delMsg(self,msgid='0'):
- '''
- Command: -del/-del msgid
- Delete the tweet
- '''
- for user in self._results:
-
- actoken=user.actoken
- actokense=user.actokense
- tww = AppEngineTwitter()
- tww.set_oauth(self.oauth_key,
- self.oauth_secret,
- actoken,
- actokense)
-
- retry=2 # set the retry times
- statecode=400 # init status code
- for times in range(retry):
- try:
- if(msgid=='0'):
- # -del command,get the lateset tweet's id
- statecode=tww.user_timeline()
- else:
- # -del msgid
- statecode=tww.delMsg(msgid)
- except:
- pass
- if(statecode==200):
- break
-
- if(statecode==403):
- return '?????????????????????????\n\n'
- elif(statecode<>200):
- return '?????????????ERROR:'+str(statecode)+'\n\n'
-
- if(msgid<>'0'):
- return '???????:)\n\n'
- else:
- contents = simplejson.loads(tww.getContent())
- statecode=400 # init status code
- for times in range(retry):
- try:
- statecode=tww.delMsg(str(contents[0]['id']))
- except:
- pass
- if(statecode==200):
- return '???????:)\n\n'
-
- return '?????????????ERROR:'+str(statecode)+'\n\n'
-
-
-
- def setFollow(self,name):
- '''
- Command: -fo name/-follow name
- Follow other user
- '''
- for user in self._results:
-
- actoken=user.actoken
- actokense=user.actokense
- tww = AppEngineTwitter()
- tww.set_oauth(self.oauth_key,
- self.oauth_secret,
- actoken,
- actokense)
-
- retry=2 # set the retry times
- statecode=400 # init status code
- for times in range(retry):
- try:
- statecode=tww.follow(name)
- except:
- pass
- if(statecode==200):
- break
-
- if(statecode<>200):
- respon='?????????????????????????????????????\n\n'
- else:
- respon='????,???????'+name.encode('utf8')+' :)\n\n'
-
- return respon
-
-
- def setUnFollow(self,name):
- '''
- Command: -uf name/-unfollow name
- Unfollow other user
- '''
- for user in self._results:
-
- actoken=user.actoken
- actokense=user.actokense
- tww = AppEngineTwitter()
- tww.set_oauth(self.oauth_key,
- self.oauth_secret,
- actoken,
- actokense)
-
- retry=2 # set the retry times
- statecode=400 # init status code
- for times in range(retry):
- try:
- statecode=tww.unfollow(name)
- except:
- pass
- if(statecode==200):
- break
-
- if(statecode<>200):
- respon='???????????????????????????????????????\n\n'
- else:
- respon='????,?????????'+name.encode('utf8')+' :)\n\n'
-
- return respon
-
-
-
- def isFollow(self,name):
- '''
- Command: -if name
- Check if other user is following u
- '''
- for user in self._results:
-
- actoken=user.actoken
- actokense=user.actokense
- tww = AppEngineTwitter()
- tww.set_oauth(self.oauth_key,
- self.oauth_secret,
- actoken,
- actokense)
-
- retry=2 # set the retry times
- statecode=400 # init status code
- for times in range(retry):
- try:
- if(tww.is_following(name)==True):
- statecode=200
- respon=name.encode('utf8')+' ??????\n\n'
- break
- elif(tww.is_following(name)==False):
- statecode=200
- respon=name.encode('utf8')+' ???????\n\n'
- break
- except:
- pass
-
- if(statecode<>200):
- respon='??????????????????????????????\n\n'
-
- return respon
-
-
-
- def setBlock(self,name):
- '''
- Command: -block name
- Block user
- '''
- for user in self._results:
-
- actoken=user.actoken
- actokense=user.actokense
- tww = AppEngineTwitter()
- tww.set_oauth(self.oauth_key,
- self.oauth_secret,
- actoken,
- actokense)
-
- retry=2 # set the retry times
- statecode=400 # init status code
- for times in range(retry):
- try:
- statecode=tww.block(name)
- except:
- pass
- if(statecode==200):
- break
-
- if(statecode==404):
- respon='????????? \n\n'
- elif(statecode<>200):
- respon='?????????????ERROR:%s \n\n'%(str(statecode))
- else:
- respon='????,??????'+name.encode('utf8')+'????? \n\n'
-
- return respon
-
-
-
- def setFav(self,msgid):
- '''
- Command: -fav msgid
- Set tweet to ur favorite
- '''
- for user in self._results:
-
- actoken=user.actoken
- actokense=user.actokense
- tww = AppEngineTwitter()
- tww.set_oauth(self.oauth_key,
- self.oauth_secret,
- actoken,
- actokense)
-
- retry=2 # set the retry times
- statecode=400 # init status code
- for times in range(retry):
- try:
- statecode=tww.addFav(msgid)
- except:
- pass
- if(statecode==200):
- break
-
- if(statecode<>200):
- return '????????????????????id???????????\n\n'
-
- return '???????:)\n\n'
-
-
-
- def unFav(self,msgid):
- '''
- Command: -unfav msgid
- delete ur favorite tweets
- '''
- for user in self._results:
-
- actoken=user.actoken
- actokense=user.actokense
- tww = AppEngineTwitter()
- tww.set_oauth(self.oauth_key,
- self.oauth_secret,
- actoken,
- actokense)
-
- retry=2 # set the retry times
- statecode=400 # init status code
- for times in range(retry):
- try:
- statecode=tww.unFav(msgid)
- except:
- pass
- if(statecode==200):
- break
-
- if(statecode<>200):
- return '????????????????????id???????????\n\n'
-
- return '???????:)\n\n'
-
-
-
- def setReply(self,msgid,tweet):
- '''
- Command: -@ msgid tweet
- Reply to a particular tweet
- '''
- for user in self._results:
-
- actoken=user.actoken
- actokense=user.actokense
- tww = AppEngineTwitter()
- tww.set_oauth(self.oauth_key,
- self.oauth_secret,
- actoken,
- actokense)
-
- rex='.*?'+msgid+' (.*)'
- text=re.findall(rex,tweet)
- if(text==[]):
- return '?????????????????????\n\n'
-
- length=len(unicode(text[0].encode('utf8'),"utf8"))
- if(length>140):
- return '????????????'+str(length)+'?????140?????\n\n'
-
- retry=3 # set the retry times
- statecode=400 # init status code
- for times in range(retry):
- try:
- statecode=tww.rtMsg(msgid)
- except:
- pass
- if(statecode==200):
- break
- …
Large files files are truncated, but you can click here to view the full file