Eliminate duplicate media
This commit is contained in:
parent
8614de9959
commit
23ae001590
|
@ -42,17 +42,35 @@
|
||||||
|
|
||||||
- (void)addMediaURL:(NSURL *)url name:(NSString *)name date:(NSDate *)date
|
- (void)addMediaURL:(NSURL *)url name:(NSString *)name date:(NSDate *)date
|
||||||
{
|
{
|
||||||
NSManagedObjectContext *moc = [self managedObjectContext];
|
NSString * path = [url path];
|
||||||
MAMedia * media = [NSEntityDescription insertNewObjectForEntityForName:@"MAMedia" inManagedObjectContext:moc];
|
NSNumber * size;
|
||||||
NSString * path = [url path];
|
|
||||||
NSNumber * size;
|
|
||||||
[url getResourceValue:&size forKey:NSURLFileSizeKey error:nil];
|
[url getResourceValue:&size forKey:NSURLFileSizeKey error:nil];
|
||||||
|
int64_t fileSize = [size longLongValue];
|
||||||
|
NSTimeInterval fileDate = [date timeIntervalSinceReferenceDate];
|
||||||
|
|
||||||
|
NSManagedObjectContext *moc = [self managedObjectContext];
|
||||||
|
MAMedia * media = nil;
|
||||||
|
//
|
||||||
|
// Look for existing file with same name, file size, and (preferably) date first.
|
||||||
|
// Since the date may be parsed from the file name (and subject to a later fix),
|
||||||
|
// we tolerate mismatches.
|
||||||
|
//
|
||||||
|
NSFetchRequest * fetch = [NSFetchRequest fetchRequestWithEntityName:@"MAMedia"];
|
||||||
|
[fetch setPredicate:[NSPredicate predicateWithFormat:@"name == %@", name]];
|
||||||
|
for (MAMedia * m in [moc executeFetchRequest:fetch error:nil])
|
||||||
|
if (m.size == fileSize) {
|
||||||
|
media = m;
|
||||||
|
if (m.date == fileDate)
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
if (!media) {
|
||||||
|
media = [NSEntityDescription insertNewObjectForEntityForName:@"MAMedia" inManagedObjectContext:moc];
|
||||||
|
media.size = fileSize;
|
||||||
|
media.name = name;
|
||||||
|
media.notes = @"";
|
||||||
|
}
|
||||||
|
media.date = fileDate;
|
||||||
media.media = path;
|
media.media = path;
|
||||||
media.date = [date timeIntervalSinceReferenceDate];
|
|
||||||
media.name = name;
|
|
||||||
media.notes = @"";
|
|
||||||
media.size = size ? [size longLongValue] : 0;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#pragma mark Annotation management
|
#pragma mark Annotation management
|
||||||
|
|
Loading…
Reference in New Issue
Block a user