tecuts commited on
Commit
457238a
·
verified ·
1 Parent(s): 1b55f54

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +18 -11
app.py CHANGED
@@ -69,12 +69,12 @@ async def get_track_download_url(track_id: str) -> str:
69
  apis = api_rotator.get_prioritized_apis()
70
  session = cloudscraper.create_scraper() # Requires cloudscraper package
71
  headers = {
72
- "Accept": "application/json",
73
- "Content-Type": "application/json",
74
- "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36"
75
- }
76
-
77
- for api_url in apis:
78
  try:
79
  logger.info(f"Attempting to get download URL from: {api_url}")
80
  y_url = f"https://youtu.be/{track_id}"
@@ -89,17 +89,24 @@ async def get_track_download_url(track_id: str) -> str:
89
 
90
  if response.headers.get('content-type', '').startswith('application/json'):
91
  json_response = response.json()
92
- if json_response.get("error", {}).get("code", "") == "error.api.content.video.unavailable":
93
- break
 
 
 
 
 
 
 
94
 
95
- api_rotator.update_last_successful(apis.index(api_url))
96
- return json_response.get("url")
97
  except Exception as e:
98
  logger.error(f"Failed with {api_url}: {str(e)}")
99
  continue
100
 
101
  logger.error(f"No download URL found")
102
- return {"error":"Download URL not found"}
 
 
103
 
104
 
105
  @app.route('/track_dl', methods=['POST'])
 
69
  apis = api_rotator.get_prioritized_apis()
70
  session = cloudscraper.create_scraper() # Requires cloudscraper package
71
  headers = {
72
+ "Accept": "application/json",
73
+ "Content-Type": "application/json",
74
+ "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36"
75
+ }
76
+
77
+ for i, api_url in enumerate(apis):
78
  try:
79
  logger.info(f"Attempting to get download URL from: {api_url}")
80
  y_url = f"https://youtu.be/{track_id}"
 
89
 
90
  if response.headers.get('content-type', '').startswith('application/json'):
91
  json_response = response.json()
92
+ error_code = json_response.get("error", {}).get("code", "")
93
+
94
+ if error_code == "error.api.content.video.unavailable":
95
+ logger.warning(f"Video unavailable error from {api_url}")
96
+ break # Only break for specific error
97
+
98
+ if "url" in json_response:
99
+ api_rotator.update_last_successful(i)
100
+ return json_response["url"]
101
 
 
 
102
  except Exception as e:
103
  logger.error(f"Failed with {api_url}: {str(e)}")
104
  continue
105
 
106
  logger.error(f"No download URL found")
107
+ return {"error": "Download URL not found"}
108
+
109
+
110
 
111
 
112
  @app.route('/track_dl', methods=['POST'])