on master help sign in
[enh] engine cfg compatibilty
commit74b6be3991dc62577aca295de839e51e6d0807d6 authorasciimoo <asciimoo@gmail.com> dateWed 23 Oct 2013, 23:55 (13 years ago) parent39d229e
9 files changed+36−39
searx/engines/duckduckgo.py+4−1 searx/engines/duckduckgo_definitions.py+4−1 searx/engines/flickr.py+6−8 searx/engines/github.py+2−2 searx/engines/google_images.py+4−5 searx/engines/piratebay.py+5−8 searx/engines/soundcloud.py+4−2 searx/engines/stackoverflow.py+4−6 searx/engines/youtube.py+3−6
searx/engines/duckduckgo.py+4−1
@@ -1,8 +1,11 @@
11from json import loads
2+from urllib import urlencode
23
4+url = 'https://duckduckgo.com/'
5+search_url = url + 'd.js?{query}&l=us-en&p=1&s=0'
36
47def request(query, params):
5− params['url'] = 'https://duckduckgo.com/d.js?q=%s&l=us-en&p=1&s=0' % query
8+ params['url'] = search_url.format(query=urlencode({'q': query}))
69 return params
710
811
searx/engines/duckduckgo_definitions.py+4−1
@@ -1,7 +1,10 @@
11import json
2+from urllib import urlencode
3+
4+url = 'http://api.duckduckgo.com/?{query}&format=json&pretty=0'
25
36def request(query, params):
4− params['url'] = 'http://api.duckduckgo.com/?q=%s&format=json&pretty=0' % query
7+ params['url'] = url.format(query=urlencode({'q': query}))
58 return params
69
710
searx/engines/flickr.py+6−8
@@ -1,18 +1,16 @@
11#!/usr/bin/env python
22
3−from urllib import quote
3+from urllib import urlencode
44from lxml import html
55from urlparse import urljoin
66
77categories = ['images']
88
9−base_url = 'https://secure.flickr.com/'
10−search_url = base_url+'search/?q='
9+url = 'https://secure.flickr.com/'
10+search_url = url+'search/?q={query}'
1111
1212def request(query, params):
13− global search_url
14− query = quote(query.replace(' ', '+'), safe='+')
15− params['url'] = search_url + query
13+ params['url'] = search_url.format(query=urlencode({'q': query}))
1614 return params
1715
1816def response(resp):
@@ -20,11 +18,11 @@ def response(resp):
2018 results = []
2119 dom = html.fromstring(resp.text)
2220 for result in dom.xpath('//div[@id="thumbnails"]//a[@class="rapidnofollow photo-click" and @data-track="photo-click"]'):
23− url = urljoin(base_url, result.attrib.get('href'))
21+ href = urljoin(url, result.attrib.get('href'))
2422 img = result.xpath('.//img')[0]
2523 title = img.attrib.get('alt', '')
2624 img_src = img.attrib.get('data-defer-src')
2725 if not img_src:
2826 continue
29− results.append({'url': url, 'title': title, 'img_src': img_src, 'template': 'images.html'})
27+ results.append({'url': href, 'title': title, 'img_src': img_src, 'template': 'images.html'})
3028 return results
searx/engines/github.py+2−2
@@ -4,11 +4,11 @@ from cgi import escape
44
55categories = ['it']
66
7−search_url = 'https://api.github.com/search/repositories?sort=stars&order=desc&'
7+search_url = 'https://api.github.com/search/repositories?sort=stars&order=desc&{query}'
88
99def request(query, params):
1010 global search_url
11− params['url'] = search_url + urlencode({'q': query})
11+ params['url'] = search_url.format(query=urlencode({'q': query}))
1212 params['headers']['Accept'] = 'application/vnd.github.preview.text-match+json'
1313 return params
1414
searx/engines/google_images.py+4−5
@@ -5,15 +5,14 @@ from json import loads
55
66categories = ['images']
77
8−search_url = 'https://ajax.googleapis.com/ajax/services/search/images?v=1.0&start=0&rsz=large&safe=off&filter=off&'
8+url = 'https://ajax.googleapis.com/'
9+search_url = url + 'ajax/services/search/images?v=1.0&start=0&rsz=large&safe=off&filter=off&{query}'
910
1011def request(query, params):
11− global search_url
1212 params['url'] = search_url + urlencode({'q': query})
1313 return params
1414
1515def response(resp):
16− global base_url
1716 results = []
1817 search_res = loads(resp.text)
1918 if not search_res.get('responseData'):
@@ -21,9 +20,9 @@ def response(resp):
2120 if not search_res['responseData'].get('results'):
2221 return []
2322 for result in search_res['responseData']['results']:
24− url = result['originalContextUrl']
23+ href = result['originalContextUrl']
2524 title = result['title']
2625 if not result['url']:
2726 continue
28− results.append({'url': url, 'title': title, 'content': '', 'img_src': result['url'], 'template': 'images.html'})
27+ results.append({'url': href, 'title': title, 'content': '', 'img_src': result['url'], 'template': 'images.html'})
2928 return results
searx/engines/piratebay.py+5−8
@@ -5,21 +5,18 @@ from urllib import quote
55
66categories = ['videos', 'music']
77
8−base_url = 'https://thepiratebay.sx/'
9−search_url = base_url + 'search/{search_term}/0/99/{search_type}'
8+url = 'https://thepiratebay.sx/'
9+search_url = url + 'search/{search_term}/0/99/{search_type}'
1010search_types = {'videos': '200'
1111 ,'music' : '100'
1212 }
1313
1414def request(query, params):
15− global search_url, search_types
16− # 200 is the video category
1715 params['url'] = search_url.format(search_term=quote(query), search_type=search_types.get(params['category']))
1816 return params
1917
2018
2119def response(resp):
22− global base_url
2320 results = []
2421 dom = html.fromstring(resp.text)
2522 search_res = dom.xpath('//table[@id="searchResult"]//tr')
@@ -27,12 +24,12 @@ def response(resp):
2724 return results
2825 for result in search_res[1:]:
2926 link = result.xpath('.//div[@class="detName"]//a')[0]
30− url = urljoin(base_url, link.attrib.get('href'))
27+ href = urljoin(url, link.attrib.get('href'))
3128 title = ' '.join(link.xpath('.//text()'))
3229 content = escape(' '.join(result.xpath('.//font[@class="detDesc"]//text()')))
3330 seed, leech = result.xpath('.//td[@align="right"]/text()')[:2]
3431 content += '<br />Seed: %s, Leech: %s' % (seed, leech)
3532 magnetlink = result.xpath('.//a[@title="Download this torrent using magnet"]')[0]
36− content += '<br /><a href="%s">magnet link</a>' % urljoin(base_url, magnetlink.attrib['href'])
37− results.append({'url': url, 'title': title, 'content': content})
33+ content += '<br /><a href="%s">magnet link</a>' % urljoin(url, magnetlink.attrib['href'])
34+ results.append({'url': href, 'title': title, 'content': content})
3835 return results
searx/engines/soundcloud.py+4−2
@@ -1,13 +1,15 @@
11from json import loads
2+from urllib import urlencode
23
34categories = ['music']
45
56guest_client_id = 'b45b1aa10f1ac2941910a7f0d10f8e28'
6−search_url = 'https://api.soundcloud.com/search?q=%s&facet=model&limit=10&offset=0&linked_partitioning=1&client_id='+guest_client_id
7+url = 'https://api.soundcloud.com/'
8+search_url = url + 'search?{query}&facet=model&limit=20&offset=0&linked_partitioning=1&client_id='+guest_client_id
79
810def request(query, params):
911 global search_url
10− params['url'] = search_url % query
12+ params['url'] = search_url.format(query=urlencode({'q': query}))
1113 return params
1214
1315
searx/engines/stackoverflow.py+4−6
@@ -5,23 +5,21 @@ from urllib import urlencode
55
66categories = ['it']
77
8−base_url = 'http://stackoverflow.com/'
9−search_url = base_url+'search?'
8+url = 'http://stackoverflow.com/'
9+search_url = url+'search?'
1010
1111def request(query, params):
12− global search_url
1312 params['url'] = search_url + urlencode({'q': query})
1413 return params
1514
1615
1716def response(resp):
18− global base_url
1917 results = []
2018 dom = html.fromstring(resp.text)
2119 for result in dom.xpath('//div[@class="question-summary search-result"]'):
2220 link = result.xpath('.//div[@class="result-link"]//a')[0]
23− url = urljoin(base_url, link.attrib.get('href'))
21+ href = urljoin(url, link.attrib.get('href'))
2422 title = ' '.join(link.xpath('.//text()'))
2523 content = escape(' '.join(result.xpath('.//div[@class="excerpt"]//text()')))
26− results.append({'url': url, 'title': title, 'content': content})
24+ results.append({'url': href, 'title': title, 'content': content})
2725 return results
searx/engines/youtube.py+3−6
@@ -1,15 +1,12 @@
11from json import loads
2−from urllib import quote
2+from urllib import urlencode
33
44categories = ['videos']
55
6−search_url = 'https://gdata.youtube.com/feeds/api/videos?alt=json&q='
6+search_url = 'https://gdata.youtube.com/feeds/api/videos?alt=json&{query}'
77
88def request(query, params):
9− global search_url
10− query = quote(query.replace(' ', '+'), safe='+')
11− params['url'] = search_url + query
12−
9+ params['url'] = search_url.format(query=urlencode({'q': query}))
1310 return params
1411
1512