mirror of
				https://github.com/searxng/searxng
				synced 2024-01-01 19:24:07 +01:00 
			
		
		
		
	update versions.cfg to use the current up-to-date packages
This commit is contained in:
		
							parent
							
								
									bbd83f5a51
								
							
						
					
					
						commit
						4689fe341c
					
				
					 40 changed files with 486 additions and 398 deletions
				
			
		|  | @ -28,7 +28,7 @@ from searx.poolrequests import get as http_get | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| def get(*args, **kwargs): | def get(*args, **kwargs): | ||||||
|     if not 'timeout' in kwargs: |     if 'timeout' not in kwargs: | ||||||
|         kwargs['timeout'] = settings['server']['request_timeout'] |         kwargs['timeout'] = settings['server']['request_timeout'] | ||||||
| 
 | 
 | ||||||
|     return http_get(*args, **kwargs) |     return http_get(*args, **kwargs) | ||||||
|  |  | ||||||
|  | @ -1,15 +1,17 @@ | ||||||
| ## Bing (Web) | """ | ||||||
| # |  Bing (Web) | ||||||
| # @website     https://www.bing.com | 
 | ||||||
| # @provide-api yes (http://datamarket.azure.com/dataset/bing/search), |  @website     https://www.bing.com | ||||||
| #              max. 5000 query/month |  @provide-api yes (http://datamarket.azure.com/dataset/bing/search), | ||||||
| # |               max. 5000 query/month | ||||||
| # @using-api   no (because of query limit) | 
 | ||||||
| # @results     HTML (using search portal) |  @using-api   no (because of query limit) | ||||||
| # @stable      no (HTML can change) |  @results     HTML (using search portal) | ||||||
| # @parse       url, title, content |  @stable      no (HTML can change) | ||||||
| # |  @parse       url, title, content | ||||||
| # @todo        publishedDate | 
 | ||||||
|  |  @todo        publishedDate | ||||||
|  | """ | ||||||
| 
 | 
 | ||||||
| from urllib import urlencode | from urllib import urlencode | ||||||
| from cgi import escape | from cgi import escape | ||||||
|  |  | ||||||
|  | @ -1,17 +1,19 @@ | ||||||
| ## Bing (Images) | """ | ||||||
| # |  Bing (Images) | ||||||
| # @website     https://www.bing.com/images | 
 | ||||||
| # @provide-api yes (http://datamarket.azure.com/dataset/bing/search), |  @website     https://www.bing.com/images | ||||||
| #              max. 5000 query/month |  @provide-api yes (http://datamarket.azure.com/dataset/bing/search), | ||||||
| # |               max. 5000 query/month | ||||||
| # @using-api   no (because of query limit) | 
 | ||||||
| # @results     HTML (using search portal) |  @using-api   no (because of query limit) | ||||||
| # @stable      no (HTML can change) |  @results     HTML (using search portal) | ||||||
| # @parse       url, title, img_src |  @stable      no (HTML can change) | ||||||
| # |  @parse       url, title, img_src | ||||||
| # @todo        currently there are up to 35 images receive per page, | 
 | ||||||
| #              because bing does not parse count=10. |  @todo        currently there are up to 35 images receive per page, | ||||||
| #              limited response to 10 images |               because bing does not parse count=10. | ||||||
|  |               limited response to 10 images | ||||||
|  | """ | ||||||
| 
 | 
 | ||||||
| from urllib import urlencode | from urllib import urlencode | ||||||
| from lxml import html | from lxml import html | ||||||
|  | @ -76,7 +78,7 @@ def response(resp): | ||||||
|         title = link.attrib.get('t1') |         title = link.attrib.get('t1') | ||||||
|         ihk = link.attrib.get('ihk') |         ihk = link.attrib.get('ihk') | ||||||
| 
 | 
 | ||||||
|         #url = 'http://' + link.attrib.get('t3') |         # url = 'http://' + link.attrib.get('t3') | ||||||
|         url = yaml_data.get('surl') |         url = yaml_data.get('surl') | ||||||
|         img_src = yaml_data.get('imgurl') |         img_src = yaml_data.get('imgurl') | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -1,13 +1,15 @@ | ||||||
| ## Bing (News) | """ | ||||||
| # |  Bing (News) | ||||||
| # @website     https://www.bing.com/news | 
 | ||||||
| # @provide-api yes (http://datamarket.azure.com/dataset/bing/search), |  @website     https://www.bing.com/news | ||||||
| #              max. 5000 query/month |  @provide-api yes (http://datamarket.azure.com/dataset/bing/search), | ||||||
| # |               max. 5000 query/month | ||||||
| # @using-api   no (because of query limit) | 
 | ||||||
| # @results     HTML (using search portal) |  @using-api   no (because of query limit) | ||||||
| # @stable      no (HTML can change) |  @results     HTML (using search portal) | ||||||
| # @parse       url, title, content, publishedDate |  @stable      no (HTML can change) | ||||||
|  |  @parse       url, title, content, publishedDate | ||||||
|  | """ | ||||||
| 
 | 
 | ||||||
| from urllib import urlencode | from urllib import urlencode | ||||||
| from cgi import escape | from cgi import escape | ||||||
|  | @ -87,6 +89,8 @@ def response(resp): | ||||||
|                 publishedDate = parser.parse(publishedDate, dayfirst=False) |                 publishedDate = parser.parse(publishedDate, dayfirst=False) | ||||||
|             except TypeError: |             except TypeError: | ||||||
|                 publishedDate = datetime.now() |                 publishedDate = datetime.now() | ||||||
|  |             except ValueError: | ||||||
|  |                 publishedDate = datetime.now() | ||||||
| 
 | 
 | ||||||
|         # append result |         # append result | ||||||
|         results.append({'url': url, |         results.append({'url': url, | ||||||
|  |  | ||||||
|  | @ -1,12 +1,14 @@ | ||||||
| ## Blekko (Images) | """ | ||||||
| # |  Blekko (Images) | ||||||
| # @website     https://blekko.com | 
 | ||||||
| # @provide-api yes (inofficial) |  @website     https://blekko.com | ||||||
| # |  @provide-api yes (inofficial) | ||||||
| # @using-api   yes | 
 | ||||||
| # @results     JSON |  @using-api   yes | ||||||
| # @stable      yes |  @results     JSON | ||||||
| # @parse       url, title, img_src |  @stable      yes | ||||||
|  |  @parse       url, title, img_src | ||||||
|  | """ | ||||||
| 
 | 
 | ||||||
| from json import loads | from json import loads | ||||||
| from urllib import urlencode | from urllib import urlencode | ||||||
|  |  | ||||||
|  | @ -1,12 +1,14 @@ | ||||||
| ## BTDigg (Videos, Music, Files) | """ | ||||||
| # |  BTDigg (Videos, Music, Files) | ||||||
| # @website     https://btdigg.org | 
 | ||||||
| # @provide-api yes (on demand) |  @website     https://btdigg.org | ||||||
| # |  @provide-api yes (on demand) | ||||||
| # @using-api   no | 
 | ||||||
| # @results     HTML (using search portal) |  @using-api   no | ||||||
| # @stable      no (HTML can change) |  @results     HTML (using search portal) | ||||||
| # @parse       url, title, content, seed, leech, magnetlink |  @stable      no (HTML can change) | ||||||
|  |  @parse       url, title, content, seed, leech, magnetlink | ||||||
|  | """ | ||||||
| 
 | 
 | ||||||
| from urlparse import urljoin | from urlparse import urljoin | ||||||
| from cgi import escape | from cgi import escape | ||||||
|  |  | ||||||
|  | @ -1,14 +1,16 @@ | ||||||
| ## Dailymotion (Videos) | """ | ||||||
| # |  Dailymotion (Videos) | ||||||
| # @website     https://www.dailymotion.com | 
 | ||||||
| # @provide-api yes (http://www.dailymotion.com/developer) |  @website     https://www.dailymotion.com | ||||||
| # |  @provide-api yes (http://www.dailymotion.com/developer) | ||||||
| # @using-api   yes | 
 | ||||||
| # @results     JSON |  @using-api   yes | ||||||
| # @stable      yes |  @results     JSON | ||||||
| # @parse       url, title, thumbnail, publishedDate, embedded |  @stable      yes | ||||||
| # |  @parse       url, title, thumbnail, publishedDate, embedded | ||||||
| # @todo        set content-parameter with correct data | 
 | ||||||
|  |  @todo        set content-parameter with correct data | ||||||
|  | """ | ||||||
| 
 | 
 | ||||||
| from urllib import urlencode | from urllib import urlencode | ||||||
| from json import loads | from json import loads | ||||||
|  | @ -48,7 +50,7 @@ def response(resp): | ||||||
|     search_res = loads(resp.text) |     search_res = loads(resp.text) | ||||||
| 
 | 
 | ||||||
|     # return empty array if there are no results |     # return empty array if there are no results | ||||||
|     if not 'list' in search_res: |     if 'list' not in search_res: | ||||||
|         return [] |         return [] | ||||||
| 
 | 
 | ||||||
|     # parse results |     # parse results | ||||||
|  |  | ||||||
|  | @ -1,12 +1,14 @@ | ||||||
| ## Deezer (Music) | """ | ||||||
| # |  Deezer (Music) | ||||||
| # @website     https://deezer.com | 
 | ||||||
| # @provide-api yes (http://developers.deezer.com/api/) |  @website     https://deezer.com | ||||||
| # |  @provide-api yes (http://developers.deezer.com/api/) | ||||||
| # @using-api   yes | 
 | ||||||
| # @results     JSON |  @using-api   yes | ||||||
| # @stable      yes |  @results     JSON | ||||||
| # @parse       url, title, content, embedded |  @stable      yes | ||||||
|  |  @parse       url, title, content, embedded | ||||||
|  | """ | ||||||
| 
 | 
 | ||||||
| from json import loads | from json import loads | ||||||
| from urllib import urlencode | from urllib import urlencode | ||||||
|  |  | ||||||
|  | @ -1,14 +1,16 @@ | ||||||
| ## Deviantart (Images) | """ | ||||||
| # |  Deviantart (Images) | ||||||
| # @website     https://www.deviantart.com/ | 
 | ||||||
| # @provide-api yes (https://www.deviantart.com/developers/) (RSS) |  @website     https://www.deviantart.com/ | ||||||
| # |  @provide-api yes (https://www.deviantart.com/developers/) (RSS) | ||||||
| # @using-api   no (TODO, rewrite to api) | 
 | ||||||
| # @results     HTML |  @using-api   no (TODO, rewrite to api) | ||||||
| # @stable      no (HTML can change) |  @results     HTML | ||||||
| # @parse       url, title, thumbnail_src, img_src |  @stable      no (HTML can change) | ||||||
| # |  @parse       url, title, thumbnail_src, img_src | ||||||
| # @todo        rewrite to api | 
 | ||||||
|  |  @todo        rewrite to api | ||||||
|  | """ | ||||||
| 
 | 
 | ||||||
| from urllib import urlencode | from urllib import urlencode | ||||||
| from urlparse import urljoin | from urlparse import urljoin | ||||||
|  |  | ||||||
|  | @ -1,12 +1,14 @@ | ||||||
| ## Digg (News, Social media) | """ | ||||||
| # |  Digg (News, Social media) | ||||||
| # @website     https://digg.com/ | 
 | ||||||
| # @provide-api no |  @website     https://digg.com/ | ||||||
| # |  @provide-api no | ||||||
| # @using-api   no | 
 | ||||||
| # @results     HTML (using search portal) |  @using-api   no | ||||||
| # @stable      no (HTML can change) |  @results     HTML (using search portal) | ||||||
| # @parse       url, title, content, publishedDate, thumbnail |  @stable      no (HTML can change) | ||||||
|  |  @parse       url, title, content, publishedDate, thumbnail | ||||||
|  | """ | ||||||
| 
 | 
 | ||||||
| from urllib import quote_plus | from urllib import quote_plus | ||||||
| from json import loads | from json import loads | ||||||
|  |  | ||||||
|  | @ -1,17 +1,19 @@ | ||||||
| ## DuckDuckGo (Web) | """ | ||||||
| # |  DuckDuckGo (Web) | ||||||
| # @website     https://duckduckgo.com/ | 
 | ||||||
| # @provide-api yes (https://duckduckgo.com/api), |  @website     https://duckduckgo.com/ | ||||||
| #              but not all results from search-site |  @provide-api yes (https://duckduckgo.com/api), | ||||||
| # |               but not all results from search-site | ||||||
| # @using-api   no | 
 | ||||||
| # @results     HTML (using search portal) |  @using-api   no | ||||||
| # @stable      no (HTML can change) |  @results     HTML (using search portal) | ||||||
| # @parse       url, title, content |  @stable      no (HTML can change) | ||||||
| # |  @parse       url, title, content | ||||||
| # @todo        rewrite to api | 
 | ||||||
| # @todo        language support |  @todo        rewrite to api | ||||||
| #              (the current used site does not support language-change) |  @todo        language support | ||||||
|  |               (the current used site does not support language-change) | ||||||
|  | """ | ||||||
| 
 | 
 | ||||||
| from urllib import urlencode | from urllib import urlencode | ||||||
| from lxml.html import fromstring | from lxml.html import fromstring | ||||||
|  |  | ||||||
|  | @ -1,7 +1,9 @@ | ||||||
| ## Dummy | """ | ||||||
| # |  Dummy | ||||||
| # @results     empty array | 
 | ||||||
| # @stable      yes |  @results     empty array | ||||||
|  |  @stable      yes | ||||||
|  | """ | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| # do search-request | # do search-request | ||||||
|  |  | ||||||
|  | @ -1,12 +1,14 @@ | ||||||
| ## Faroo (Web, News) | """ | ||||||
| # |  Faroo (Web, News) | ||||||
| # @website     http://www.faroo.com | 
 | ||||||
| # @provide-api yes (http://www.faroo.com/hp/api/api.html), require API-key |  @website     http://www.faroo.com | ||||||
| # |  @provide-api yes (http://www.faroo.com/hp/api/api.html), require API-key | ||||||
| # @using-api   yes | 
 | ||||||
| # @results     JSON |  @using-api   yes | ||||||
| # @stable      yes |  @results     JSON | ||||||
| # @parse       url, title, content, publishedDate, img_src |  @stable      yes | ||||||
|  |  @parse       url, title, content, publishedDate, img_src | ||||||
|  | """ | ||||||
| 
 | 
 | ||||||
| from urllib import urlencode | from urllib import urlencode | ||||||
| from json import loads | from json import loads | ||||||
|  |  | ||||||
|  | @ -1,15 +1,17 @@ | ||||||
| #!/usr/bin/env python | #!/usr/bin/env python | ||||||
| 
 | 
 | ||||||
| ## Flickr (Images) | """ | ||||||
| # |  Flickr (Images) | ||||||
| # @website     https://www.flickr.com | 
 | ||||||
| # @provide-api yes (https://secure.flickr.com/services/api/flickr.photos.search.html) |  @website     https://www.flickr.com | ||||||
| # |  @provide-api yes (https://secure.flickr.com/services/api/flickr.photos.search.html) | ||||||
| # @using-api   yes | 
 | ||||||
| # @results     JSON |  @using-api   yes | ||||||
| # @stable      yes |  @results     JSON | ||||||
| # @parse       url, title, thumbnail, img_src |  @stable      yes | ||||||
| #More info on api-key : https://www.flickr.com/services/apps/create/ |  @parse       url, title, thumbnail, img_src | ||||||
|  |  More info on api-key : https://www.flickr.com/services/apps/create/ | ||||||
|  | """ | ||||||
| 
 | 
 | ||||||
| from urllib import urlencode | from urllib import urlencode | ||||||
| from json import loads | from json import loads | ||||||
|  | @ -48,10 +50,10 @@ def response(resp): | ||||||
|     search_results = loads(resp.text) |     search_results = loads(resp.text) | ||||||
| 
 | 
 | ||||||
|     # return empty array if there are no results |     # return empty array if there are no results | ||||||
|     if not 'photos' in search_results: |     if 'photos' not in search_results: | ||||||
|         return [] |         return [] | ||||||
| 
 | 
 | ||||||
|     if not 'photo' in search_results['photos']: |     if 'photo' not in search_results['photos']: | ||||||
|         return [] |         return [] | ||||||
| 
 | 
 | ||||||
|     photos = search_results['photos']['photo'] |     photos = search_results['photos']['photo'] | ||||||
|  |  | ||||||
|  | @ -1,14 +1,16 @@ | ||||||
| #!/usr/bin/env python | #!/usr/bin/env python | ||||||
| 
 | 
 | ||||||
| #  Flickr (Images) | """ | ||||||
| # |   Flickr (Images) | ||||||
| # @website     https://www.flickr.com | 
 | ||||||
| # @provide-api yes (https://secure.flickr.com/services/api/flickr.photos.search.html) |  @website     https://www.flickr.com | ||||||
| # |  @provide-api yes (https://secure.flickr.com/services/api/flickr.photos.search.html) | ||||||
| # @using-api   no | 
 | ||||||
| # @results     HTML |  @using-api   no | ||||||
| # @stable      no |  @results     HTML | ||||||
| # @parse       url, title, thumbnail, img_src |  @stable      no | ||||||
|  |  @parse       url, title, thumbnail, img_src | ||||||
|  | """ | ||||||
| 
 | 
 | ||||||
| from urllib import urlencode | from urllib import urlencode | ||||||
| from json import loads | from json import loads | ||||||
|  | @ -20,8 +22,8 @@ logger = logger.getChild('flickr-noapi') | ||||||
| 
 | 
 | ||||||
| categories = ['images'] | categories = ['images'] | ||||||
| 
 | 
 | ||||||
| url = 'https://secure.flickr.com/' | url = 'https://www.flickr.com/' | ||||||
| search_url = url + 'search/?{query}&page={page}' | search_url = url + 'search?{query}&page={page}' | ||||||
| photo_url = 'https://www.flickr.com/photos/{userid}/{photoid}' | photo_url = 'https://www.flickr.com/photos/{userid}/{photoid}' | ||||||
| regex = re.compile(r"\"search-photos-models\",\"photos\":(.*}),\"totalItems\":", re.DOTALL) | regex = re.compile(r"\"search-photos-models\",\"photos\":(.*}),\"totalItems\":", re.DOTALL) | ||||||
| image_sizes = ('o', 'k', 'h', 'b', 'c', 'z', 'n', 'm', 't', 'q', 's') | image_sizes = ('o', 'k', 'h', 'b', 'c', 'z', 'n', 'm', 't', 'q', 's') | ||||||
|  |  | ||||||
|  | @ -1,14 +1,16 @@ | ||||||
| ## General Files (Files) | """ | ||||||
| # |  General Files (Files) | ||||||
| # @website     http://www.general-files.org | 
 | ||||||
| # @provide-api no (nothing found) |  @website     http://www.general-files.org | ||||||
| # |  @provide-api no (nothing found) | ||||||
| # @using-api   no (because nothing found) | 
 | ||||||
| # @results     HTML (using search portal) |  @using-api   no (because nothing found) | ||||||
| # @stable      no (HTML can change) |  @results     HTML (using search portal) | ||||||
| # @parse       url, title, content |  @stable      no (HTML can change) | ||||||
| # |  @parse       url, title, content | ||||||
| # @todo        detect torrents? | 
 | ||||||
|  |  @todo        detect torrents? | ||||||
|  | """ | ||||||
| 
 | 
 | ||||||
| from lxml import html | from lxml import html | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -1,12 +1,14 @@ | ||||||
| ## Gigablast (Web) | """ | ||||||
| # |  Gigablast (Web) | ||||||
| # @website     http://gigablast.com | 
 | ||||||
| # @provide-api yes (http://gigablast.com/api.html) |  @website     http://gigablast.com | ||||||
| # |  @provide-api yes (http://gigablast.com/api.html) | ||||||
| # @using-api   yes | 
 | ||||||
| # @results     XML |  @using-api   yes | ||||||
| # @stable      yes |  @results     XML | ||||||
| # @parse       url, title, content |  @stable      yes | ||||||
|  |  @parse       url, title, content | ||||||
|  | """ | ||||||
| 
 | 
 | ||||||
| from urllib import urlencode | from urllib import urlencode | ||||||
| from cgi import escape | from cgi import escape | ||||||
|  |  | ||||||
|  | @ -1,12 +1,14 @@ | ||||||
| ## Github (It) | """ | ||||||
| # |  Github (It) | ||||||
| # @website     https://github.com/ | 
 | ||||||
| # @provide-api yes (https://developer.github.com/v3/) |  @website     https://github.com/ | ||||||
| # |  @provide-api yes (https://developer.github.com/v3/) | ||||||
| # @using-api   yes | 
 | ||||||
| # @results     JSON |  @using-api   yes | ||||||
| # @stable      yes (using api) |  @results     JSON | ||||||
| # @parse       url, title, content |  @stable      yes (using api) | ||||||
|  |  @parse       url, title, content | ||||||
|  | """ | ||||||
| 
 | 
 | ||||||
| from urllib import urlencode | from urllib import urlencode | ||||||
| from json import loads | from json import loads | ||||||
|  | @ -37,7 +39,7 @@ def response(resp): | ||||||
|     search_res = loads(resp.text) |     search_res = loads(resp.text) | ||||||
| 
 | 
 | ||||||
|     # check if items are recieved |     # check if items are recieved | ||||||
|     if not 'items' in search_res: |     if 'items' not in search_res: | ||||||
|         return [] |         return [] | ||||||
| 
 | 
 | ||||||
|     # parse results |     # parse results | ||||||
|  |  | ||||||
|  | @ -1,13 +1,15 @@ | ||||||
| ## Google (Images) | """ | ||||||
| # |  Google (Images) | ||||||
| # @website     https://www.google.com | 
 | ||||||
| # @provide-api yes (https://developers.google.com/web-search/docs/), |  @website     https://www.google.com | ||||||
| #              deprecated! |  @provide-api yes (https://developers.google.com/web-search/docs/), | ||||||
| # |               deprecated! | ||||||
| # @using-api   yes | 
 | ||||||
| # @results     JSON |  @using-api   yes | ||||||
| # @stable      yes (but deprecated) |  @results     JSON | ||||||
| # @parse       url, title, img_src |  @stable      yes (but deprecated) | ||||||
|  |  @parse       url, title, img_src | ||||||
|  | """ | ||||||
| 
 | 
 | ||||||
| from urllib import urlencode, unquote | from urllib import urlencode, unquote | ||||||
| from json import loads | from json import loads | ||||||
|  |  | ||||||
|  | @ -1,13 +1,15 @@ | ||||||
| ## Google (News) | """ | ||||||
| # |  Google (News) | ||||||
| # @website     https://www.google.com | 
 | ||||||
| # @provide-api yes (https://developers.google.com/web-search/docs/), |  @website     https://www.google.com | ||||||
| #              deprecated! |  @provide-api yes (https://developers.google.com/web-search/docs/), | ||||||
| # |               deprecated! | ||||||
| # @using-api   yes | 
 | ||||||
| # @results     JSON |  @using-api   yes | ||||||
| # @stable      yes (but deprecated) |  @results     JSON | ||||||
| # @parse       url, title, content, publishedDate |  @stable      yes (but deprecated) | ||||||
|  |  @parse       url, title, content, publishedDate | ||||||
|  | """ | ||||||
| 
 | 
 | ||||||
| from urllib import urlencode | from urllib import urlencode | ||||||
| from json import loads | from json import loads | ||||||
|  |  | ||||||
|  | @ -6,7 +6,7 @@ search_url = None | ||||||
| url_query = None | url_query = None | ||||||
| content_query = None | content_query = None | ||||||
| title_query = None | title_query = None | ||||||
| #suggestion_xpath = '' | # suggestion_xpath = '' | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| def iterate(iterable): | def iterate(iterable): | ||||||
|  |  | ||||||
|  | @ -1,12 +1,14 @@ | ||||||
| ## Kickass Torrent (Videos, Music, Files) | """ | ||||||
| # |  Kickass Torrent (Videos, Music, Files) | ||||||
| # @website     https://kickass.so | 
 | ||||||
| # @provide-api no (nothing found) |  @website     https://kickass.so | ||||||
| # |  @provide-api no (nothing found) | ||||||
| # @using-api   no | 
 | ||||||
| # @results     HTML (using search portal) |  @using-api   no | ||||||
| # @stable      yes (HTML can change) |  @results     HTML (using search portal) | ||||||
| # @parse       url, title, content, seed, leech, magnetlink |  @stable      yes (HTML can change) | ||||||
|  |  @parse       url, title, content, seed, leech, magnetlink | ||||||
|  | """ | ||||||
| 
 | 
 | ||||||
| from urlparse import urljoin | from urlparse import urljoin | ||||||
| from cgi import escape | from cgi import escape | ||||||
|  |  | ||||||
|  | @ -1,14 +1,16 @@ | ||||||
| ## general mediawiki-engine (Web) | """ | ||||||
| # |  general mediawiki-engine (Web) | ||||||
| # @website     websites built on mediawiki (https://www.mediawiki.org) | 
 | ||||||
| # @provide-api yes (http://www.mediawiki.org/wiki/API:Search) |  @website     websites built on mediawiki (https://www.mediawiki.org) | ||||||
| # |  @provide-api yes (http://www.mediawiki.org/wiki/API:Search) | ||||||
| # @using-api   yes | 
 | ||||||
| # @results     JSON |  @using-api   yes | ||||||
| # @stable      yes |  @results     JSON | ||||||
| # @parse       url, title |  @stable      yes | ||||||
| # |  @parse       url, title | ||||||
| # @todo        content | 
 | ||||||
|  |  @todo        content | ||||||
|  | """ | ||||||
| 
 | 
 | ||||||
| from json import loads | from json import loads | ||||||
| from string import Formatter | from string import Formatter | ||||||
|  |  | ||||||
|  | @ -1,12 +1,14 @@ | ||||||
| ## Mixcloud (Music) | """ | ||||||
| # |  Mixcloud (Music) | ||||||
| # @website     https://http://www.mixcloud.com/ | 
 | ||||||
| # @provide-api yes (http://www.mixcloud.com/developers/ |  @website     https://http://www.mixcloud.com/ | ||||||
| # |  @provide-api yes (http://www.mixcloud.com/developers/ | ||||||
| # @using-api   yes | 
 | ||||||
| # @results     JSON |  @using-api   yes | ||||||
| # @stable      yes |  @results     JSON | ||||||
| # @parse       url, title, content, embedded, publishedDate |  @stable      yes | ||||||
|  |  @parse       url, title, content, embedded, publishedDate | ||||||
|  | """ | ||||||
| 
 | 
 | ||||||
| from json import loads | from json import loads | ||||||
| from urllib import urlencode | from urllib import urlencode | ||||||
|  |  | ||||||
|  | @ -1,12 +1,14 @@ | ||||||
| ## OpenStreetMap (Map) | """ | ||||||
| # |  OpenStreetMap (Map) | ||||||
| # @website     https://openstreetmap.org/ | 
 | ||||||
| # @provide-api yes (http://wiki.openstreetmap.org/wiki/Nominatim) |  @website     https://openstreetmap.org/ | ||||||
| # |  @provide-api yes (http://wiki.openstreetmap.org/wiki/Nominatim) | ||||||
| # @using-api   yes | 
 | ||||||
| # @results     JSON |  @using-api   yes | ||||||
| # @stable      yes |  @results     JSON | ||||||
| # @parse       url, title |  @stable      yes | ||||||
|  |  @parse       url, title | ||||||
|  | """ | ||||||
| 
 | 
 | ||||||
| from json import loads | from json import loads | ||||||
| from searx.utils import searx_useragent | from searx.utils import searx_useragent | ||||||
|  |  | ||||||
|  | @ -1,12 +1,14 @@ | ||||||
| ## Photon (Map) | """ | ||||||
| # |  Photon (Map) | ||||||
| # @website     https://photon.komoot.de | 
 | ||||||
| # @provide-api yes (https://photon.komoot.de/) |  @website     https://photon.komoot.de | ||||||
| # |  @provide-api yes (https://photon.komoot.de/) | ||||||
| # @using-api   yes | 
 | ||||||
| # @results     JSON |  @using-api   yes | ||||||
| # @stable      yes |  @results     JSON | ||||||
| # @parse       url, title |  @stable      yes | ||||||
|  |  @parse       url, title | ||||||
|  | """ | ||||||
| 
 | 
 | ||||||
| from urllib import urlencode | from urllib import urlencode | ||||||
| from json import loads | from json import loads | ||||||
|  |  | ||||||
|  | @ -1,12 +1,14 @@ | ||||||
| ## Searchcode (It) | """ | ||||||
| # |  Searchcode (It) | ||||||
| # @website     https://searchcode.com/ | 
 | ||||||
| # @provide-api yes (https://searchcode.com/api/) |  @website     https://searchcode.com/ | ||||||
| # |  @provide-api yes (https://searchcode.com/api/) | ||||||
| # @using-api   yes | 
 | ||||||
| # @results     JSON |  @using-api   yes | ||||||
| # @stable      yes |  @results     JSON | ||||||
| # @parse       url, title, content |  @stable      yes | ||||||
|  |  @parse       url, title, content | ||||||
|  | """ | ||||||
| 
 | 
 | ||||||
| from urllib import urlencode | from urllib import urlencode | ||||||
| from json import loads | from json import loads | ||||||
|  |  | ||||||
|  | @ -1,12 +1,14 @@ | ||||||
| ## Searchcode (It) | """ | ||||||
| # |  Searchcode (It) | ||||||
| # @website     https://searchcode.com/ | 
 | ||||||
| # @provide-api yes (https://searchcode.com/api/) |  @website     https://searchcode.com/ | ||||||
| # |  @provide-api yes (https://searchcode.com/api/) | ||||||
| # @using-api   yes | 
 | ||||||
| # @results     JSON |  @using-api   yes | ||||||
| # @stable      yes |  @results     JSON | ||||||
| # @parse       url, title, content |  @stable      yes | ||||||
|  |  @parse       url, title, content | ||||||
|  | """ | ||||||
| 
 | 
 | ||||||
| from urllib import urlencode | from urllib import urlencode | ||||||
| from json import loads | from json import loads | ||||||
|  |  | ||||||
|  | @ -1,12 +1,14 @@ | ||||||
| ## Soundcloud (Music) | """ | ||||||
| # |  Soundcloud (Music) | ||||||
| # @website     https://soundcloud.com | 
 | ||||||
| # @provide-api yes (https://developers.soundcloud.com/) |  @website     https://soundcloud.com | ||||||
| # |  @provide-api yes (https://developers.soundcloud.com/) | ||||||
| # @using-api   yes | 
 | ||||||
| # @results     JSON |  @using-api   yes | ||||||
| # @stable      yes |  @results     JSON | ||||||
| # @parse       url, title, content, publishedDate, embedded |  @stable      yes | ||||||
|  |  @parse       url, title, content, publishedDate, embedded | ||||||
|  | """ | ||||||
| 
 | 
 | ||||||
| from json import loads | from json import loads | ||||||
| from urllib import urlencode, quote_plus | from urllib import urlencode, quote_plus | ||||||
|  |  | ||||||
|  | @ -1,12 +1,14 @@ | ||||||
| ## Spotify (Music) | """ | ||||||
| # |  Spotify (Music) | ||||||
| # @website     https://spotify.com | 
 | ||||||
| # @provide-api yes (https://developer.spotify.com/web-api/search-item/) |  @website     https://spotify.com | ||||||
| # |  @provide-api yes (https://developer.spotify.com/web-api/search-item/) | ||||||
| # @using-api   yes | 
 | ||||||
| # @results     JSON |  @using-api   yes | ||||||
| # @stable      yes |  @results     JSON | ||||||
| # @parse       url, title, content, embedded |  @stable      yes | ||||||
|  |  @parse       url, title, content, embedded | ||||||
|  | """ | ||||||
| 
 | 
 | ||||||
| from json import loads | from json import loads | ||||||
| from urllib import urlencode | from urllib import urlencode | ||||||
|  |  | ||||||
|  | @ -1,12 +1,14 @@ | ||||||
| ## Stackoverflow (It) | """ | ||||||
| # |  Stackoverflow (It) | ||||||
| # @website     https://stackoverflow.com/ | 
 | ||||||
| # @provide-api not clear (https://api.stackexchange.com/docs/advanced-search) |  @website     https://stackoverflow.com/ | ||||||
| # |  @provide-api not clear (https://api.stackexchange.com/docs/advanced-search) | ||||||
| # @using-api   no | 
 | ||||||
| # @results     HTML |  @using-api   no | ||||||
| # @stable      no (HTML can change) |  @results     HTML | ||||||
| # @parse       url, title, content |  @stable      no (HTML can change) | ||||||
|  |  @parse       url, title, content | ||||||
|  | """ | ||||||
| 
 | 
 | ||||||
| from urlparse import urljoin | from urlparse import urljoin | ||||||
| from cgi import escape | from cgi import escape | ||||||
|  |  | ||||||
|  | @ -1,12 +1,14 @@ | ||||||
| ## Subtitleseeker (Video) | """ | ||||||
| # |  Subtitleseeker (Video) | ||||||
| # @website     http://www.subtitleseeker.com | 
 | ||||||
| # @provide-api no |  @website     http://www.subtitleseeker.com | ||||||
| # |  @provide-api no | ||||||
| # @using-api   no | 
 | ||||||
| # @results     HTML |  @using-api   no | ||||||
| # @stable      no (HTML can change) |  @results     HTML | ||||||
| # @parse       url, title, content |  @stable      no (HTML can change) | ||||||
|  |  @parse       url, title, content | ||||||
|  | """ | ||||||
| 
 | 
 | ||||||
| from cgi import escape | from cgi import escape | ||||||
| from urllib import quote_plus | from urllib import quote_plus | ||||||
|  |  | ||||||
|  | @ -1,14 +1,16 @@ | ||||||
| ## Twitter (Social media) | """ | ||||||
| # |  Twitter (Social media) | ||||||
| # @website     https://twitter.com/ | 
 | ||||||
| # @provide-api yes (https://dev.twitter.com/docs/using-search) |  @website     https://twitter.com/ | ||||||
| # |  @provide-api yes (https://dev.twitter.com/docs/using-search) | ||||||
| # @using-api   no | 
 | ||||||
| # @results     HTML (using search portal) |  @using-api   no | ||||||
| # @stable      no (HTML can change) |  @results     HTML (using search portal) | ||||||
| # @parse       url, title, content |  @stable      no (HTML can change) | ||||||
| # |  @parse       url, title, content | ||||||
| # @todo        publishedDate | 
 | ||||||
|  |  @todo        publishedDate | ||||||
|  | """ | ||||||
| 
 | 
 | ||||||
| from urlparse import urljoin | from urlparse import urljoin | ||||||
| from urllib import urlencode | from urllib import urlencode | ||||||
|  |  | ||||||
|  | @ -1,13 +1,14 @@ | ||||||
| ## 1x (Images) | """ | ||||||
| # |  1x (Images) | ||||||
| # @website     http://1x.com/ |  | ||||||
| # @provide-api no |  | ||||||
| # |  | ||||||
| # @using-api   no |  | ||||||
| # @results     HTML |  | ||||||
| # @stable      no (HTML can change) |  | ||||||
| # @parse       url, title, thumbnail, img_src, content |  | ||||||
| 
 | 
 | ||||||
|  |  @website     http://1x.com/ | ||||||
|  |  @provide-api no | ||||||
|  | 
 | ||||||
|  |  @using-api   no | ||||||
|  |  @results     HTML | ||||||
|  |  @stable      no (HTML can change) | ||||||
|  |  @parse       url, title, thumbnail, img_src, content | ||||||
|  | """ | ||||||
| 
 | 
 | ||||||
| from urllib import urlencode | from urllib import urlencode | ||||||
| from urlparse import urljoin | from urlparse import urljoin | ||||||
|  |  | ||||||
|  | @ -1,14 +1,16 @@ | ||||||
| ## 500px (Images) | """ | ||||||
| # |  500px (Images) | ||||||
| # @website     https://500px.com | 
 | ||||||
| # @provide-api yes (https://developers.500px.com/) |  @website     https://500px.com | ||||||
| # |  @provide-api yes (https://developers.500px.com/) | ||||||
| # @using-api   no | 
 | ||||||
| # @results     HTML |  @using-api   no | ||||||
| # @stable      no (HTML can change) |  @results     HTML | ||||||
| # @parse       url, title, thumbnail, img_src, content |  @stable      no (HTML can change) | ||||||
| # |  @parse       url, title, thumbnail, img_src, content | ||||||
| # @todo        rewrite to api | 
 | ||||||
|  |  @todo        rewrite to api | ||||||
|  | """ | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| from urllib import urlencode | from urllib import urlencode | ||||||
|  |  | ||||||
|  | @ -1,4 +1,4 @@ | ||||||
| ## Yacy (Web, Images, Videos, Music, Files) | # Yacy (Web, Images, Videos, Music, Files) | ||||||
| # | # | ||||||
| # @website     http://yacy.net | # @website     http://yacy.net | ||||||
| # @provide-api yes | # @provide-api yes | ||||||
|  |  | ||||||
|  | @ -1,13 +1,15 @@ | ||||||
| ## Yahoo (Web) | """ | ||||||
| # |  Yahoo (Web) | ||||||
| # @website     https://search.yahoo.com/web | 
 | ||||||
| # @provide-api yes (https://developer.yahoo.com/boss/search/), |  @website     https://search.yahoo.com/web | ||||||
| #              $0.80/1000 queries |  @provide-api yes (https://developer.yahoo.com/boss/search/), | ||||||
| # |               $0.80/1000 queries | ||||||
| # @using-api   no (because pricing) | 
 | ||||||
| # @results     HTML (using search portal) |  @using-api   no (because pricing) | ||||||
| # @stable      no (HTML can change) |  @results     HTML (using search portal) | ||||||
| # @parse       url, title, content, suggestion |  @stable      no (HTML can change) | ||||||
|  |  @parse       url, title, content, suggestion | ||||||
|  | """ | ||||||
| 
 | 
 | ||||||
| from urllib import urlencode | from urllib import urlencode | ||||||
| from urlparse import unquote | from urlparse import unquote | ||||||
|  |  | ||||||
|  | @ -1,4 +1,4 @@ | ||||||
| ## Youtube (Videos) | # Youtube (Videos) | ||||||
| # | # | ||||||
| # @website     https://www.youtube.com/ | # @website     https://www.youtube.com/ | ||||||
| # @provide-api yes (http://gdata-samples-youtube-search-py.appspot.com/) | # @provide-api yes (http://gdata-samples-youtube-search-py.appspot.com/) | ||||||
|  | @ -47,7 +47,7 @@ def response(resp): | ||||||
|     search_results = loads(resp.text) |     search_results = loads(resp.text) | ||||||
| 
 | 
 | ||||||
|     # return empty array if there are no results |     # return empty array if there are no results | ||||||
|     if not 'feed' in search_results: |     if 'feed' not in search_results: | ||||||
|         return [] |         return [] | ||||||
| 
 | 
 | ||||||
|     feed = search_results['feed'] |     feed = search_results['feed'] | ||||||
|  |  | ||||||
							
								
								
									
										125
									
								
								versions.cfg
									
										
									
									
									
								
							
							
						
						
									
										125
									
								
								versions.cfg
									
										
									
									
									
								
							|  | @ -2,96 +2,115 @@ | ||||||
| Babel = 1.3 | Babel = 1.3 | ||||||
| Flask = 0.10.1 | Flask = 0.10.1 | ||||||
| Flask-Babel = 0.9 | Flask-Babel = 0.9 | ||||||
| Jinja2 = 2.7.2 | Jinja2 = 2.7.3 | ||||||
| MarkupSafe = 0.18 | MarkupSafe = 0.23 | ||||||
| Pygments = 2.0.1 | Pygments = 2.0.2 | ||||||
| WebOb = 1.3.1 | WebOb = 1.4.1 | ||||||
| WebTest = 2.0.11 | WebTest = 2.0.18 | ||||||
| Werkzeug = 0.9.4 | Werkzeug = 0.10.4 | ||||||
| buildout-versions = 1.7 | buildout-versions = 1.7 | ||||||
| collective.recipe.omelette = 0.16 | collective.recipe.omelette = 0.16 | ||||||
| coverage = 3.7.1 | coverage = 3.7.1 | ||||||
| decorator = 3.4.0 | decorator = 3.4.2 | ||||||
| docutils = 0.11 | docutils = 0.12 | ||||||
| flake8 = 2.1.0 | flake8 = 2.4.0 | ||||||
| itsdangerous = 0.23 | itsdangerous = 0.24 | ||||||
| mccabe = 0.2.1 | mccabe = 0.3 | ||||||
| mock = 1.0.1 | mock = 1.0.1 | ||||||
| pep8 = 1.4.6 | pep8 = 1.5.7 | ||||||
| plone.testing = 4.0.8 | plone.testing = 4.0.13 | ||||||
| pyflakes = 0.7.3 | pyflakes = 0.8.1 | ||||||
| pytz = 2013b | pytz = 2015.2 | ||||||
| pyyaml = 3.10 | pyyaml = 3.11 | ||||||
| requests = 2.5.3 | requests = 2.6.2 | ||||||
| robotframework-debuglibrary = 0.3 | robotframework-debuglibrary = 0.3 | ||||||
| robotframework-httplibrary = 0.4.2 | robotframework-httplibrary = 0.4.2 | ||||||
| robotframework-selenium2library = 1.5.0 | robotframework-selenium2library = 1.6.0 | ||||||
| robotsuite = 1.4.2 | robotsuite = 1.6.1 | ||||||
| selenium = 2.39.0 | selenium = 2.45.0 | ||||||
| speaklater = 1.3 | speaklater = 1.3 | ||||||
| unittest2 = 0.5.1 | unittest2 = 1.0.1 | ||||||
| waitress = 0.8.8 | waitress = 0.8.9 | ||||||
| zc.recipe.testrunner = 2.0.0 | zc.recipe.testrunner = 2.0.0 | ||||||
| pyopenssl = 0.15.1 | pyopenssl = 0.15.1 | ||||||
| ndg-httpsclient = 0.3.3 | ndg-httpsclient = 0.3.3 | ||||||
| pyasn1 = 0.1.7 | pyasn1 = 0.1.7 | ||||||
| pyasn1-modules = 0.0.5 | pyasn1-modules = 0.0.5 | ||||||
| certifi = 14.05.14 | certifi = 2015.04.28 | ||||||
|  | 
 | ||||||
|  | #  | ||||||
|  | cffi = 0.9.2 | ||||||
|  | cryptography = 0.8.2 | ||||||
| 
 | 
 | ||||||
| # Required by: | # Required by: | ||||||
| # WebTest==2.0.11 | # WebTest==2.0.18 | ||||||
| beautifulsoup4 = 4.3.2 | beautifulsoup4 = 4.3.2 | ||||||
| 
 | 
 | ||||||
| # Required by: | # Required by: | ||||||
| # robotframework-httplibrary==0.4.2 | # cryptography==0.8.2 | ||||||
| jsonpatch = 1.3 | enum34 = 1.0.4 | ||||||
| 
 | 
 | ||||||
| # Required by: | # Required by: | ||||||
| # robotframework-httplibrary==0.4.2 | # robotframework-httplibrary==0.4.2 | ||||||
| jsonpointer = 1.1 | jsonpatch = 1.9 | ||||||
| 
 |  | ||||||
| # Required by: |  | ||||||
| # robotsuite==1.4.2 |  | ||||||
| # searx==0.1 |  | ||||||
| lxml = 3.2.5 |  | ||||||
| 
 | 
 | ||||||
| # Required by: | # Required by: | ||||||
| # robotframework-httplibrary==0.4.2 | # robotframework-httplibrary==0.4.2 | ||||||
| robotframework = 2.8.3 | jsonpointer = 1.7 | ||||||
| 
 | 
 | ||||||
| # Required by: | # Required by: | ||||||
| # plone.testing==4.0.8 | # traceback2==1.4.0 | ||||||
| # robotsuite==1.4.2 | linecache2 = 1.0.0 | ||||||
| # searx==0.1 |  | ||||||
| # zope.exceptions==4.0.6 |  | ||||||
| # zope.interface==4.0.5 |  | ||||||
| # zope.testrunner==4.4.1 |  | ||||||
| setuptools = 2.1 |  | ||||||
| 
 | 
 | ||||||
| # Required by: | # Required by: | ||||||
| # zope.testrunner==4.4.1 | # robotsuite==1.6.1 | ||||||
| six = 1.6.1 | # searx==0.7.0 | ||||||
|  | lxml = 3.4.4 | ||||||
|  | 
 | ||||||
|  | # Required by: | ||||||
|  | # cffi==0.9.2 | ||||||
|  | pycparser = 2.12 | ||||||
|  | 
 | ||||||
|  | # Required by: | ||||||
|  | # searx==0.7.0 | ||||||
|  | python-dateutil = 2.4.2 | ||||||
|  | 
 | ||||||
|  | # Required by: | ||||||
|  | # robotframework-httplibrary==0.4.2 | ||||||
|  | robotframework = 2.8.7 | ||||||
|  | 
 | ||||||
|  | # Required by: | ||||||
|  | # searx==0.7.0 | ||||||
|  | # zope.exceptions==4.0.7 | ||||||
|  | # zope.interface==4.1.2 | ||||||
|  | # zope.testrunner==4.4.8 | ||||||
|  | setuptools = 15.2 | ||||||
|  | 
 | ||||||
|  | # Required by: | ||||||
|  | # robotsuite==1.6.1 | ||||||
|  | # zope.testrunner==4.4.8 | ||||||
|  | six = 1.9.0 | ||||||
|  | 
 | ||||||
|  | # Required by: | ||||||
|  | # unittest2==1.0.1 | ||||||
|  | traceback2 = 1.4.0 | ||||||
| 
 | 
 | ||||||
| # Required by: | # Required by: | ||||||
| # collective.recipe.omelette==0.16 | # collective.recipe.omelette==0.16 | ||||||
| zc.recipe.egg = 2.0.1 | zc.recipe.egg = 2.0.1 | ||||||
| 
 | 
 | ||||||
| # Required by: | # Required by: | ||||||
| # zope.testrunner==4.4.1 | # zope.testrunner==4.4.8 | ||||||
| zope.exceptions = 4.0.6 | zope.exceptions = 4.0.7 | ||||||
| 
 | 
 | ||||||
| # Required by: | # Required by: | ||||||
| # zope.testrunner==4.4.1 | # zope.testrunner==4.4.8 | ||||||
| zope.interface = 4.0.5 | zope.interface = 4.1.2 | ||||||
| 
 | 
 | ||||||
| # Required by: | # Required by: | ||||||
| # plone.testing==4.0.8 | # plone.testing==4.0.13 | ||||||
| zope.testing = 4.1.2 | zope.testing = 4.1.3 | ||||||
| 
 | 
 | ||||||
| # Required by: | # Required by: | ||||||
| # zc.recipe.testrunner==2.0.0 | # zc.recipe.testrunner==2.0.0 | ||||||
| zope.testrunner = 4.4.1 | zope.testrunner = 4.4.8 | ||||||
| 
 |  | ||||||
| # Required by: |  | ||||||
| # searx==0.3.0 |  | ||||||
| python-dateutil = 2.2 |  | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		
		Reference in a new issue
	
	 Alexandre Flament
						Alexandre Flament