Logo: adds automatic cleanup of temporary media cover files

This commit is contained in:
李通洲
2025-10-22 13:51:36 +08:00
parent 338b552499
commit c353bf3c96
8 changed files with 30 additions and 1 deletions
+1
View File
@@ -17,6 +17,7 @@ const FFMediaResult* ffDetectMedia(bool saveCover)
ffStrbufInit(&result.url);
ffStrbufInit(&result.status);
ffStrbufInit(&result.cover);
result.removeCoverAfterUse = false;
ffDetectMediaImpl(&result, saveCover);
if(result.song.length == 0 && result.error.length == 0)
+1
View File
@@ -14,6 +14,7 @@ typedef struct FFMediaResult
FFstrbuf url;
FFstrbuf status;
FFstrbuf cover;
bool removeCoverAfterUse;
} FFMediaResult;
const FFMediaResult* ffDetectMedia(bool saveCover);
+3 -1
View File
@@ -44,7 +44,7 @@ static const char* getMediaByMediaRemote(FFMediaResult* result, bool saveCover)
FF_CFTYPE_AUTO_RELEASE CFStringRef ext = UTTypeCopyPreferredTagWithClass(uti, kUTTagClassFilenameExtension);
#pragma clang diagnostic pop
NSString *tmpDir = NSTemporaryDirectory();
NSString *uuid = [[NSUUID UUID] UUIDString];
NSString *uuid = NSUUID.UUID.UUIDString;
NSString *path = [tmpDir stringByAppendingPathComponent:[NSString stringWithFormat:@"ff_%@.%@", uuid, ext ? (__bridge NSString *) ext : @"img"]];
if ([artworkData writeToFile:path atomically:NO])
ffStrbufSetS(&result->cover, path.UTF8String);
@@ -160,5 +160,7 @@ void ffDetectMediaImpl(FFMediaResult* media, bool saveCover)
if (ffStrbufStartsWithIgnCaseS(&media->player, "com."))
ffStrbufSubstrAfter(&media->player, strlen("com.") - 1);
ffStrbufReplaceAllC(&media->player, '.', ' ');
if (media->cover.length > 0)
media->removeCoverAfterUse = true;
}
}
+2
View File
@@ -34,6 +34,8 @@ static const char* getMedia(FFMediaResult* media, bool saveCover)
ffStrbufSetWS(&media->album, result.album);
ffStrbufSetWS(&media->cover, result.cover);
ffStrbufSetStatic(&media->status, result.status);
if (media->cover.length > 0)
media->removeCoverAfterUse = true;
return NULL;
}