luminescence-software / scripts

C# scripts for Metatogger
Mozilla Public License 2.0
8 stars 7 forks source link

Clear all tags then tag from filename/path and/or rename/class from tags #5

Open CyberSinh opened 6 years ago

CyberSinh commented 6 years ago
// Clear all tags then tag from filename/path and/or rename/class from tags

using Metatogger.Business;
using Metatogger.Data;

foreach (var file in files)
{   
    // 1. Supprime tous les tags
    foreach (var tag in file.GetAllTags())
       file.SetTag(tag.Key, null);

    // 2.1 Récupère le nom de l'artiste et du titre du morceau depuis le nom de fichier
    var tags = TagProcessor.TagFromFilename("|artist| - |title|", file);

        // 2.2 Récupère le nom de l'artiste et du titre du morceau depuis le chemin du fichier
    var tags2 = TagProcessor.TagFromPath(@"|artist|\|album|", file);        

    // 3. Copie le nom de l'artiste récupéré depuis le nom du fichier dans le tag ARTIST et ORIGINALARTIST
    if (tags.ContainsKey(TagName.Artist))
    {
       string artist = tags[TagName.Artist][0];
       file.SetTag(TagName.Artist, artist);
       file.SetTag(TagName.OriginalArtist, artist);
    }

    // 4. Copie le titre de l'album récupéré dans le tag ALBUM
    if (tags2.ContainsKey(TagName.Album))
           file.SetTag(TagName.Album, tags2[TagName.Album][0]);

        // 5.1 Nouveau nom de fichier basé sur les tags
        string newFilename = TagProcessor.RenameFromTags("<|artist| - ><[|album| #|tracknumber|] >|title|", file);
        if (newFilename != null)
           file.OutputFilename = newFilename ;

        // 5.2 Nouveau chemin basé sur les tags
        string newPath = TagProcessor.PathFromTags(@"%MYMUSIC%\|codec|\|artist|\<|date| - >|album|", file);
        if (newPath != null)
        {
           file.OutputPath = newPath ;
           file.FileProcess = FileProcess.Move; // FileProcess.Copy / FileProcess.SoftLink
        }
}