feat: segment with query param (#219)

* bump version to 2.16.1

* fix: read segment with params
This commit is contained in:
Xinrea
2025-11-04 23:00:34 +08:00
committed by GitHub
parent 6127c67cd3
commit cf439d60c4
4 changed files with 21 additions and 10 deletions

View File

@@ -1,7 +1,7 @@
{
"name": "bili-shadowreplay",
"private": true,
"version": "2.16.0",
"version": "2.16.1",
"type": "module",
"scripts": {
"dev": "vite",

2
src-tauri/Cargo.lock generated
View File

@@ -541,7 +541,7 @@ checksum = "55248b47b0caf0546f7988906588779981c43bb1bc9d0c44087278f80cdb44ba"
[[package]]
name = "bili-shadowreplay"
version = "2.16.0"
version = "2.16.1"
dependencies = [
"async-ffmpeg-sidecar 0.0.1",
"async-std",

View File

@@ -4,7 +4,7 @@ resolver = "2"
[package]
name = "bili-shadowreplay"
version = "2.16.0"
version = "2.16.1"
description = "BiliBili ShadowReplay"
authors = ["Xinrea"]
license = ""

View File

@@ -69,21 +69,32 @@ pub async fn playlist_to_video(
if !output_folder.exists() {
std::fs::create_dir_all(output_folder).unwrap();
}
let mut file = tokio::fs::File::create(&output_path).await.unwrap();
let mut file = tokio::fs::File::create(&output_path)
.await
.map_err(|e| format!("Failed to create output file: {}", e))?;
if let Some(header_url) = header_url {
let header_data = tokio::fs::read(playlist_folder.join(header_url))
.await
.unwrap();
file.write_all(&header_data).await.unwrap();
.map_err(|e| format!("Failed to read header file: {}", e))?;
file.write_all(&header_data)
.await
.map_err(|e| format!("Failed to write header file: {}", e))?;
}
for s in segments {
// read segment
let segment_file_path = playlist_folder.join(s.uri);
let segment_data = tokio::fs::read(&segment_file_path).await.unwrap();
let uri = s.uri.split('?').next().unwrap_or(&s.uri);
let segment_file_path = playlist_folder.join(uri);
let segment_data = tokio::fs::read(&segment_file_path)
.await
.map_err(|e| format!("Failed to read segment file: {}", e))?;
// append segment data to clip_file
file.write_all(&segment_data).await.unwrap();
file.write_all(&segment_data)
.await
.map_err(|e| format!("Failed to write segment file: {}", e))?;
}
file.flush().await.unwrap();
file.flush()
.await
.map_err(|e| format!("Failed to flush file: {}", e))?;
}
// transcode copy to fix timestamp