feat: download using range params
This commit is contained in:
parent
3efe08088c
commit
3c05929e89
12 changed files with 1724 additions and 62 deletions
19
src/util.rs
19
src/util.rs
|
|
@ -1,5 +1,9 @@
|
|||
use std::collections::BTreeMap;
|
||||
|
||||
use fancy_regex::Regex;
|
||||
use rand::Rng;
|
||||
use anyhow::Result;
|
||||
use url::Url;
|
||||
|
||||
const CONTENT_PLAYBACK_NONCE_ALPHABET: &[u8; 64] =
|
||||
b"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_";
|
||||
|
|
@ -15,7 +19,7 @@ where
|
|||
}
|
||||
|
||||
/// Generates a random string with given length and byte charset.
|
||||
pub fn random_string(charset: &[u8], length: usize) -> String {
|
||||
fn random_string(charset: &[u8], length: usize) -> String {
|
||||
let mut result = String::with_capacity(length);
|
||||
let mut rng = rand::thread_rng();
|
||||
|
||||
|
|
@ -34,6 +38,15 @@ pub fn generate_content_playback_nonce() -> String {
|
|||
random_string(CONTENT_PLAYBACK_NONCE_ALPHABET, 16)
|
||||
}
|
||||
|
||||
pub fn generate_t_parameter() -> String {
|
||||
random_string(CONTENT_PLAYBACK_NONCE_ALPHABET, 12)
|
||||
pub fn url_to_params(url: &str) -> Result<(String, BTreeMap<String, String>)> {
|
||||
let parsed_url = Url::parse(url)?;
|
||||
let url_params: BTreeMap<String, String> = parsed_url
|
||||
.query_pairs()
|
||||
.map(|(k, v)| (k.to_string(), v.to_string()))
|
||||
.collect();
|
||||
|
||||
let mut url_base = parsed_url.clone();
|
||||
url_base.set_query(None);
|
||||
|
||||
Ok((url_base.to_string(), url_params))
|
||||
}
|
||||
|
|
|
|||
Reference in a new issue