-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathrelease_apk.py
71 lines (63 loc) · 2.61 KB
/
release_apk.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
import os
import re
import requests
GITHUB_REPO = "monefiera/Origin-Twitter"
GITHUB_TOKEN = os.environ.get("GITHUB_TOKEN")
GITHUB_API = f"https://api.github.com/repos/{GITHUB_REPO}/releases"
APK_DIR = "patched_apks"
DOWNLOAD_DIR = "downloads"
# 1. Get version and release ID from downloaded APK
def extract_version_and_release_id():
for apk_name in os.listdir(DOWNLOAD_DIR):
match = re.search(r"twitter-piko-v?(\d+\.\d+\.\d+)-release\.(\d+)\.apk", apk_name)
if match:
version, release_id = match.groups()
print(f"Detected APK Version: {version}, Release ID: {release_id}")
return version, release_id
print("Error: Unable to extract version and release ID.")
return None, None
# 2. Create a new release on GitHub
def create_github_release(version, release_id):
headers = {"Authorization": f"token {GITHUB_TOKEN}"}
data = {
"tag_name": f"{version}-release.{release_id}",
"name": f"Origin Twitter v{version}-release.{release_id}",
"body": f"Auto-generated release: Origin Twitter version {version}-release.{release_id}.",
"draft": False,
"prerelease": False
}
response = requests.post(GITHUB_API, json=data, headers=headers)
if response.status_code == 201:
release_info = response.json()
print(f"GitHub Release created: {release_info['html_url']}")
return release_info["id"], release_info["upload_url"].split("{")[0]
else:
print(f"Failed to create release: {response.text}")
return None, None
# 3. Upload APK
def upload_apk_to_github(release_id, upload_url, apk_path):
headers = {
"Authorization": f"token {GITHUB_TOKEN}",
"Content-Type": "application/vnd.android.package-archive"
}
file_name = os.path.basename(apk_path)
with open(apk_path, "rb") as apk_file:
response = requests.post(f"{upload_url}?name={file_name}", headers=headers, data=apk_file)
if response.status_code == 201:
print(f"Successfully uploaded {file_name}")
else:
print(f"Failed to upload {file_name}: {response.text}")
# 4. Execution of all processes
def release_apks():
version, release_id = extract_version_and_release_id()
if not version or not release_id:
return
github_release_id, upload_url = create_github_release(version, release_id)
if not github_release_id:
return
for apk_file in os.listdir(APK_DIR):
if apk_file.endswith(".apk"):
apk_path = os.path.join(APK_DIR, apk_file)
upload_apk_to_github(github_release_id, upload_url, apk_path)
if __name__ == "__main__":
release_apks()