-
Notifications
You must be signed in to change notification settings - Fork 0
/
SSImportScanOperation.m
77 lines (58 loc) · 2.48 KB
/
SSImportScanOperation.m
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
//
// SSImportScanOperation.m
// technicolor-file-importer
//
// Created by Steve Streza on 11/2/08.
// Copyright 2008 __MyCompanyName__. All rights reserved.
//
#import "SSImportScanOperation.h"
#import "TCTVShow.h"
#import "TCTVEpisode.h"
#import "TCVideoFile.h"
@implementation SSImportScanOperation
@synthesize sourcePath;
#define IsDSStore(__nm) ([(__nm) isEqualToString:@".DS_Store"])
-(void)run{
NSFileManager *fm = [NSFileManager defaultManager];
NSArray *shows = [fm directoryContentsAtPath:self.sourcePath];
for(NSString *showName in shows){
if(IsDSStore(showName)) continue;
TCTVShow *show = [TCTVShow showWithName:showName];
NSString *showPath = [self.sourcePath stringByAppendingPathComponent:showName];
NSArray *seasons = [fm directoryContentsAtPath:showPath];
for(NSString *seasonName in seasons){
if(IsDSStore(seasonName)) continue;
NSString *seasonPath = [showPath stringByAppendingPathComponent:seasonName];
NSArray *episodes = [fm directoryContentsAtPath:seasonPath];
for(NSString *episodeInfo in episodes){
if(IsDSStore(episodeInfo)) continue;
NSUInteger seasonNumber = 0;
NSUInteger episodeNumber = 0;
NSString * title = nil;
if([self parseName:episodeInfo
withSeasonNumber:&seasonNumber
episodeNumber:&episodeNumber
title:&title]){
TCTVEpisode *episode = [TCTVEpisode showVideoWithEpisodeName:title
season:seasonNumber
episodeNumber:episodeNumber
show:show];
NSLog(@"Adding season %i episode %i named %@ of show %@",seasonNumber, episodeNumber, title, showName);
NSString *filePath = [seasonPath stringByAppendingPathComponent:episodeInfo];
TCVideoFile *videoFile = [TCVideoFile videoFileForPath:filePath];
[episode addFile:videoFile];
}
}
}
}
}
-(BOOL)parseName:(NSString *)name withSeasonNumber:(NSUInteger *)seasonNumber episodeNumber:(NSUInteger *)episodeNumber title:(NSString **)title{
NSRange infoSplit = [name rangeOfString:@" - "];
if(infoSplit.location == NSNotFound) return NO;
NSString *episodeInfo = [name substringToIndex:infoSplit.location];
*seasonNumber = (NSUInteger)([[episodeInfo substringToIndex: episodeInfo.length - 2] intValue]);
*episodeNumber = (NSUInteger)([[episodeInfo substringFromIndex:episodeInfo.length - 2] intValue]);
*title = [[name substringFromIndex:infoSplit.location + infoSplit.length] stringByDeletingPathExtension];
return YES;
}
@end