Selaa lähdekoodia

Thumbnail cache: expand internal API so we can also ask for artwork based on meta data in addition to MLFiles

Felix Paul Kühne 11 vuotta sitten
vanhempi
commit
9283b79955
2 muutettua tiedostoa jossa 23 lisäystä ja 10 poistoa
  1. 2 0
      Sources/VLCThumbnailsCache.h
  2. 21 10
      Sources/VLCThumbnailsCache.m

+ 2 - 0
Sources/VLCThumbnailsCache.h

@@ -17,4 +17,6 @@
 
 + (UIImage *)thumbnailForMediaFile:(MLFile *)mediaFile;
 
++ (UIImage *)thumbnailForMediaItemWithTitle:(NSString *)title Artist:(NSString*)artist andAlbumName:(NSString*)albumname;
+
 @end

+ 21 - 10
Sources/VLCThumbnailsCache.m

@@ -43,31 +43,42 @@ static NSCache *_thumbnailCache;
     return [NSString stringWithString:output];
 }
 
-+ (NSString *)_getArtworkPathFromMedia:(MLFile *)file
++ (UIImage *)thumbnailForMediaItemWithTitle:(NSString *)title Artist:(NSString*)artist andAlbumName:(NSString*)albumname
 {
-    NSString *artworkURL, *artist, *album, *title;
-
-    if (file.isAlbumTrack) {
-        artist = file.albumTrack.artist;
-        album = file.albumTrack.album.name;
-    }
-    title = file.title;
+    return [UIImage imageWithContentsOfFile:[self artworkPathForMediaItemWithTitle:title Artist:artist andAlbumName:albumname]];
+}
 
++ (NSString *)artworkPathForMediaItemWithTitle:(NSString *)title Artist:(NSString*)artist andAlbumName:(NSString*)albumname
+{
+    NSString *artworkURL;
     NSArray *searchPaths = NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES);
     NSString *cacheDir = searchPaths[0];
     cacheDir = [cacheDir stringByAppendingFormat:@"/%@", [[NSBundle mainBundle] bundleIdentifier]];
 
-    if (artist.length == 0 || album.length == 0) {
+    if (artist.length == 0 || albumname.length == 0) {
         /* Use generated hash to find art */
         artworkURL = [cacheDir stringByAppendingFormat:@"/art/arturl/%@/art.jpg", [self _md5FromString:title]];
     } else {
         /* Otherwise, it was cached by artist and album */
-        artworkURL = [cacheDir stringByAppendingFormat:@"/art/artistalbum/%@/%@/art.jpg", artist, album];
+        artworkURL = [cacheDir stringByAppendingFormat:@"/art/artistalbum/%@/%@/art.jpg", artist, albumname];
     }
 
     return artworkURL;
 }
 
++ (NSString *)_getArtworkPathFromMedia:(MLFile *)file
+{
+    NSString *artist, *album, *title;
+
+    if (file.isAlbumTrack) {
+        artist = file.albumTrack.artist;
+        album = file.albumTrack.album.name;
+    }
+    title = file.title;
+
+    return [self artworkPathForMediaItemWithTitle:title Artist:artist andAlbumName:album];
+}
+
 + (UIImage *)thumbnailForMediaFile:(MLFile *)mediaFile
 {
     if (mediaFile == nil || mediaFile.objectID == nil)