| 
									
										
										
										
											2018-04-26 21:42:31 +02:00
										 |  |  | """
 | 
					
						
							|  |  |  |  Acgsou (Japanese Animation/Music/Comics Bittorrent tracker) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |  @website      https://www.acgsou.com/ | 
					
						
							|  |  |  |  @provide-api  no | 
					
						
							|  |  |  |  @using-api    no | 
					
						
							|  |  |  |  @results      HTML | 
					
						
							|  |  |  |  @stable       no (HTML can change) | 
					
						
							|  |  |  |  @parse        url, title, content, seed, leech, torrentfile | 
					
						
							|  |  |  | """
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | from lxml import html | 
					
						
							|  |  |  | from searx.engines.xpath import extract_text | 
					
						
							|  |  |  | from searx.url_utils import urlencode | 
					
						
							|  |  |  | from searx.utils import get_torrent_size, int_or_zero | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | # engine dependent config | 
					
						
							|  |  |  | categories = ['files', 'images', 'videos', 'music'] | 
					
						
							|  |  |  | paging = True | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | # search-url | 
					
						
							| 
									
										
										
										
											2018-05-03 07:34:21 +02:00
										 |  |  | base_url = 'http://www.acgsou.com/' | 
					
						
							| 
									
										
										
										
											2018-04-26 21:42:31 +02:00
										 |  |  | search_url = base_url + 'search.php?{query}&page={offset}' | 
					
						
							|  |  |  | # xpath queries | 
					
						
							|  |  |  | xpath_results = '//table[contains(@class, "list_style table_fixed")]//tr[not(th)]' | 
					
						
							|  |  |  | xpath_category = './/td[2]/a[1]' | 
					
						
							|  |  |  | xpath_title = './/td[3]/a[last()]' | 
					
						
							|  |  |  | xpath_torrent_links = './/td[3]/a' | 
					
						
							|  |  |  | xpath_filesize = './/td[4]/text()' | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-04-27 07:29:17 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-04-26 21:42:31 +02:00
										 |  |  | def request(query, params): | 
					
						
							|  |  |  |     query = urlencode({'keyword': query}) | 
					
						
							|  |  |  |     params['url'] = search_url.format(query=query, offset=params['pageno']) | 
					
						
							|  |  |  |     return params | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-04-27 07:29:17 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-04-26 21:42:31 +02:00
										 |  |  | def response(resp): | 
					
						
							| 
									
										
										
										
											2018-04-27 07:36:11 +02:00
										 |  |  |     results = [] | 
					
						
							| 
									
										
										
										
											2018-04-26 21:42:31 +02:00
										 |  |  |     dom = html.fromstring(resp.text) | 
					
						
							| 
									
										
										
										
											2018-04-27 07:29:17 +02:00
										 |  |  |     for result in dom.xpath(xpath_results): | 
					
						
							| 
									
										
										
										
											2018-04-26 21:42:31 +02:00
										 |  |  |         # defaults | 
					
						
							|  |  |  |         filesize = 0 | 
					
						
							|  |  |  |         magnet_link = "magnet:?xt=urn:btih:{}&tr=http://tracker.acgsou.com:2710/announce" | 
					
						
							|  |  |  |         torrent_link = "" | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         try: | 
					
						
							|  |  |  |             category = extract_text(result.xpath(xpath_category)[0]) | 
					
						
							|  |  |  |         except: | 
					
						
							|  |  |  |             pass | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         page_a = result.xpath(xpath_title)[0] | 
					
						
							|  |  |  |         title = extract_text(page_a) | 
					
						
							|  |  |  |         href = base_url + page_a.attrib.get('href') | 
					
						
							| 
									
										
										
										
											2018-04-27 07:23:58 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-04-26 21:42:31 +02:00
										 |  |  |         magnet_link = magnet_link.format(page_a.attrib.get('href')[5:-5]) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         try: | 
					
						
							|  |  |  |             filesize_info = result.xpath(xpath_filesize)[0] | 
					
						
							|  |  |  |             filesize = filesize_info[:-2] | 
					
						
							|  |  |  |             filesize_multiplier = filesize_info[-2:] | 
					
						
							|  |  |  |             filesize = get_torrent_size(filesize, filesize_multiplier) | 
					
						
							| 
									
										
										
										
											2018-04-27 07:29:17 +02:00
										 |  |  |         except: | 
					
						
							| 
									
										
										
										
											2018-04-26 21:42:31 +02:00
										 |  |  |             pass | 
					
						
							| 
									
										
										
										
											2018-04-27 14:36:15 +02:00
										 |  |  |         # I didn't add download/seed/leech count since as I figured out they are generated randomly everytime | 
					
						
							| 
									
										
										
										
											2018-05-05 22:41:13 +02:00
										 |  |  |         content = u'Category: "{category}".' | 
					
						
							| 
									
										
										
										
											2018-04-26 21:42:31 +02:00
										 |  |  |         content = content.format(category=category) | 
					
						
							| 
									
										
										
										
											2018-04-27 07:29:17 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-04-26 21:42:31 +02:00
										 |  |  |         results.append({'url': href, | 
					
						
							|  |  |  |                         'title': title, | 
					
						
							|  |  |  |                         'content': content, | 
					
						
							|  |  |  |                         'filesize': filesize, | 
					
						
							|  |  |  |                         'magnetlink': magnet_link, | 
					
						
							|  |  |  |                         'template': 'torrent.html'}) | 
					
						
							|  |  |  |     return results |