mirror of
https://github.com/thegeneralist01/archivr
synced 2026-05-30 08:36:47 +02:00
Minor clean up
This commit is contained in:
parent
4871ca7da5
commit
63897f6a63
1 changed files with 11 additions and 26 deletions
37
src/main.rs
37
src/main.rs
|
|
@ -83,6 +83,7 @@ enum Source {
|
||||||
Other,
|
Other,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// Returns the tweet ID when `id` is non-empty and contains only ASCII digits.
|
||||||
fn parse_tweet_id(id: &str) -> Option<String> {
|
fn parse_tweet_id(id: &str) -> Option<String> {
|
||||||
if !id.is_empty() && id.chars().all(|char| char.is_ascii_digit()) {
|
if !id.is_empty() && id.chars().all(|char| char.is_ascii_digit()) {
|
||||||
Some(id.to_string())
|
Some(id.to_string())
|
||||||
|
|
@ -91,15 +92,16 @@ fn parse_tweet_id(id: &str) -> Option<String> {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fn tweet_id_from_path(path: &str) -> Option<String> {
|
// TODO: Get rid of this somehow, probably encoding the ID logic into a struct.
|
||||||
path.split(':').next_back().and_then(parse_tweet_id)
|
// TODO: Error handling for inputs?
|
||||||
}
|
fn expand_shorthand_to_url(path: &str, source: &Source) -> String {
|
||||||
|
|
||||||
fn resolve_source_path(path: &str, source: &Source) -> String {
|
|
||||||
if *source == Source::X && path.starts_with("tweet:media:") {
|
if *source == Source::X && path.starts_with("tweet:media:") {
|
||||||
format!(
|
format!(
|
||||||
"https://x.com/i/status/{}",
|
"https://x.com/i/status/{}",
|
||||||
tweet_id_from_path(path).unwrap()
|
path.split(':')
|
||||||
|
.next_back()
|
||||||
|
.and_then(parse_tweet_id)
|
||||||
|
.unwrap()
|
||||||
)
|
)
|
||||||
} else {
|
} else {
|
||||||
path.to_string()
|
path.to_string()
|
||||||
|
|
@ -394,7 +396,7 @@ fn main() -> Result<()> {
|
||||||
}
|
}
|
||||||
|
|
||||||
// Sources, for which yt-dlp is needed
|
// Sources, for which yt-dlp is needed
|
||||||
let path = resolve_source_path(path, &source);
|
let path = expand_shorthand_to_url(path, &source);
|
||||||
let hash = match source {
|
let hash = match source {
|
||||||
Source::YouTubeVideo
|
Source::YouTubeVideo
|
||||||
| Source::X
|
| Source::X
|
||||||
|
|
@ -601,31 +603,14 @@ mod tests {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#[test]
|
|
||||||
fn test_tweet_id_from_path() {
|
|
||||||
assert_eq!(
|
|
||||||
tweet_id_from_path("tweet:1234567890"),
|
|
||||||
Some("1234567890".to_string())
|
|
||||||
);
|
|
||||||
assert_eq!(
|
|
||||||
tweet_id_from_path("tweet:media:1234567890"),
|
|
||||||
Some("1234567890".to_string())
|
|
||||||
);
|
|
||||||
assert_eq!(
|
|
||||||
tweet_id_from_path("x:thread:1234567890"),
|
|
||||||
Some("1234567890".to_string())
|
|
||||||
);
|
|
||||||
assert_eq!(tweet_id_from_path("tweet:not-a-number"), None);
|
|
||||||
}
|
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn test_resolve_source_path() {
|
fn test_resolve_source_path() {
|
||||||
assert_eq!(
|
assert_eq!(
|
||||||
resolve_source_path("tweet:media:1234567890", &Source::X),
|
expand_shorthand_to_url("tweet:media:1234567890", &Source::X),
|
||||||
"https://x.com/i/status/1234567890"
|
"https://x.com/i/status/1234567890"
|
||||||
);
|
);
|
||||||
assert_eq!(
|
assert_eq!(
|
||||||
resolve_source_path("tweet:1234567890", &Source::Tweet),
|
expand_shorthand_to_url("tweet:1234567890", &Source::Tweet),
|
||||||
"tweet:1234567890"
|
"tweet:1234567890"
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue