mirror of
https://github.com/sotam0316/docker-py-revanced.git
synced 2026-04-25 03:48:37 +09:00
✨ Scrap icon from apkmirror if not found on Playstore
This commit is contained in:
@@ -3,7 +3,14 @@ name: Check for new Revanced apps
|
|||||||
on:
|
on:
|
||||||
schedule:
|
schedule:
|
||||||
- cron: "0 0 * * *"
|
- cron: "0 0 * * *"
|
||||||
|
push:
|
||||||
workflow_dispatch:
|
workflow_dispatch:
|
||||||
|
inputs:
|
||||||
|
CREATE_ISSUE:
|
||||||
|
description: "Create GitHub issue"
|
||||||
|
required: false
|
||||||
|
type: boolean
|
||||||
|
default: false
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
status_check:
|
status_check:
|
||||||
@@ -33,9 +40,18 @@ jobs:
|
|||||||
id: status
|
id: status
|
||||||
|
|
||||||
- name: Update Check
|
- name: Update Check
|
||||||
run: echo "${{ steps.status.outputs.changelog }}"
|
run: |
|
||||||
|
run: echo "${{ steps.status.outputs.changelog }}"
|
||||||
|
|
||||||
|
- name: Upload status file
|
||||||
|
uses: actions/upload-artifact@main
|
||||||
|
with:
|
||||||
|
name: issue_body.md
|
||||||
|
path: status.md
|
||||||
|
if-no-files-found: error
|
||||||
|
|
||||||
- name: Create Issue Action
|
- name: Create Issue Action
|
||||||
|
if: inputs.CREATE_ISSUE
|
||||||
uses: nashmaniac/create-issue-action@v1.2
|
uses: nashmaniac/create-issue-action@v1.2
|
||||||
with:
|
with:
|
||||||
title: Revanced apps Status
|
title: Revanced apps Status
|
||||||
|
|||||||
@@ -8,3 +8,4 @@ venv
|
|||||||
changelog.md
|
changelog.md
|
||||||
.idea
|
.idea
|
||||||
*.json
|
*.json
|
||||||
|
status.md
|
||||||
|
|||||||
+52
-4
@@ -1,8 +1,12 @@
|
|||||||
"""Status check."""
|
"""Status check."""
|
||||||
|
import json
|
||||||
|
import re
|
||||||
from typing import List
|
from typing import List
|
||||||
|
|
||||||
import requests
|
import requests
|
||||||
|
from bs4 import BeautifulSoup
|
||||||
from google_play_scraper import app as gplay_app
|
from google_play_scraper import app as gplay_app
|
||||||
|
from google_play_scraper.exceptions import GooglePlayScraperException
|
||||||
|
|
||||||
from src.patches import Patches
|
from src.patches import Patches
|
||||||
from src.utils import handle_response
|
from src.utils import handle_response
|
||||||
@@ -10,6 +14,46 @@ from src.utils import handle_response
|
|||||||
not_found_icon = "https://img.icons8.com/bubbles/500/android-os.png"
|
not_found_icon = "https://img.icons8.com/bubbles/500/android-os.png"
|
||||||
|
|
||||||
|
|
||||||
|
def apkmirror_scrapper(package_name: str) -> str:
|
||||||
|
"""Apkmirror URL."""
|
||||||
|
apk_mirror_base_url = "https://www.apkmirror.com"
|
||||||
|
check_if_exist = f"{apk_mirror_base_url}/wp-json/apkm/v1/app_exists/"
|
||||||
|
body = {"pnames": [package_name]}
|
||||||
|
check_header = {
|
||||||
|
"User-Agent": "APKUpdater-v" + "3.0.1",
|
||||||
|
"Authorization": "Basic YXBpLWFwa3VwZGF0ZXI6cm01cmNmcnVVakt5MDRzTXB5TVBKWFc4",
|
||||||
|
"Content-Type": "application/json",
|
||||||
|
}
|
||||||
|
response = json.loads(
|
||||||
|
requests.post(
|
||||||
|
check_if_exist, data=json.dumps(body), headers=check_header
|
||||||
|
).content
|
||||||
|
)
|
||||||
|
if response["data"][0]["exists"]:
|
||||||
|
headers = {
|
||||||
|
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) "
|
||||||
|
"AppleWebKit/537.36 (KHTML, like Gecko)"
|
||||||
|
" Chrome/96.0.4664.93 Safari/537.36"
|
||||||
|
}
|
||||||
|
search_url = f"{apk_mirror_base_url}/?s={package_name}"
|
||||||
|
r = requests.get(search_url, headers=headers)
|
||||||
|
soup = BeautifulSoup(r.text, "html.parser")
|
||||||
|
sub_url = soup.select_one("div.bubble-wrap > img")["src"]
|
||||||
|
new_width = 500
|
||||||
|
new_height = 500
|
||||||
|
new_quality = 100
|
||||||
|
|
||||||
|
# regular expression pattern to match w=xx&h=xx&q=xx
|
||||||
|
pattern = r"(w=\d+&h=\d+&q=\d+)"
|
||||||
|
|
||||||
|
# Replace the matched patterns with the new dimensions and q value
|
||||||
|
apk_mirror_url = apk_mirror_base_url + re.sub(
|
||||||
|
pattern, f"w={new_width}&h={new_height}&q={new_quality}", sub_url
|
||||||
|
)
|
||||||
|
return apk_mirror_url
|
||||||
|
return not_found_icon
|
||||||
|
|
||||||
|
|
||||||
def gplay_icon_scrapper(package_name: str) -> str:
|
def gplay_icon_scrapper(package_name: str) -> str:
|
||||||
"""Scrap Icon from Gplay."""
|
"""Scrap Icon from Gplay."""
|
||||||
# noinspection PyBroadException
|
# noinspection PyBroadException
|
||||||
@@ -17,9 +61,11 @@ def gplay_icon_scrapper(package_name: str) -> str:
|
|||||||
result = gplay_app(
|
result = gplay_app(
|
||||||
package_name,
|
package_name,
|
||||||
)
|
)
|
||||||
if not result["icon"]:
|
if result["icon"]:
|
||||||
raise ValueError()
|
return str(result["icon"])
|
||||||
return str(result["icon"])
|
raise GooglePlayScraperException()
|
||||||
|
except GooglePlayScraperException:
|
||||||
|
return apkmirror_scrapper(package_name)
|
||||||
except Exception:
|
except Exception:
|
||||||
return not_found_icon
|
return not_found_icon
|
||||||
|
|
||||||
@@ -57,7 +103,7 @@ def main() -> None:
|
|||||||
possible_apps.add(compatible_package["name"])
|
possible_apps.add(compatible_package["name"])
|
||||||
|
|
||||||
supported_app = set(Patches.support_app().keys())
|
supported_app = set(Patches.support_app().keys())
|
||||||
missing_support = possible_apps.difference(supported_app)
|
missing_support = sorted(possible_apps.difference(supported_app))
|
||||||
output = "New app found which aren't supported or outdated.\n\n"
|
output = "New app found which aren't supported or outdated.\n\n"
|
||||||
data = []
|
data = []
|
||||||
for index, app in enumerate(missing_support):
|
for index, app in enumerate(missing_support):
|
||||||
@@ -72,6 +118,8 @@ def main() -> None:
|
|||||||
)
|
)
|
||||||
table = generate_markdown_table(data)
|
table = generate_markdown_table(data)
|
||||||
output += table
|
output += table
|
||||||
|
with open("status.md", "w", encoding="utf_8") as status:
|
||||||
|
status.write(output)
|
||||||
print(output)
|
print(output)
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user