Show
Ignore:
Timestamp:
02/23/2010 04:51:22 PM (2 years ago)
Author:
gbooker
Message:

Better handle files without extensions and preserve the lookup name better.
Fixes #283

Files:
1 modified

Legend:

Unmodified
Added
Removed
  • branches/PlayerFramework/SapphireFrappliance/MetaDataImporting/SapphireMovieImporter.m

    r1146 r1165  
    3232#import "SapphireURLLoader.h" 
    3333#import "SapphireScraper.h" 
     34#import "NSString-Extensions.h" 
    3435 
    3536@interface SapphireMovieImportStateData : SapphireImportStateData 
     
    157158                SapphireFileMetaData *metaData = state->file; 
    158159                NSManagedObjectContext *moc = [metaData managedObjectContext]; 
    159                 NSString *lookupName = [[state->lookupName lowercaseString] stringByDeletingPathExtension]; 
    160                 SapphireMovieTranslation *tran = [SapphireMovieTranslation createMovieTranslationWithName:lookupName inContext:moc]; 
     160                SapphireMovieTranslation *tran = [SapphireMovieTranslation createMovieTranslationWithName:state->lookupName inContext:moc]; 
    161161                [tran setIMDBLink:[[movies objectAtIndex:0] objectForKey:movieTranslationLinkKey]]; 
    162162                [self getMovieResultsForState:state translation:tran]; 
     
    167167                SapphireMovieChooser *chooser = [[SapphireMovieChooser alloc] initWithScene:[delegate chooserScene]]; 
    168168                [chooser setMovies:movies]; 
    169                 [chooser setFileName:state->lookupName];                 
     169                [chooser setFileName:[NSString stringByCroppingDirectoryPath:state->path toLength:3]]; 
    170170                [chooser setListTitle:BRLocalizedString(@"Select Movie Title", @"Prompt the user for title of movie")]; 
    171171                /*And display prompt*/ 
     
    265265                [infoIMDB setObject:movieTitle forKey:META_MOVIE_TITLE_KEY]; 
    266266         
    267         NSString *movieTranslationString = [[state->lookupName lowercaseString] stringByDeletingPathExtension]; 
    268267        SapphireFileMetaData *metaData = state->file; 
    269268        NSManagedObjectContext *moc = [metaData managedObjectContext]; 
    270         SapphireMovieTranslation *tran = [SapphireMovieTranslation movieTranslationWithName:movieTranslationString inContext:moc]; 
     269        SapphireMovieTranslation *tran = [SapphireMovieTranslation movieTranslationWithName:state->lookupName inContext:moc]; 
    271270        SapphireMovie *movie = [SapphireMovie movieWithDictionary:infoIMDB inContext:moc]; 
    272271        if(movie == nil) 
     
    342341                { 
    343342                        [posterChooser setPosters:previews]; 
    344                         [posterChooser setFileName:state->lookupName]; 
     343                        [posterChooser setFileName:[NSString stringByCroppingDirectoryPath:state->path toLength:3]]; 
    345344                        [posterChooser setFile:state->file]; 
    346345                        [posterChooser setListTitle:BRLocalizedString(@"Select Movie Poster", @"Prompt the user for poster selection")]; 
     
    430429                return ImportStateNotUpdated; 
    431430        SapphireLog(SAPPHIRE_LOG_IMPORT, SAPPHIRE_LOG_LEVEL_DEBUG, @"Going to movie import %@", path); 
    432         NSString *fileName = [path lastPathComponent]; 
     431        NSString *extLessPath = path; 
     432        if([metaData fileContainerTypeValue] != FILE_CONTAINER_TYPE_VIDEO_TS) 
     433                extLessPath = [extLessPath stringByDeletingPathExtension]; 
     434         
    433435        /*choose between file or directory name for lookup */ 
    434436        NSString *lookupName; 
    435437        if([[SapphireSettings sharedSettings] dirLookup]) 
    436                 lookupName = [[path stringByDeletingLastPathComponent] lastPathComponent]; 
    437         else 
    438                 lookupName = fileName; 
     438                lookupName = [[[path stringByDeletingLastPathComponent] lastPathComponent] lowercaseString]; 
     439        else 
     440                lookupName = [[extLessPath lastPathComponent] lowercaseString]; 
    439441         
    440442        SapphireSiteMovieScraper *siteScraper = [[[SapphireSiteMovieScraper alloc] initWithMovieScraper:scraper delegate:self loader:[SapphireApplianceController urlLoader]] autorelease]; 
     
    444446        NSString *movieDataLink = nil ; 
    445447        /*Check to see if we know this movie*/ 
    446         NSString *movieTranslationString = [[lookupName lowercaseString] stringByDeletingPathExtension]; 
    447         SapphireLog(SAPPHIRE_LOG_IMPORT, SAPPHIRE_LOG_LEVEL_DETAIL, @"Searching for movie %@", movieTranslationString); 
     448        SapphireLog(SAPPHIRE_LOG_IMPORT, SAPPHIRE_LOG_LEVEL_DETAIL, @"Searching for movie %@", state->lookupName); 
    448449        NSManagedObjectContext *moc = [metaData managedObjectContext]; 
    449         SapphireMovieTranslation *tran = [SapphireMovieTranslation movieTranslationWithName:movieTranslationString inContext:moc]; 
     450        SapphireMovieTranslation *tran = [SapphireMovieTranslation movieTranslationWithName:state->lookupName inContext:moc]; 
    450451        int searchIMDBNumber = [metaData searchIMDBNumber]; 
    451452        if(searchIMDBNumber > 0) 
    452453        { 
    453454                if(!tran) 
    454                         tran = [SapphireMovieTranslation createMovieTranslationWithName:movieTranslationString inContext:moc]; 
     455                        tran = [SapphireMovieTranslation createMovieTranslationWithName:state->lookupName inContext:moc]; 
    455456                [tran setIMDBLink:[NSString stringWithFormat:@"/title/tt%08d", searchIMDBNumber]]; 
    456457        } 
     
    458459        { 
    459460                BOOL nfoPathIsDir = NO; 
    460                 NSString *nfoFilePath=[[path stringByDeletingPathExtension] stringByAppendingPathExtension:@"nfo"]; 
     461                NSString *nfoFilePath=[extLessPath stringByAppendingPathExtension:@"nfo"]; 
    461462                NSString *moviePath = nil; 
    462463                if([[NSFileManager defaultManager] fileExistsAtPath:nfoFilePath isDirectory:&nfoPathIsDir] && !nfoPathIsDir) 
     
    472473                         
    473474                        /*Look for a year in the title*/ 
    474                         NSString *searchStr = [lookupName stringByDeletingPathExtension]; 
    475                         NSScanner *titleYearScanner = [NSScanner scannerWithString:searchStr]; 
     475                        NSScanner *titleYearScanner = [NSScanner scannerWithString:state->lookupName]; 
    476476                        NSString *normalTitle = nil; 
    477477                        int year = 0; 
     
    486486                        if(!success) 
    487487                        { 
    488                                 normalTitle = searchStr; 
     488                                normalTitle = state->lookupName; 
    489489                        } 
    490490                        else 
     
    537537                SapphireMovieChooser *movieChooser = (SapphireMovieChooser *)chooser; 
    538538                NSManagedObjectContext *moc = [state->file managedObjectContext]; 
    539                 NSString *filename = [[[movieChooser fileName] lowercaseString] stringByDeletingPathExtension]; 
    540                 SapphireMovieTranslation *tran = [SapphireMovieTranslation movieTranslationWithName:filename inContext:moc]; 
     539                SapphireMovieTranslation *tran = [SapphireMovieTranslation movieTranslationWithName:state->lookupName inContext:moc]; 
    541540                if([tran IMDBLink]) 
    542541                { 
     
    548547        { 
    549548                SapphirePosterChooser *posterChooser = (SapphirePosterChooser *)chooser; 
    550                 NSString *filename = [[[posterChooser fileName] lowercaseString] stringByDeletingPathExtension]; 
    551549                NSManagedObjectContext *moc = [state->file managedObjectContext]; 
    552                 SapphireMovieTranslation *tran = [SapphireMovieTranslation movieTranslationWithName:filename inContext:moc]; 
     550                SapphireMovieTranslation *tran = [SapphireMovieTranslation movieTranslationWithName:state->lookupName inContext:moc]; 
    553551                if([[tran selectedPoster] link]) 
    554552                { 
     
    585583                        /*They selected a movie title, save the translation and write it*/ 
    586584                        NSDictionary *movie = [[movieChooser movies] objectAtIndex:selection]; 
    587                         NSString *filename = [[[movieChooser fileName] lowercaseString] stringByDeletingPathExtension]; 
    588                         SapphireMovieTranslation *tran = [SapphireMovieTranslation createMovieTranslationWithName:filename inContext:moc]; 
     585                        SapphireMovieTranslation *tran = [SapphireMovieTranslation createMovieTranslationWithName:state->lookupName inContext:moc]; 
    589586                        /* Add IMDB Key */ 
    590587                        [tran setIMDBLink:[movie objectForKey:movieTranslationLinkKey]]; 
     
    605602                else 
    606603                { 
    607                         NSString *filename = [[[posterChooser fileName] lowercaseString] stringByDeletingPathExtension]; 
    608                         SapphireMovieTranslation *tran = [SapphireMovieTranslation createMovieTranslationWithName:filename inContext:moc]; 
     604                        SapphireMovieTranslation *tran = [SapphireMovieTranslation createMovieTranslationWithName:state->lookupName inContext:moc]; 
    609605                        [tran setSelectedPosterIndexValue:selectedPoster]; 
    610606                        [self saveMoviePosterAtURL:[[tran posterAtIndex:selectedPoster] link] forTranslation:tran];