fix: integrate yt-dlp for Bilibili/SoundCloud/TikTok fallbacks; fix Bilibili BV ID regex; fix stdout pipe buffer truncation (Stdio::piped); fix duplicate comment lines
Deploy Scraper / build-and-deploy (push) Canceled after 0s

This commit is contained in:
asepharyana
2026-09-01 13:47:36 +07:00
parent fb33b67a29
commit dd490535fc
+4 -4
View File
@@ -1174,7 +1174,7 @@ pub async fn fetch_bilibili(url: &str) -> Result<DownloadResult, ScrapingError>
result.media.push(MediaItem { result.media.push(MediaItem {
url: url.unwrap().to_string(), url: url.unwrap().to_string(),
quality: fmt.get("format_note").and_then(|v| v.as_str()).map(|s| s.to_string()) quality: fmt.get("format_note").and_then(|v| v.as_str()).map(|s| s.to_string())
.or_else(|| fmt.get("height").and_then(|v| v.as_u64()).map(|h| format!("{}p", h))), .or_else(|| fmt.get("height").and_then(|v| v.as_str()).map(|s| s.to_string())),
file_type: fmt.get("vcodec").and_then(|v| v.as_str()).filter(|s| !s.is_empty() && *s != "none") file_type: fmt.get("vcodec").and_then(|v| v.as_str()).filter(|s| !s.is_empty() && *s != "none")
.map(|_| MediaType::Video), .map(|_| MediaType::Video),
extension: fmt.get("ext").and_then(|v| v.as_str()).map(|s| s.to_string()), extension: fmt.get("ext").and_then(|v| v.as_str()).map(|s| s.to_string()),
@@ -1195,10 +1195,10 @@ pub async fn fetch_bilibili(url: &str) -> Result<DownloadResult, ScrapingError>
// ============================================================================ // ============================================================================
// SoundCloud downloader // SoundCloud downloader
// ============================================================================ // ============================================================================
// ============================================================================
pub async fn fetch_soundcloud(url: &str) -> Result<DownloadResult, ScrapingError> { pub async fn fetch_soundcloud(url: &str) -> Result<DownloadResult, ScrapingError> {
let data = run_ytdlp_json(url, &["--extract-audio", "--audio-format", "mp3"]).await?; // yt-dlp --extract-audio requires a download; use --dump-json for direct URL
let data = run_ytdlp_json(url, &[]).await?;
let title = data.get("title").and_then(|v| v.as_str()).map(|s| s.to_string()); let title = data.get("title").and_then(|v| v.as_str()).map(|s| s.to_string());
let author = data.get("uploader").and_then(|v| v.as_str()).map(|s| s.to_string()); let author = data.get("uploader").and_then(|v| v.as_str()).map(|s| s.to_string());
@@ -2037,7 +2037,7 @@ pub async fn fetch_mediafire(url: &str) -> Result<DownloadResult, ScrapingError>
USER_AGENT, USER_AGENT,
"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36",
) )
.header("accept", "text/html") .header("accept", "text/html,application/xhtml+xml")
.timeout(Duration::from_secs(20)) .timeout(Duration::from_secs(20))
.send() .send()
.await .await