Merge pull request #2352 from return42/fix-1599
[fix] engine: google play movies
This commit is contained in:
		
						commit
						c0bc8634fd
					
				| @ -1,6 +1,6 @@ | |||||||
| # SPDX-License-Identifier: AGPL-3.0-or-later | # SPDX-License-Identifier: AGPL-3.0-or-later | ||||||
| """ | # lint: pylint | ||||||
|   Google Play Apps | """Google Play Apps & Google Play Movies | ||||||
| """ | """ | ||||||
| 
 | 
 | ||||||
| from urllib.parse import urlencode | from urllib.parse import urlencode | ||||||
| @ -21,22 +21,66 @@ about = { | |||||||
|     "results": "HTML", |     "results": "HTML", | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| categories = ["files", "apps"] |  | ||||||
| send_accept_language_header = True | send_accept_language_header = True | ||||||
| 
 | 
 | ||||||
| search_url = "https://play.google.com/store/search?{query}&c=apps" | play_categ = None  # apps|movies | ||||||
|  | base_url = 'https://play.google.com' | ||||||
|  | search_url = base_url + "/store/search?{query}&c={play_categ}" | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| def request(query, params): | def request(query, params): | ||||||
|     params["url"] = search_url.format(query=urlencode({"q": query})) | 
 | ||||||
|  |     if play_categ not in ('movies', 'apps'): | ||||||
|  |         raise ValueError(f"unknown google play category: {play_categ}") | ||||||
|  | 
 | ||||||
|  |     params["url"] = search_url.format( | ||||||
|  |         query=urlencode({"q": query}), | ||||||
|  |         play_categ=play_categ, | ||||||
|  |     ) | ||||||
|     params['cookies']['CONSENT'] = "YES+" |     params['cookies']['CONSENT'] = "YES+" | ||||||
| 
 | 
 | ||||||
|     return params |     return params | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| def response(resp): | def response(resp): | ||||||
|     results = [] |  | ||||||
| 
 | 
 | ||||||
|  |     if play_categ == 'movies': | ||||||
|  |         return response_movies(resp) | ||||||
|  |     if play_categ == 'apps': | ||||||
|  |         return response_apps(resp) | ||||||
|  |     return [] | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | def response_movies(resp): | ||||||
|  | 
 | ||||||
|  |     results = [] | ||||||
|  |     dom = html.fromstring(resp.text) | ||||||
|  | 
 | ||||||
|  |     for section in eval_xpath(dom, '//c-wiz/section/header/..'): | ||||||
|  |         sec_name = extract_text(eval_xpath(section, './header')) | ||||||
|  |         for item in eval_xpath(section, './/a'): | ||||||
|  |             url = base_url + item.get('href') | ||||||
|  |             div_1, div_2 = eval_xpath(item, './div')[:2] | ||||||
|  |             title = extract_text(eval_xpath(div_2, './div[@title]')) | ||||||
|  |             metadata = extract_text(eval_xpath(div_2, './div[@class]')) | ||||||
|  |             img = eval_xpath(div_1, './/img')[0] | ||||||
|  |             img_src = img.get('src') | ||||||
|  |             results.append( | ||||||
|  |                 { | ||||||
|  |                     "url": url, | ||||||
|  |                     "title": title, | ||||||
|  |                     "content": sec_name, | ||||||
|  |                     "img_src": img_src, | ||||||
|  |                     'metadata': metadata, | ||||||
|  |                     'template': 'videos.html', | ||||||
|  |                 } | ||||||
|  |             ) | ||||||
|  |     return results | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | def response_apps(resp): | ||||||
|  | 
 | ||||||
|  |     results = [] | ||||||
|     dom = html.fromstring(resp.text) |     dom = html.fromstring(resp.text) | ||||||
| 
 | 
 | ||||||
|     if eval_xpath(dom, '//div[@class="v6DsQb"]'): |     if eval_xpath(dom, '//div[@class="v6DsQb"]'): | ||||||
| @ -755,29 +755,18 @@ engines: | |||||||
|     shortcut: gos |     shortcut: gos | ||||||
| 
 | 
 | ||||||
|   - name: google play apps |   - name: google play apps | ||||||
|     engine: google_play_apps |     engine: google_play | ||||||
|  |     categories: [files, apps] | ||||||
|     shortcut: gpa |     shortcut: gpa | ||||||
|  |     play_categ: apps | ||||||
|     disabled: true |     disabled: true | ||||||
| 
 | 
 | ||||||
|   - name: google play movies |   - name: google play movies | ||||||
|     engine: xpath |     engine: google_play | ||||||
|     send_accept_language_header: true |  | ||||||
|     search_url: https://play.google.com/store/search?q={query}&c=movies |  | ||||||
|     results_xpath: '//div[@class="ImZGtf mpg5gc"]' |  | ||||||
|     title_xpath: './/div[@class="RZEgze"]//div[@class="kCSSQe"]//a' |  | ||||||
|     url_xpath: './/div[@class="RZEgze"]//div[@class="kCSSQe"]//a/@href' |  | ||||||
|     content_xpath: './/div[@class="kCSSQe"]' |  | ||||||
|     thumbnail_xpath: './/div[@class="uzcko"]/div/span[1]//img/@data-src' |  | ||||||
|     categories: videos |     categories: videos | ||||||
|     shortcut: gpm |     shortcut: gpm | ||||||
|  |     play_categ: movies | ||||||
|     disabled: true |     disabled: true | ||||||
|     about: |  | ||||||
|       website: https://play.google.com/ |  | ||||||
|       wikidata_id: Q79576 |  | ||||||
|       official_api_documentation: |  | ||||||
|       use_official_api: false |  | ||||||
|       require_api_key: false |  | ||||||
|       results: HTML |  | ||||||
| 
 | 
 | ||||||
|   - name: gpodder |   - name: gpodder | ||||||
|     engine: json_engine |     engine: json_engine | ||||||
|  | |||||||
		Loading…
	
		Reference in New Issue
	
	Block a user