VLCMDFBrowsingArtworkProvider.m 4.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148
  1. /*****************************************************************************
  2. * VLC for iOS
  3. *****************************************************************************
  4. * Copyright (c) 2015 VideoLAN. All rights reserved.
  5. * $Id$
  6. *
  7. * Authors: Felix Paul Kühne <fkuehne # videolan.org>
  8. *
  9. * Refer to the COPYING file of the official project for license.
  10. *****************************************************************************/
  11. #import "VLCMDFBrowsingArtworkProvider.h"
  12. #import "MetaDataFetcherKit.h"
  13. @interface VLCMDFBrowsingArtworkProvider () <MDFMovieDBFetcherDataRecipient>
  14. {
  15. MDFMovieDBFetcher *_tmdbFetcher;
  16. }
  17. @end
  18. @implementation VLCMDFBrowsingArtworkProvider
  19. - (void)reset
  20. {
  21. if (_tmdbFetcher) {
  22. [_tmdbFetcher cancelAllRequests];
  23. } else {
  24. _tmdbFetcher = [[MDFMovieDBFetcher alloc] init];
  25. _tmdbFetcher.dataRecipient = self;
  26. _tmdbFetcher.shouldDecrapifyInputStrings = YES;
  27. }
  28. }
  29. - (void)setSearchForAudioMetadata:(BOOL)searchForAudioMetadata
  30. {
  31. NSLog(@"there is currently no audio metadata fetcher :-(");
  32. }
  33. - (void)searchForArtworkForVideoRelatedString:(NSString *)string
  34. {
  35. [_tmdbFetcher searchForMovie:string];
  36. }
  37. #pragma mark - MDFMovieDB
  38. - (void)MDFMovieDBFetcher:(MDFMovieDBFetcher *)aFetcher didFindMovie:(MDFMovie *)details forSearchRequest:(NSString *)searchRequest
  39. {
  40. if (details == nil) {
  41. return;
  42. }
  43. [aFetcher cancelAllRequests];
  44. MDFMovieDBSessionManager *sessionManager = [MDFMovieDBSessionManager sharedInstance];
  45. if (!sessionManager.hasFetchedProperties) {
  46. return;
  47. }
  48. if (details.movieDBID == 0) {
  49. /* we found nothing, let's see if it's a TV show */
  50. [_tmdbFetcher searchForTVShow:searchRequest];
  51. return;
  52. }
  53. NSString *imagePath = details.posterPath;
  54. NSArray *sizes = sessionManager.posterSizes;
  55. NSString *imageSize;
  56. if (sizes != nil) {
  57. NSUInteger count = sizes.count;
  58. if (count > 1) {
  59. imageSize = sizes[1];
  60. } else if (count > 0) {
  61. imageSize = sizes.firstObject;
  62. }
  63. }
  64. if (!imagePath) {
  65. imagePath = details.backdropPath;
  66. sizes = sessionManager.backdropSizes;
  67. if (sizes != nil && sizes.count > 0) {
  68. imageSize = sizes.firstObject;
  69. }
  70. }
  71. if (!imagePath) {
  72. return;
  73. }
  74. NSString *thumbnailURLString = [NSString stringWithFormat:@"%@%@%@",
  75. sessionManager.imageBaseURL,
  76. imageSize,
  77. imagePath];
  78. self.artworkReceiver.thumbnailURL = [NSURL URLWithString:thumbnailURLString];
  79. }
  80. - (void)MDFMovieDBFetcher:(MDFMovieDBFetcher *)aFetcher didFailToFindMovieForSearchRequest:(NSString *)searchRequest
  81. {
  82. APLog(@"Failed to find a movie for '%@'", searchRequest);
  83. }
  84. - (void)MDFMovieDBFetcher:(MDFMovieDBFetcher *)aFetcher didFindTVShow:(MDFTVShow *)details forSearchRequest:(NSString *)searchRequest
  85. {
  86. if (details == nil) {
  87. return;
  88. }
  89. [aFetcher cancelAllRequests];
  90. MDFMovieDBSessionManager *sessionManager = [MDFMovieDBSessionManager sharedInstance];
  91. if (!sessionManager.hasFetchedProperties)
  92. return;
  93. NSString *imagePath = details.posterPath;
  94. NSArray *sizes = sessionManager.posterSizes;
  95. NSString *imageSize;
  96. if (sizes != nil) {
  97. NSUInteger count = sizes.count;
  98. if (count > 1) {
  99. imageSize = sizes[1];
  100. } else if (count > 0) {
  101. imageSize = sizes.firstObject;
  102. }
  103. }
  104. if (!imagePath) {
  105. imagePath = details.backdropPath;
  106. sizes = sessionManager.backdropSizes;
  107. if (sizes != nil && sizes.count > 0) {
  108. imageSize = sizes.firstObject;
  109. }
  110. }
  111. if (!imagePath) {
  112. return;
  113. }
  114. NSString *thumbnailURLString = [NSString stringWithFormat:@"%@%@%@",
  115. sessionManager.imageBaseURL,
  116. imageSize,
  117. imagePath];
  118. self.artworkReceiver.thumbnailURL = [NSURL URLWithString:thumbnailURLString];
  119. }
  120. - (void)MDFMovieDBFetcher:(MDFMovieDBFetcher *)aFetcher didFailToFindTVShowForSearchRequest:(NSString *)searchRequest
  121. {
  122. APLog(@"failed to find TV show");
  123. }
  124. @end