mirror of
https://github.com/lifegpc/pixiv_downloader.git
synced 2026-07-08 01:32:41 +08:00
Fix broken pd file will cause PdFile::open failed
This commit is contained in:
@@ -556,6 +556,17 @@ async fn test_downloader() {
|
||||
}
|
||||
let url = "https://i.pximg.net/img-original/img/2022/06/12/23/49/43/99014872_p0.png";
|
||||
let pb = p.join("99014872_p0.png");
|
||||
{
|
||||
let mut file_name = pb.file_name().unwrap().to_owned();
|
||||
file_name.push(".pd");
|
||||
let mut pdf = pb.clone();
|
||||
pdf.set_file_name(file_name);
|
||||
if pdf.exists() {
|
||||
remove_file(&pdf).unwrap();
|
||||
}
|
||||
LocalFile::create(&pdf).unwrap();
|
||||
assert!(pdf.exists());
|
||||
}
|
||||
let downloader = Downloader::<LocalFile>::new(
|
||||
url,
|
||||
json::object! {"referer": "https://www.pixiv.net/"},
|
||||
|
||||
@@ -229,11 +229,26 @@ impl PdFile {
|
||||
pb.set_file_name(&file_name);
|
||||
if p.exists() {
|
||||
if pb.exists() {
|
||||
let f = Self::read_from_file(p)?;
|
||||
if f.is_completed() {
|
||||
return Ok(PdFileResult::TargetExisted);
|
||||
match Self::read_from_file(p) {
|
||||
Ok(f) => {
|
||||
if f.is_completed() {
|
||||
return Ok(PdFileResult::TargetExisted);
|
||||
}
|
||||
Ok(PdFileResult::ExistedOk(f))
|
||||
}
|
||||
Err(_) => {
|
||||
remove_file(p)?;
|
||||
let f = PdFile::new();
|
||||
f.open_with_create_file(&pb)?;
|
||||
f.set_file_name(
|
||||
p.file_name()
|
||||
.try_err(gettext("Path need have a file name."))?
|
||||
.to_str()
|
||||
.unwrap_or("(null)"),
|
||||
)?;
|
||||
Ok(PdFileResult::Ok(f))
|
||||
}
|
||||
}
|
||||
Ok(PdFileResult::ExistedOk(f))
|
||||
} else {
|
||||
Ok(PdFileResult::TargetExisted)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user