Created
September 30, 2023 15:32
-
-
Save thejpster/977f144e01f4acd8db460df3efbf0803 to your computer and use it in GitHub Desktop.
Tweet Media Fixer
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
fn main() -> Result<(), anyhow::Error> { | |
println!("Hello, world!"); | |
let f = std::fs::File::open("mytweets.json")?; | |
let bf = std::io::BufReader::new(f); | |
println!("Parsing..."); | |
let all_tweets: Vec<serde_json::Value> = serde_json::from_reader(bf)?; | |
println!("Got {} items", all_tweets.len()); | |
let mut tweet_info = Vec::new(); | |
for item in all_tweets { | |
let tweet = &item["tweet"]; | |
// Thu May 05 09:08:32 +0000 2022 | |
let dtraw = tweet["created_at"].as_str().unwrap(); | |
let tweet_id = tweet["id"].as_str().unwrap().to_owned(); | |
let Ok(dt) = chrono::DateTime::parse_from_str(dtraw, "%a %b %e %T %z %Y") else { | |
println!("Bad date {:?}", tweet["created_at"]); | |
continue; | |
}; | |
tweet_info.push((dt, tweet_id)); | |
} | |
tweet_info.sort_by_key(|item| item.0); | |
for tweet in tweet_info { | |
println!("{tweet:?}"); | |
let glob_str = format!("../data/tweets_media/{}-*.*", tweet.1); | |
for entry in glob::glob(&glob_str).unwrap() { | |
let entry = entry.unwrap(); | |
println!("Setting {} to {}", entry.display(), tweet.0); | |
filetime::set_file_mtime(entry, filetime::FileTime::from_unix_time(tweet.0.timestamp(), tweet.0.timestamp_subsec_nanos())).unwrap(); | |
} | |
} | |
Ok(()) | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment