Spaces:
Running
Running
Fix shorts: sequential fetch (more reliable), timeout 120s, duongdenworldcup as fallback
Browse files
main.py
CHANGED
|
@@ -164,7 +164,7 @@ def extract_xemlaibongda_video(url):
|
|
| 164 |
# ===== YOUTUBE SHORTS =====
|
| 165 |
def _yt_channel_shorts(channel, count=15):
|
| 166 |
try:
|
| 167 |
-
result=subprocess.run(["yt-dlp","--no-check-certificates","--flat-playlist","--dump-json","--no-download","--playlist-end",str(count),f"https://www.youtube.com/@{channel}/shorts"],capture_output=True,text=True,timeout=
|
| 168 |
videos=[]
|
| 169 |
for line in result.stdout.strip().split('\n'):
|
| 170 |
if not line:continue
|
|
@@ -178,13 +178,14 @@ def _yt_channel_shorts(channel, count=15):
|
|
| 178 |
def scrape_shorts():
|
| 179 |
"""Fetch shorts from @baodantri7941 + @baosuckhoedoisongboyte, sorted newest first"""
|
| 180 |
vids=[]
|
| 181 |
-
|
| 182 |
-
|
| 183 |
-
|
| 184 |
-
|
| 185 |
-
|
| 186 |
-
|
| 187 |
-
|
|
|
|
| 188 |
vids.sort(key=lambda x:x.get("id",""),reverse=True)
|
| 189 |
return vids[:20]
|
| 190 |
def scrape_worldcup_shorts():
|
|
|
|
| 164 |
# ===== YOUTUBE SHORTS =====
|
| 165 |
def _yt_channel_shorts(channel, count=15):
|
| 166 |
try:
|
| 167 |
+
result=subprocess.run(["yt-dlp","--no-check-certificates","--flat-playlist","--dump-json","--no-download","--playlist-end",str(count),f"https://www.youtube.com/@{channel}/shorts"],capture_output=True,text=True,timeout=120)
|
| 168 |
videos=[]
|
| 169 |
for line in result.stdout.strip().split('\n'):
|
| 170 |
if not line:continue
|
|
|
|
| 178 |
def scrape_shorts():
|
| 179 |
"""Fetch shorts from @baodantri7941 + @baosuckhoedoisongboyte, sorted newest first"""
|
| 180 |
vids=[]
|
| 181 |
+
for ch in ["baodantri7941","baosuckhoedoisongboyte"]:
|
| 182 |
+
try:
|
| 183 |
+
r=_yt_channel_shorts(ch,12)
|
| 184 |
+
if r:vids.extend(r)
|
| 185 |
+
except:pass
|
| 186 |
+
if not vids:
|
| 187 |
+
try:vids=_yt_channel_shorts("duongdenworldcup_2026",15)
|
| 188 |
+
except:pass
|
| 189 |
vids.sort(key=lambda x:x.get("id",""),reverse=True)
|
| 190 |
return vids[:20]
|
| 191 |
def scrape_worldcup_shorts():
|