Download full images with proper extensions
This commit is contained in:
parent
801745a198
commit
9226015fcc
13
src/main.rs
13
src/main.rs
|
@ -16,6 +16,8 @@ use parse::{CreateArgs, Command, DownloadArgs};
|
||||||
use ::protobuf::Message;
|
use ::protobuf::Message;
|
||||||
use sanitise_file_name::sanitise_with_options;
|
use sanitise_file_name::sanitise_with_options;
|
||||||
|
|
||||||
|
use crate::protobuf::image::Format;
|
||||||
|
|
||||||
fn trim_url<'a>(base_url: &str, url: &'a str) -> Option<&'a str> {
|
fn trim_url<'a>(base_url: &str, url: &'a str) -> Option<&'a str> {
|
||||||
if url.starts_with(base_url) {
|
if url.starts_with(base_url) {
|
||||||
let shortened = url
|
let shortened = url
|
||||||
|
@ -199,7 +201,14 @@ fn download(server: &str, args: DownloadArgs) {
|
||||||
.unwrap_or(Cow::Borrowed("Unnamed-Album".as_ref())));
|
.unwrap_or(Cow::Borrowed("Unnamed-Album".as_ref())));
|
||||||
fs::create_dir_all(&dest_dir).expect("Failed to create destination directory");
|
fs::create_dir_all(&dest_dir).expect("Failed to create destination directory");
|
||||||
for (indx, image) in index.images.into_iter().enumerate() {
|
for (indx, image) in index.images.into_iter().enumerate() {
|
||||||
let path = dest_dir.join(format!("{indx:03}.webp"));
|
let extension = image.format.enum_value().map(|f| match f {
|
||||||
|
Format::PNG => "png",
|
||||||
|
Format::WEBP => "webp",
|
||||||
|
Format::AVIF => "avif",
|
||||||
|
Format::JPG => "jpg",
|
||||||
|
Format::GIF => "gif",
|
||||||
|
}).unwrap_or(".unk");
|
||||||
|
let path = dest_dir.join(format!("{indx:03}.{extension}"));
|
||||||
let mut dest_file = OpenOptions::new()
|
let mut dest_file = OpenOptions::new()
|
||||||
.write(true)
|
.write(true)
|
||||||
.truncate(true)
|
.truncate(true)
|
||||||
|
@ -209,7 +218,7 @@ fn download(server: &str, args: DownloadArgs) {
|
||||||
let key = image.key.try_into().expect("Invalid key size");
|
let key = image.key.try_into().expect("Invalid key size");
|
||||||
let encrypted_thumbnail = upload::get_data(
|
let encrypted_thumbnail = upload::get_data(
|
||||||
&download_agent,
|
&download_agent,
|
||||||
&format!("{}/{}.bin", server, image.thumb_url),
|
&format!("{}/{}.bin", server, image.full_url),
|
||||||
7680_000,
|
7680_000,
|
||||||
&mut download_buffer
|
&mut download_buffer
|
||||||
).expect("Failed to retrieve image data");
|
).expect("Failed to retrieve image data");
|
||||||
|
|
Loading…
Reference in a new issue