support '.twitter #hashtag' searching. closes #3
This commit is contained in:
parent
e9f3beb86f
commit
692fbde76c
|
@ -4,6 +4,7 @@ retrieves most recent tweets
|
||||||
"""
|
"""
|
||||||
|
|
||||||
import re
|
import re
|
||||||
|
import random
|
||||||
import urllib2
|
import urllib2
|
||||||
from lxml import etree
|
from lxml import etree
|
||||||
from time import strptime, strftime
|
from time import strptime, strftime
|
||||||
|
@ -31,23 +32,26 @@ def twitter(inp):
|
||||||
return twitter.__doc__
|
return twitter.__doc__
|
||||||
|
|
||||||
|
|
||||||
|
url = 'http://twitter.com'
|
||||||
getting_nth = False
|
getting_nth = False
|
||||||
getting_id = False
|
getting_id = False
|
||||||
if re.match('^\d+$', inp):
|
searching_hashtag = False
|
||||||
|
if re.match(r'^\d+$', inp):
|
||||||
getting_id = True
|
getting_id = True
|
||||||
url = 'statuses/show/%s.xml' % inp
|
url += '/statuses/show/%s.xml' % inp
|
||||||
elif re.match('^\w{,15}$', inp):
|
elif re.match(r'^\w{1,15}$', inp):
|
||||||
url = 'statuses/user_timeline/%s.xml?count=1' % inp
|
url += '/statuses/user_timeline/%s.xml?count=1' % inp
|
||||||
elif re.match('^\w{,15}\s+\d+$', inp):
|
elif re.match(r'^\w{1,15}\s+\d+$', inp):
|
||||||
getting_nth = True
|
getting_nth = True
|
||||||
name, num = inp.split()
|
name, num = inp.split()
|
||||||
if int(num) > 3200:
|
if int(num) > 3200:
|
||||||
return 'error: only supports up to the 3200th tweet'
|
return 'error: only supports up to the 3200th tweet'
|
||||||
url = 'statuses/user_timeline/%s.xml?count=1&page=%s' % (name, num)
|
url += '/statuses/user_timeline/%s.xml?count=1&page=%s' % (name, num)
|
||||||
|
elif re.match(r'^#\w{1,15}$', inp):
|
||||||
|
url = 'http://search.twitter.com/search.atom?q=%23' + inp[1:]
|
||||||
|
searching_hashtag = True
|
||||||
else:
|
else:
|
||||||
return 'error: invalid username'
|
return 'error: invalid username'
|
||||||
|
|
||||||
url = 'http://twitter.com/' + url
|
|
||||||
|
|
||||||
try:
|
try:
|
||||||
xml = urllib2.urlopen(url).read()
|
xml = urllib2.urlopen(url).read()
|
||||||
|
@ -66,6 +70,12 @@ def twitter(inp):
|
||||||
|
|
||||||
tweet = etree.fromstring(xml)
|
tweet = etree.fromstring(xml)
|
||||||
|
|
||||||
|
if searching_hashtag:
|
||||||
|
ns = '{http://www.w3.org/2005/Atom}'
|
||||||
|
id = random.choice(tweet.findall(ns + 'entry/' + ns + 'id')).text
|
||||||
|
id = id[id.rfind(':') + 1:]
|
||||||
|
return twitter(id)
|
||||||
|
|
||||||
if not getting_id:
|
if not getting_id:
|
||||||
tweet = tweet.find('status')
|
tweet = tweet.find('status')
|
||||||
if tweet is None:
|
if tweet is None:
|
||||||
|
|
Loading…
Reference in New Issue