mirror of
				https://github.com/searxng/searxng.git
				synced 2025-10-31 02:27:06 -04:00 
			
		
		
		
	Merge pull request #504 from kvch/frinkiac-engine
Simpson screenshot search engine
This commit is contained in:
		
						commit
						4a0ccabefa
					
				
							
								
								
									
										44
									
								
								searx/engines/frinkiac.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										44
									
								
								searx/engines/frinkiac.py
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,44 @@ | |||||||
|  | """ | ||||||
|  | Frinkiac (Images) | ||||||
|  | 
 | ||||||
|  | @website     https://www.frinkiac.com | ||||||
|  | @provide-api no | ||||||
|  | @using-api   no | ||||||
|  | @results     JSON | ||||||
|  | @stable      no | ||||||
|  | @parse       url, title, img_src | ||||||
|  | """ | ||||||
|  | 
 | ||||||
|  | from json import loads | ||||||
|  | from urllib import urlencode | ||||||
|  | 
 | ||||||
|  | categories = ['images'] | ||||||
|  | 
 | ||||||
|  | BASE = 'https://frinkiac.com/' | ||||||
|  | SEARCH_URL = '{base}api/search?{query}' | ||||||
|  | RESULT_URL = '{base}?{query}' | ||||||
|  | THUMB_URL = '{base}img/{episode}/{timestamp}/medium.jpg' | ||||||
|  | IMAGE_URL = '{base}img/{episode}/{timestamp}.jpg' | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | def request(query, params): | ||||||
|  |     params['url'] = SEARCH_URL.format(base=BASE, query=urlencode({'q': query})) | ||||||
|  |     return params | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | def response(resp): | ||||||
|  |     results = [] | ||||||
|  |     response_data = loads(resp.text) | ||||||
|  |     for result in response_data: | ||||||
|  |         episode = result['Episode'] | ||||||
|  |         timestamp = result['Timestamp'] | ||||||
|  | 
 | ||||||
|  |         results.append({'template': 'images.html', | ||||||
|  |                         'url': RESULT_URL.format(base=BASE, | ||||||
|  |                                                  query=urlencode({'p': 'caption', 'e': episode, 't': timestamp})), | ||||||
|  |                         'title': episode, | ||||||
|  |                         'content': '', | ||||||
|  |                         'thumbnail_src': THUMB_URL.format(base=BASE, episode=episode, timestamp=timestamp), | ||||||
|  |                         'img_src': IMAGE_URL.format(base=BASE, episode=episode, timestamp=timestamp)}) | ||||||
|  | 
 | ||||||
|  |     return results | ||||||
| @ -110,6 +110,11 @@ engines: | |||||||
| # Or you can use the html non-stable engine, activated by default | # Or you can use the html non-stable engine, activated by default | ||||||
|     engine : flickr_noapi |     engine : flickr_noapi | ||||||
| 
 | 
 | ||||||
|  |   - name : frinkiac | ||||||
|  |     engine : frinkiac | ||||||
|  |     shortcut : frk | ||||||
|  |     disabled : True | ||||||
|  | 
 | ||||||
|   - name : gigablast |   - name : gigablast | ||||||
|     engine : gigablast |     engine : gigablast | ||||||
|     shortcut : gb |     shortcut : gb | ||||||
|  | |||||||
							
								
								
									
										49
									
								
								tests/unit/engines/test_frinkiac.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										49
									
								
								tests/unit/engines/test_frinkiac.py
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,49 @@ | |||||||
|  | # -*- coding: utf-8 -*- | ||||||
|  | from collections import defaultdict | ||||||
|  | import mock | ||||||
|  | from json import dumps | ||||||
|  | from searx.engines import frinkiac | ||||||
|  | from searx.testing import SearxTestCase | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | class TestFrinkiacEngine(SearxTestCase): | ||||||
|  | 
 | ||||||
|  |     def test_request(self): | ||||||
|  |         query = 'test_query' | ||||||
|  |         request_dict = defaultdict(dict) | ||||||
|  |         params = frinkiac.request(query, request_dict) | ||||||
|  |         self.assertTrue('url' in params) | ||||||
|  | 
 | ||||||
|  |     def test_response(self): | ||||||
|  |         self.assertRaises(AttributeError, frinkiac.response, None) | ||||||
|  |         self.assertRaises(AttributeError, frinkiac.response, []) | ||||||
|  |         self.assertRaises(AttributeError, frinkiac.response, '') | ||||||
|  |         self.assertRaises(AttributeError, frinkiac.response, '[]') | ||||||
|  | 
 | ||||||
|  |         text = """ | ||||||
|  | [{"Id":770931, | ||||||
|  |   "Episode":"S06E18", | ||||||
|  |   "Timestamp":534616, | ||||||
|  |   "Filename":""}, | ||||||
|  |  {"Id":1657080, | ||||||
|  |   "Episode":"S12E14", | ||||||
|  |   "Timestamp":910868, | ||||||
|  |   "Filename":""}, | ||||||
|  |  {"Id":1943753, | ||||||
|  |   "Episode":"S14E21", | ||||||
|  |   "Timestamp":773439, | ||||||
|  |   "Filename":""}, | ||||||
|  |  {"Id":107835, | ||||||
|  |   "Episode":"S02E03", | ||||||
|  |   "Timestamp":531709, | ||||||
|  |   "Filename":""}] | ||||||
|  |         """ | ||||||
|  | 
 | ||||||
|  |         response = mock.Mock(text=text) | ||||||
|  |         results = frinkiac.response(response) | ||||||
|  |         self.assertEqual(type(results), list) | ||||||
|  |         self.assertEqual(len(results), 4) | ||||||
|  |         self.assertEqual(results[0]['title'], u'S06E18') | ||||||
|  |         self.assertEqual(results[0]['url'], 'https://frinkiac.com/?p=caption&e=S06E18&t=534616') | ||||||
|  |         self.assertEqual(results[0]['thumbnail_src'], 'https://frinkiac.com/img/S06E18/534616/medium.jpg') | ||||||
|  |         self.assertEqual(results[0]['img_src'], 'https://frinkiac.com/img/S06E18/534616.jpg') | ||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user