Neon-AI commited on
Commit
f0f79ad
·
verified ·
1 Parent(s): 2949759

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +32 -13
app.py CHANGED
@@ -23,14 +23,20 @@ class StartPayload(BaseModel):
23
  anime_id: str
24
 
25
  def download_video(anime_id: str, episode: int, quality: str) -> str | None:
26
- """Downloads video from Ayano API. Returns local path or None if episode doesn't exist."""
27
  url = f"{HF_AYANO_BASE}/anime/download?id={anime_id}&episode={episode}&quality={quality}"
28
  resp = requests.get(url)
29
  if resp.status_code != 200:
30
  return None
31
  data = resp.json()
 
 
 
 
 
 
32
  if data.get("status") != 200:
33
- return None # Episode or quality unavailable
34
 
35
  video_url = data["direct_link"]
36
  tmp_path = tempfile.mktemp(suffix=".mp4")
@@ -68,27 +74,40 @@ def notify_render(anime_id: str, episode: int, quality: str, url: str, filename:
68
  except Exception as e:
69
  print("Failed to notify Render:", e)
70
 
71
- def process_anime(anime_id: str):
72
- """Background task: iterates episodes and qualities, uploads, notifies."""
73
  episode = 1
74
  while True:
75
- episode_completed = False
76
  for quality in QUALITIES:
77
  try:
78
- local_file = download_video(anime_id, episode, quality)
79
- if not local_file:
 
 
80
  continue
81
 
82
- new_name = rename_file(local_file, anime_id, episode, quality)
83
- catbox_url = upload_to_catbox_public(local_file, new_name)
84
- notify_render(anime_id, episode, quality, catbox_url, new_name, code=2) # success
 
85
  os.remove(local_file)
86
- episode_completed = True
 
 
 
 
 
 
 
 
 
 
87
  except Exception as e:
88
  print(f"Error ep {episode} quality {quality}: {e}")
89
- notify_render(anime_id, episode, quality, "", "", code=5) # incomplete
90
 
91
- if not episode_completed:
 
92
  break
93
  episode += 1
94
 
 
23
  anime_id: str
24
 
25
  def download_video(anime_id: str, episode: int, quality: str) -> str | None:
26
+ """Downloads video from Ayano API. Returns local path or None if episode/quality unavailable."""
27
  url = f"{HF_AYANO_BASE}/anime/download?id={anime_id}&episode={episode}&quality={quality}"
28
  resp = requests.get(url)
29
  if resp.status_code != 200:
30
  return None
31
  data = resp.json()
32
+
33
+ # Stop entirely if episode number exceeds available count
34
+ if data.get("status") == 422:
35
+ raise EpisodeExceedsAvailableCount(f"Episode {episode} exceeds available count")
36
+
37
+ # Skip if quality is missing
38
  if data.get("status") != 200:
39
+ return None
40
 
41
  video_url = data["direct_link"]
42
  tmp_path = tempfile.mktemp(suffix=".mp4")
 
74
  except Exception as e:
75
  print("Failed to notify Render:", e)
76
 
77
+ def process_anime(anime_id: str, anime_name: str):
 
78
  episode = 1
79
  while True:
80
+ episode_processed = False
81
  for quality in QUALITIES:
82
  try:
83
+ # Download returns None if episode/quality unavailable
84
+ result = download_video(anime_id, episode, quality)
85
+ if result is None:
86
+ # If the API explicitly says episode exceeds count
87
  continue
88
 
89
+ local_file = result
90
+
91
+ # Blur + watermark
92
+ blurred_file = blur_video(local_file)
93
  os.remove(local_file)
94
+
95
+ new_name = rename_file(blurred_file, anime_name, episode, quality)
96
+ catbox_url = upload_to_catbox_public(blurred_file, new_name)
97
+ os.remove(blurred_file)
98
+
99
+ notify_render(anime_id, episode, quality, catbox_url, new_name, code=2)
100
+ episode_processed = True
101
+
102
+ except EpisodeExceedsAvailableCount:
103
+ # Stop the outer loop entirely if the episode doesn't exist
104
+ return
105
  except Exception as e:
106
  print(f"Error ep {episode} quality {quality}: {e}")
107
+ notify_render(anime_id, episode, quality, "", "", code=5)
108
 
109
+ if not episode_processed:
110
+ # No qualities were processed → stop
111
  break
112
  episode += 1
113