Index: SapphireMetaData.h
===================================================================
--- SapphireMetaData.h	(revision 520)
+++ SapphireMetaData.h	(working copy)
@@ -862,7 +862,7 @@
  *
  * @return The file size
  */
-- (long long)size;
+- (unsigned long long)size;
 
 /*!
  * @brief Returns the file's duration in seconds
Index: SapphireMetaData.m
===================================================================
--- SapphireMetaData.m	(revision 520)
+++ SapphireMetaData.m	(working copy)
@@ -1611,6 +1611,29 @@
 	[self combinedDataChanged];	
 }
 
+/*!
+ *
+ */
+static id totalFileSize(NSString *path, NSDictionary *props)
+{
+    unsigned long long size = [[props objectForKey:NSFileSize] unsignedLongLongValue];
+
+	/* Our file may be a directory containing VIDEO_TS */
+    if( [props objectForKey:NSFileType] == NSFileTypeDirectory )
+    {
+        NSDirectoryEnumerator *enumerator = [[NSFileManager defaultManager] enumeratorAtPath:path];
+        NSString *content;
+        
+        while( content = [enumerator nextObject] )
+        {
+			NSDictionary *subprops = [[NSFileManager defaultManager] fileAttributesAtPath:[path stringByAppendingPathComponent:content] traverseLink:NO];
+			size += [[subprops objectForKey:NSFileSize] unsignedLongLongValue];
+        }
+    }
+    
+    return [NSNumber numberWithUnsignedLongLong:size];
+}
+
 BOOL updateMetaData(id <SapphireFileMetaDataProtocol> file)
 {
 	BOOL updated =FALSE;
@@ -1624,8 +1647,9 @@
 		NSDictionary *props = [[NSFileManager defaultManager] fileAttributesAtPath:path traverseLink:YES];
 		int modTime = [[props objectForKey:NSFileModificationDate] timeIntervalSince1970];
 		/*Set modified, size, and version*/
+		id num = totalFileSize(path, props);
 		[fileMeta setObject:[NSNumber numberWithInt:modTime] forKey:MODIFIED_KEY];
-		[fileMeta setObject:[props objectForKey:NSFileSize] forKey:SIZE_KEY];
+		[fileMeta setObject:num forKey:SIZE_KEY];
 		[fileMeta setObject:[NSNumber numberWithInt:META_FILE_VERSION] forKey:META_VERSION_KEY];
 		
 		if([file fileContainerType] == FILE_CONTAINER_TYPE_QT_MOVIE)
@@ -1813,9 +1837,9 @@
 		[metaData setObject:join forKey:JOINED_FILE_KEY];
 }
 
-- (long long)size
+- (unsigned long long)size
 {
-	return [[metaData objectForKey:SIZE_KEY] longLongValue];
+	return [[metaData objectForKey:SIZE_KEY] unsignedLongLongValue];
 }
 
 - (float)duration
Index: SapphireTVShowImporter.m
===================================================================
--- SapphireTVShowImporter.m	(revision 520)
+++ SapphireTVShowImporter.m	(working copy)
@@ -477,6 +477,50 @@
 	[tdict release];
 }
 
+-(NSMutableString *) createShortDesc:(NSMutableDictionary *)info
+{
+/*  Get the first sentence */
+/*	NSString *desc = [[info objectForKey:META_DESCRIPTION_KEY] substringToIndex:[[info objectForKey:META_DESCRIPTION_KEY] rangeOfString:@"."].location+1]; */
+
+	return [NSMutableString stringWithFormat:@"%@ / ", [info objectForKey:META_TITLE_KEY]];
+}
+
+/* 
+ * Combine the meta data from multiple episodes into the first episode given.
+ *
+ * This will change the episode name to "Episode X - Y" and the summary
+ * will contain the episode names.
+ */
+- (void)combine:(NSMutableDictionary *)info withMultipleEpisodes:(NSMutableArray *)episodes
+{
+	NSEnumerator   *enumerator = [episodes objectEnumerator];
+	NSMutableString *shortDesc = [self createShortDesc:info];
+	id episode;
+
+	while( episode = [enumerator nextObject] )
+	{
+		[self combine:info with:episode];
+		[shortDesc appendString:[self createShortDesc:episode]];
+	}
+
+	// lose the last " /" on the short description.
+	NSRange truncate;
+	truncate.location = [shortDesc length] - 3;
+	truncate.length   = 3;
+	[shortDesc deleteCharactersInRange:truncate];
+
+	/* If there is more than one extra episode the title and description 
+	 * become unreadable - make nicer versions of these */
+	if( [episodes count] > 1 )
+	{
+		int fromEp = [[info objectForKey:META_EPISODE_NUMBER_KEY]   intValue];
+		int toEp   = [[info objectForKey:META_EPISODE_2_NUMBER_KEY] intValue];
+
+		[info setObject:[NSString stringWithFormat:@"Episodes %d - %d", fromEp, toEp] forKey:META_TITLE_KEY];
+		[info setObject:shortDesc forKey:META_DESCRIPTION_KEY];
+	}
+}
+
 - (ImportState) importMetaData:(id <SapphireFileMetaDataProtocol>)metaData
 {
 	currentData = metaData;
@@ -592,13 +636,20 @@
 		otherEp = overriddenEpisode;
 
 	/*Get the episode's info*/
-	NSMutableDictionary *info = nil, *info2 = nil;
+	NSMutableDictionary *info = nil;
+	NSMutableArray *otherEpisodes = nil;
 	if(ep != 0)
 	{
 		/*Match on s/e*/
 		info = [self getInfo:show forSeason:season episode:ep];
 		if(otherEp != 0)
-			info2 = [self getInfo:show forSeason:season episode:otherEp];
+		{
+			otherEpisodes = [[NSMutableArray alloc] init];
+			int idx = 0;
+			
+			for(idx = 1; idx <= otherEp - ep; ++idx)
+				[otherEpisodes addObject:[self getInfo:show forSeason:season episode:ep+idx]];
+		}
 	}
 	else
 	{
@@ -638,9 +689,10 @@
 		[[NSURLDownload alloc] initWithRequest:request delegate:myDelegate];
 		[myDelegate release];
 	}
-	
-	if(info2 != nil)
-		[self combine:info with:info2];
+
+	if(otherEpisodes != nil)
+		[self combine:info withMultipleEpisodes:otherEpisodes];
+	[otherEpisodes release];
 	/*Import the info*/
 	[info removeObjectForKey:LINK_KEY];
 	[metaData importInfo:info fromSource:META_TVRAGE_IMPORT_KEY withTime:[[NSDate date] timeIntervalSince1970]];

