public void ProcessMusicTorrent(FileInfo file, string birth)
{
/*Directory Switches:
***********************************
%a - Artist Name %l = Live
%s = Soundtrack %c = Compilation
%e = EP %r = Remix
%v = Interview %n = Single
%x = Bootleg %u = Unknown
%m = Mixtape
%f = Album
%y = Year
%t = Album Name %i = Artist's First Initial
%b = Bitrate %p = Physical Format (CD/Vinyl)
%d = Bitrate Format (MP3/FLAC)
%z = All release formats (live,EP,comp,etc)
***********************************/
try
{
string directoryName = null;
char[] directoryArray = SettingsHandler.GetCustomDirectory().ToCharArray();
if (!SettingsHandler.GetDownloadDirectory().EndsWith("\\"))
{
SettingsHandler.SetDownloadFolder(SettingsHandler.GetDownloadDirectory() + "\\");
}
if (!SettingsHandler.GetVariousArtistsDownloadDirectory().EndsWith("\\"))
{
SettingsHandler.SetVariousArtistsDownloadDirectory(SettingsHandler.GetVariousArtistsDownloadDirectory() + "\\");
}
if (!SkipReleaseFormatCheck())
{
if (SettingsHandler.GetHandleLoneTAsAlbum())
{
if (file.FullName.Contains("[CSL]--Temp"))
information[2] = ExtractAlbumFormat(birth, file, true);
else
information[2] = Album;
}
else
information[2] = ExtractAlbumFormat(birth, file, file.FullName.Contains("[CSL]--Temp"));
if (information[14] == "true")
goto ReturnTorrent;
else if (!SettingsHandler.GetDownloadFormatExists(information[2]))
goto ReturnTorrent;
}
information[0] = ExtractArtist(birth, file);
//Check if it's a various artists and if so get the various artists directory
if (information[0].Contains("Various Artists"))
{
directoryArray = SettingsHandler.GetVariousArtistsDownloadSwitches().ToCharArray();
}
for (int a = 0; a < directoryArray.Length; a++)
{
if (directoryArray[a] == ('%'))
{
if (information[14] == "true")
goto ReturnTorrent;
switch (directoryArray[a + 1])
{
case ('a'):
{
string artist = (information[0] == null) ? ExtractArtist(birth, file) : information[0]; //May get called from 'i'
artist = DirectoryHandler.GetHTMLLookUp(artist);
information[0] = artist;
if (SettingsHandler.GetArtistFlip() && information != null)
{
if (information[0].StartsWith("The") || information[0].StartsWith("A "))
{
string[] modifiedArtist = information[0].Split(' ');
artist = "";
for (int b = 1; b < modifiedArtist.Length; b++)
{
artist += modifiedArtist[b];
if (!((b + 1) == modifiedArtist.Length))
{
artist += " ";
}
}
artist += ", " + modifiedArtist[0];
information[0] = artist;
}
}
else if (SettingsHandler.GetDeleteThe())
{
if (information[0].StartsWith("The"))
{
string[] modifiedArtist = information[0].Split(' ');
artist = "";
for (int b = 1; b < modifiedArtist.Length; b++)
{
artist += modifiedArtist[b];
if (!((b + 1) == modifiedArtist.Length))
{
artist += " ";
}
}
information[0] = artist;
}
}
directoryName += information[0];
a++;
} break;
case ('y'):
{
string year = ExtractYear(birth, file);
directoryName += year;
information[4] = year;
a++;
} break;
case ('b'):
{
string bitrate = ExtractBitrate(birth, file);
directoryName += bitrate;
information[3] = bitrate;
a++;
} break;
case ('d'):
{
string bitformat = ExtractBitformat(birth, file);
directoryName += bitformat;
information[6] = bitformat;
a++;
} break;
case ('p'):
{
string pformat = ExtractPhysicalFormat(birth, file);
directoryName += pformat;
information[5] = pformat;
a++;
} break;
case ('t'):
{
string album = ExtractAlbum(birth, file);
album = DirectoryHandler.GetHTMLLookUp(album);
directoryName += album;
information[1] = album;
a++;
} break;
case ('z'):
{
string format = (information[2] == null) ? ExtractAlbumFormat(birth, file, file.FullName.Contains("[CSL]--Temp")) : information[2];
directoryName += SettingsHandler.GetReleaseFormat(format);
information[2] = format;
a++;
} break;
case ('l'):
{
string format = (information[2] == null) ? ExtractAlbumFormat(birth, file, file.FullName.Contains("[CSL]--Temp")) : information[2];
if (format == Live)
{
directoryName += SettingsHandler.GetReleaseFormat(Live);
information[2] = format;
}
a++;
} break;
case ('c'):
{
string format = (information[2] == null) ? ExtractAlbumFormat(birth, file, file.FullName.Contains("[CSL]--Temp")) : information[2];
if (format == Compilation)
{
directoryName += SettingsHandler.GetReleaseFormat(Compilation);
information[2] = format;
}
a++;
} break;
case ('e'):
{
string format = (information[2] == null) ? ExtractAlbumFormat(birth, file, file.FullName.Contains("[CSL]--Temp")) : information[2];
if (format == EP)
{
directoryName += SettingsHandler.GetReleaseFormat(EP);
information[2] = format;
}
a++;
} break;
case ('r'):
{
string format = (information[2] == null) ? ExtractAlbumFormat(birth, file, file.FullName.Contains("[CSL]--Temp")) : information[2];
if (format == Remix)
{
directoryName += SettingsHandler.GetReleaseFormat(Remix);
information[2] = format;
}
a++;
} break;
case ('v'):
{
string format = (information[2] == null) ? ExtractAlbumFormat(birth, file, file.FullName.Contains("[CSL]--Temp")) : information[2];
if (format == Interview)
{
directoryName += SettingsHandler.GetReleaseFormat(Interview);
information[2] = format;
}
a++;
} break;
case ('n'):
{
string format = (information[2] == null) ? ExtractAlbumFormat(birth, file, file.FullName.Contains("[CSL]--Temp")) : information[2];
if (format == Single)
{
directoryName += SettingsHandler.GetReleaseFormat(Single);
information[2] = format;
}
a++;
} break;
case ('x'):
{
string format = (information[2] == null) ? ExtractAlbumFormat(birth, file, file.FullName.Contains("[CSL]--Temp")) : information[2];
if (format == Bootleg)
{
directoryName += SettingsHandler.GetReleaseFormat(Bootleg);
information[2] = format;
}
a++;
} break;
case ('s'):
{
string format = (information[2] == null) ? ExtractAlbumFormat(birth, file, file.FullName.Contains("[CSL]--Temp")) : information[2];
if (format == Soundtrack)
{
directoryName += SettingsHandler.GetReleaseFormat(Soundtrack);
information[2] = format;
}
a++;
} break;
case ('m'):
{
string format = (information[2] == null) ? ExtractAlbumFormat(birth, file, file.FullName.Contains("[CSL]--Temp")) : information[2];
if (format == Mixtape)
{
directoryName += SettingsHandler.GetReleaseFormat(Mixtape);
information[2] = format;
}
a++;
} break;
case ('u'):
{
string format = (information[2] == null) ? ExtractAlbumFormat(birth, file, file.FullName.Contains("[CSL]--Temp")) : information[2];
if (format == Unknown)
{
directoryName += SettingsHandler.GetReleaseFormat(Unknown);
information[2] = format;
}
a++;
} break;
case ('f'):
{
string format = (information[2] == null) ? ExtractAlbumFormat(birth, file, file.FullName.Contains("[CSL]--Temp")) : information[2];
if (format == Album)
{
directoryName += SettingsHandler.GetReleaseFormat(Album);
information[2] = format;
}
a++;
} break;
case ('i'):
{
if (information[0] == null)
information[0] = ExtractArtist(birth, file);
string artist;
if (SettingsHandler.GetArtistFlip() && information != null)
{
if (information[0].StartsWith("The") || information[0].StartsWith("A "))
{
string[] modifiedArtist = information[0].Split(' ');
artist = "";
for (int b = 1; b < modifiedArtist.Length; b++)
{
artist += modifiedArtist[b];
if (!((b + 1) == modifiedArtist.Length))
{
artist += " ";
}
}
artist += ", " + modifiedArtist[0];
information[0] = artist;
}
}
else if (SettingsHandler.GetDeleteThe())
{
if (information[0].StartsWith("The"))
{
string[] modifiedArtist = information[0].Split(' ');
artist = "";
for (int b = 1; b < modifiedArtist.Length; b++)
{
artist += modifiedArtist[b];
if (!((b + 1) == modifiedArtist.Length))
{
artist += " ";
}
}
information[0] = artist;
}
}
int counter = -1;
Match match;
do { match = Regex.Match(information[0][++counter].ToString(), "[a-z]|[A-Z]"); }
while (!match.Success);
directoryName += match.Value;
a++;
} break;
}
}
else
{
if (information[14] == "true")
goto ReturnTorrent;
directoryName += directoryArray[a];
}
}
if (information[0].Contains("Various Artists"))
information[13] = SettingsHandler.GetVariousArtistsDownloadDirectory().Trim() + directoryName.Trim();
else
information[13] = SettingsHandler.GetDownloadDirectory().Trim() + directoryName.Trim();
if (SettingsHandler.GetUppercaseAllFolderNames())
information[13] = information[13].ToUpper();
else if (SettingsHandler.GetLowercaseAllFolderNames())
information[13] = information[13].ToLower();
ReturnTorrent:
information[10] = file.FullName;
information[11] = file.Name;
information[12] = birth;
}
catch (Exception e)
{
ew.IssueGeneralWarning("Error processing torrent", "Please report", e.Message + "\n" + e.StackTrace);
information[14] = "true";
}
}