1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
|
#!/usr/bin/python2.7
import urllib
import urllib2
import simplejson as json
import sys
import re
import os
urlencode = urllib.urlencode
urlopen = urllib2.urlopen
Request = urllib2.Request
DEFAULT_TERM = "pizza"
#{{{
def get_request(url):
try:
headers = {
'User-Agent': 'Mozilla/4.0 (compatible; MSIE 5.5; Windows NT)',
'Accept': '*/*'
}
req = Request(url, None, headers)
response = urlopen(req)
return response.read()
except IOError, e:
if hasattr(e, 'code'):
sys.stderr.write( '%s - ERROR %s' % (url, e.code))
else:
sys.stderr.write(str(e))
sys.exit(1)
#}}}
class Image_url():
def __init__(self, result):
self._url = result['url']
def url(self):
if self._url[0] == '/':
return "{}{}".format('http://dump.fm/images', self._url)
else :
return "{}{}".format('http://', self._url)
class DumpFmImageSearch:
def __init__(self):
self._search_url = 'http://dump.fm/cmd/search/'
def search(self, *args): # something like this should work.
if len(args) < 1:
sys.stderr.write("Must provide search term");
raise ValueError
terms = "+".join(map(lambda x : urllib.quote(x), args));
url = "{}{}".format(self._search_url, terms)
resp = get_request(url);
return map(
lambda x: Image_url(x),
json.loads(resp)
)
if __name__ == '__main__':
term = sys.argv[1] if len(sys.argv) > 1 else DEFAULT_TERM
s = DumpFmImageSearch()
images = s.search(term)
print images[0].url()
|