Update app.py
Browse files
app.py
CHANGED
|
@@ -25,13 +25,12 @@ class StartPayload(BaseModel):
|
|
| 25 |
|
| 26 |
def download_video(anime_id: str, episode: int, quality: str) -> str | None:
|
| 27 |
url = f"{HF_AYANO_BASE}/anime/download?id={anime_id}&episode={episode}&quality={quality}"
|
| 28 |
-
log(f"Fetching link
|
|
|
|
|
|
|
|
|
|
|
|
|
| 29 |
try:
|
| 30 |
-
headers = {
|
| 31 |
-
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36",
|
| 32 |
-
"Referer": "https://animepahe.si/"
|
| 33 |
-
}
|
| 34 |
-
|
| 35 |
resp = requests.get(url, headers=headers, timeout=20)
|
| 36 |
resp.raise_for_status()
|
| 37 |
data = resp.json()
|
|
@@ -39,10 +38,9 @@ def download_video(anime_id: str, episode: int, quality: str) -> str | None:
|
|
| 39 |
return None
|
| 40 |
video_url = data["direct_link"]
|
| 41 |
except:
|
| 42 |
-
log(f"
|
| 43 |
return None
|
| 44 |
|
| 45 |
-
headers = {"User-Agent": "Mozilla/5.0", "Referer": "https://animepahe.si/"}
|
| 46 |
tmp_path = tempfile.mktemp(suffix=".mp4")
|
| 47 |
log(f"Downloading ep {episode} {quality}")
|
| 48 |
try:
|
|
@@ -69,7 +67,7 @@ def upload_to_0x0(file_path: str, file_name: str) -> str:
|
|
| 69 |
r = requests.post(UPLOAD_URL, files={"file": (file_name, f)}, timeout=180)
|
| 70 |
r.raise_for_status()
|
| 71 |
url = r.text.strip()
|
| 72 |
-
log(f"Uploaded
|
| 73 |
return url
|
| 74 |
except Exception as e:
|
| 75 |
log(f"Upload failed: {e}")
|
|
@@ -103,44 +101,35 @@ def blur_video(input_path: str) -> str:
|
|
| 103 |
"-c:v", "libx264", "-preset", "veryfast", "-crf", "23",
|
| 104 |
"-c:a", "copy", output
|
| 105 |
]
|
| 106 |
-
|
| 107 |
-
|
| 108 |
-
return output
|
| 109 |
-
except Exception as e:
|
| 110 |
-
log(f"Blur failed: {e}")
|
| 111 |
-
raise
|
| 112 |
|
| 113 |
def process_anime(anime_id: str, anime_name: str):
|
| 114 |
-
log(f"Started
|
| 115 |
episode = 1
|
| 116 |
while True:
|
| 117 |
-
|
| 118 |
for quality in QUALITIES:
|
| 119 |
try:
|
| 120 |
-
|
| 121 |
-
if not
|
| 122 |
continue
|
| 123 |
-
|
| 124 |
log(f"Blurring ep {episode} {quality}")
|
| 125 |
-
|
| 126 |
-
os.remove(
|
| 127 |
-
|
| 128 |
-
|
| 129 |
-
|
| 130 |
-
|
| 131 |
-
|
| 132 |
-
|
| 133 |
-
episode_processed = True
|
| 134 |
-
|
| 135 |
-
except Exception:
|
| 136 |
notify_render(anime_id, episode, quality, "", "", 3)
|
| 137 |
-
|
| 138 |
-
if not episode_processed:
|
| 139 |
log("No more episodes")
|
| 140 |
notify_render(anime_id, 0, "", "", "", 5)
|
| 141 |
break
|
| 142 |
episode += 1
|
| 143 |
-
log("
|
| 144 |
|
| 145 |
@app.post("/start")
|
| 146 |
def start(payload: StartPayload, bg: BackgroundTasks):
|
|
|
|
| 25 |
|
| 26 |
def download_video(anime_id: str, episode: int, quality: str) -> str | None:
|
| 27 |
url = f"{HF_AYANO_BASE}/anime/download?id={anime_id}&episode={episode}&quality={quality}"
|
| 28 |
+
log(f"Fetching link ep {episode} {quality}")
|
| 29 |
+
headers = {
|
| 30 |
+
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 Chrome/120.0 Safari/537.36",
|
| 31 |
+
"Referer": "https://animepahe.si/"
|
| 32 |
+
}
|
| 33 |
try:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 34 |
resp = requests.get(url, headers=headers, timeout=20)
|
| 35 |
resp.raise_for_status()
|
| 36 |
data = resp.json()
|
|
|
|
| 38 |
return None
|
| 39 |
video_url = data["direct_link"]
|
| 40 |
except:
|
| 41 |
+
log(f"Link failed ep {episode} {quality}")
|
| 42 |
return None
|
| 43 |
|
|
|
|
| 44 |
tmp_path = tempfile.mktemp(suffix=".mp4")
|
| 45 |
log(f"Downloading ep {episode} {quality}")
|
| 46 |
try:
|
|
|
|
| 67 |
r = requests.post(UPLOAD_URL, files={"file": (file_name, f)}, timeout=180)
|
| 68 |
r.raise_for_status()
|
| 69 |
url = r.text.strip()
|
| 70 |
+
log(f"Uploaded: {url}")
|
| 71 |
return url
|
| 72 |
except Exception as e:
|
| 73 |
log(f"Upload failed: {e}")
|
|
|
|
| 101 |
"-c:v", "libx264", "-preset", "veryfast", "-crf", "23",
|
| 102 |
"-c:a", "copy", output
|
| 103 |
]
|
| 104 |
+
subprocess.run(cmd, check=True, stdout=subprocess.DEVNULL, stderr=subprocess.DEVNULL)
|
| 105 |
+
return output
|
|
|
|
|
|
|
|
|
|
|
|
|
| 106 |
|
| 107 |
def process_anime(anime_id: str, anime_name: str):
|
| 108 |
+
log(f"Started {anime_id} - {anime_name}")
|
| 109 |
episode = 1
|
| 110 |
while True:
|
| 111 |
+
processed = False
|
| 112 |
for quality in QUALITIES:
|
| 113 |
try:
|
| 114 |
+
file = download_video(anime_id, episode, quality)
|
| 115 |
+
if not file:
|
| 116 |
continue
|
|
|
|
| 117 |
log(f"Blurring ep {episode} {quality}")
|
| 118 |
+
blurred = blur_video(file)
|
| 119 |
+
os.remove(file)
|
| 120 |
+
name = get_filename(anime_name, episode, quality)
|
| 121 |
+
url = upload_to_0x0(blurred, name)
|
| 122 |
+
os.remove(blurred)
|
| 123 |
+
notify_render(anime_id, episode, quality, url, name, 2)
|
| 124 |
+
processed = True
|
| 125 |
+
except:
|
|
|
|
|
|
|
|
|
|
| 126 |
notify_render(anime_id, episode, quality, "", "", 3)
|
| 127 |
+
if not processed:
|
|
|
|
| 128 |
log("No more episodes")
|
| 129 |
notify_render(anime_id, 0, "", "", "", 5)
|
| 130 |
break
|
| 131 |
episode += 1
|
| 132 |
+
log("Complete")
|
| 133 |
|
| 134 |
@app.post("/start")
|
| 135 |
def start(payload: StartPayload, bg: BackgroundTasks):
|