mirror of
https://github.com/Xinrea/bili-shadowreplay.git
synced 2025-11-25 04:22:24 +08:00
feat: segment with query param (#219)
* bump version to 2.16.1 * fix: read segment with params
This commit is contained in:
@@ -1,7 +1,7 @@
|
|||||||
{
|
{
|
||||||
"name": "bili-shadowreplay",
|
"name": "bili-shadowreplay",
|
||||||
"private": true,
|
"private": true,
|
||||||
"version": "2.16.0",
|
"version": "2.16.1",
|
||||||
"type": "module",
|
"type": "module",
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"dev": "vite",
|
"dev": "vite",
|
||||||
|
|||||||
2
src-tauri/Cargo.lock
generated
2
src-tauri/Cargo.lock
generated
@@ -541,7 +541,7 @@ checksum = "55248b47b0caf0546f7988906588779981c43bb1bc9d0c44087278f80cdb44ba"
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "bili-shadowreplay"
|
name = "bili-shadowreplay"
|
||||||
version = "2.16.0"
|
version = "2.16.1"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"async-ffmpeg-sidecar 0.0.1",
|
"async-ffmpeg-sidecar 0.0.1",
|
||||||
"async-std",
|
"async-std",
|
||||||
|
|||||||
@@ -4,7 +4,7 @@ resolver = "2"
|
|||||||
|
|
||||||
[package]
|
[package]
|
||||||
name = "bili-shadowreplay"
|
name = "bili-shadowreplay"
|
||||||
version = "2.16.0"
|
version = "2.16.1"
|
||||||
description = "BiliBili ShadowReplay"
|
description = "BiliBili ShadowReplay"
|
||||||
authors = ["Xinrea"]
|
authors = ["Xinrea"]
|
||||||
license = ""
|
license = ""
|
||||||
|
|||||||
@@ -69,21 +69,32 @@ pub async fn playlist_to_video(
|
|||||||
if !output_folder.exists() {
|
if !output_folder.exists() {
|
||||||
std::fs::create_dir_all(output_folder).unwrap();
|
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 {
|
if let Some(header_url) = header_url {
|
||||||
let header_data = tokio::fs::read(playlist_folder.join(header_url))
|
let header_data = tokio::fs::read(playlist_folder.join(header_url))
|
||||||
.await
|
.await
|
||||||
.unwrap();
|
.map_err(|e| format!("Failed to read header file: {}", e))?;
|
||||||
file.write_all(&header_data).await.unwrap();
|
file.write_all(&header_data)
|
||||||
|
.await
|
||||||
|
.map_err(|e| format!("Failed to write header file: {}", e))?;
|
||||||
}
|
}
|
||||||
for s in segments {
|
for s in segments {
|
||||||
// read segment
|
// read segment
|
||||||
let segment_file_path = playlist_folder.join(s.uri);
|
let uri = s.uri.split('?').next().unwrap_or(&s.uri);
|
||||||
let segment_data = tokio::fs::read(&segment_file_path).await.unwrap();
|
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
|
// 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
|
// transcode copy to fix timestamp
|
||||||
|
|||||||
Reference in New Issue
Block a user