C# 获取歌曲标签并添加到ID3标签列表

C# 获取歌曲标签并添加到ID3标签列表,c#,json,xml,id3,last.fm,C#,Json,Xml,Id3,Last.fm,我解决了我的问题^^ 下面的代码扫描文件夹及其子目录,对于每个.mp3&.wav,使用其ID3标记查找last.fm中的所有标记 我需要添加更多文本来解释我的代码: 您可以使用main中的参数来添加额外的选项,如自定义位置,而不是子目录等 使用2个参考文献: •lastfm sharp.dll •taglib-sharp.dll using System; using System.Collections.Generic; using System.IO; using System.Linq;

我解决了我的问题^^

下面的代码扫描文件夹及其子目录,对于每个.mp3&.wav,使用其ID3标记查找last.fm中的所有标记

我需要添加更多文本来解释我的代码:

您可以使用main中的参数来添加额外的选项,如自定义位置,而不是子目录等

使用2个参考文献:

•lastfm sharp.dll
•taglib-sharp.dll

using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using Lastfm.Services;

namespace AddTags {

    /// <summary>
    /// Class made for scanning a folder and giving all mp3s more tags
    /// </summary>
    internal class Program {

        public static void Main(string[] args) {
            Session session = new Session("<api>", "<secret>");

            // Authenticate it with a username and password to be able
            // to perform write operations and access this user's profile
            // private data.
            session.Authenticate("<username>", Lastfm.Utilities.md5("<password>"));

            DirectoryInfo dir = new DirectoryInfo("C:\\Users\\kiwi\\Dropbox\\music\\Mk3");
            Console.WriteLine("Setting genretags for directory: " + dir.FullName);
            foreach (FileInfo file in dir.GetFiles("*.*", SearchOption.AllDirectories).Where(file => file.Extension.Equals(".mp3") || file.Extension.Equals(".wav"))) {
                Console.WriteLine();
                Console.WriteLine(" --- " + file.Name + " ---");
                TagLib.File TagFile = TagLib.File.Create(file.FullName);

                // Create an Artist object.
                if (TagFile.Tag.Performers.Length > 0) {
                    Artist artist = new Artist(TagFile.Tag.Performers[0], session);

                    // Display your current tags for system of a down.
                    List<string> tags = new List<string>();
                    try {
                        foreach (TopTag tag in artist.GetTopTags(20))
                            tags.Add(tag.Item.Name.ToString());
                        if (tags.Count == 0)
                            Console.WriteLine("No tags found");
                    } catch (Exception e) {
                        Console.WriteLine("Artist not found");
                    }

                    TagFile.Tag.Genres = tags.ToArray();
                    TagFile.Save();

                    foreach (string tag in TagFile.Tag.Genres) {
                        Console.Write(" " + tag);
                    }
                } else {
                    Console.WriteLine("No artist found in tags");
                }
                Console.WriteLine();
            }

            Console.Write("press any key to exit");
            Console.ReadLine();
        }
    }
}
使用系统;
使用System.Collections.Generic;
使用System.IO;
使用System.Linq;
使用Lastfm.Services;
名称空间AddTags{
/// 
///类用于扫描文件夹并为所有MP3添加更多标记
/// 
内部课程计划{
公共静态void Main(字符串[]args){
会话=新会话(“,”);
//使用用户名和密码对其进行身份验证,以便
//执行写入操作并访问此用户的配置文件
//私人数据。
session.Authenticate(“”),Lastfm.Utilities.md5(“”);
DirectoryInfo dir=newdirectoryinfo(“C:\\Users\\kiwi\\Dropbox\\music\\Mk3”);
Console.WriteLine(“设置目录的目录类型:“+dir.FullName”);
foreach(dir.GetFiles(“**”),SearchOption.AllDirectories中的FileInfo文件)。其中(file=>file.Extension.Equals(“.mp3”)| | file.Extension.Equals(.wav”)){
Console.WriteLine();
Console.WriteLine(“--”+file.Name+“--”);
TagLib.File TagFile=TagLib.File.Create(File.FullName);
//创建一个艺术家对象。
如果(TagFile.Tag.Performers.Length>0){
艺人=新艺人(TagFile.Tag.Performers[0],会话);
//显示系统的当前标签。
列表标签=新列表();
试一试{
foreach(艺术家中的TopTag标签。GetTopTags(20))
tags.Add(tag.Item.Name.ToString());
如果(tags.Count==0)
Console.WriteLine(“未找到标签”);
}捕获(例外e){
Console.WriteLine(“未找到艺术家”);
}
TagFile.Tag.Genres=tags.ToArray();
TagFile.Save();
foreach(TagFile.tag.Genres中的字符串标记){
Console.Write(““+tag”);
}
}否则{
Console.WriteLine(“标签中未找到艺术家”);
}
Console.WriteLine();
}
控制台。写入(“按任意键退出”);
Console.ReadLine();
}
}
}

同样的事情参见第一篇文章xD

using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using Lastfm.Services;

namespace AddTags {

    /// <summary>
    /// Class made for scanning a folder and giving al mp3's moar tags
    /// </summary>
    internal class Program {

        public static void Main(string[] args) {
            Session session = new Session("94b659f1b129a3f110a0faa269b4be68", "649461398a675e38870c07b1614085e4");

            // Authenticate it with a username and password to be able
            // to perform write operations and access this user's profile
            // private data.
            session.Authenticate("cskiwi", Lastfm.Utilities.md5("Cskiwi147963"));

            DirectoryInfo dir = new DirectoryInfo("C:\\Users\\kiwi\\Dropbox\\music\\Mk3");
            Console.WriteLine("Setting genretags for directory: " + dir.FullName);
            foreach (FileInfo file in dir.GetFiles("*.*", SearchOption.AllDirectories).Where(file => file.Extension.Equals(".mp3") || file.Extension.Equals(".wav"))) {
                Console.WriteLine();
                Console.WriteLine(" --- " + file.Name + " ---");
                TagLib.File TagFile = TagLib.File.Create(file.FullName);

                // Create an Artist object.
                if (TagFile.Tag.Performers.Length > 0) {
                    Artist artist = new Artist(TagFile.Tag.Performers[0], session);

                    // Display your current tags for system of a down.
                    List<string> tags = new List<string>();
                    try {
                        foreach (TopTag tag in artist.GetTopTags(20))
                            tags.Add(tag.Item.Name.ToString());
                        if (tags.Count == 0)
                            Console.WriteLine("No tags found");
                    } catch (Exception e) {
                        Console.WriteLine("Artist not found");
                    }

                    TagFile.Tag.Genres = tags.ToArray();
                    TagFile.Save();

                    foreach (string tag in TagFile.Tag.Genres) {
                        Console.Write(" " + tag);
                    }
                } else {
                    Console.WriteLine("No artist found in tags");
                }
                Console.WriteLine();
            }

            Console.Write("press any key to exit");
            Console.ReadLine();
        }
    }
}
使用系统;
使用System.Collections.Generic;
使用System.IO;
使用System.Linq;
使用Lastfm.Services;
名称空间AddTags{
/// 
///类用于扫描文件夹并给出al mp3的moar标签
/// 
内部课程计划{
公共静态void Main(字符串[]args){
会话会话=新会话(“94b659f1b129a3f110a0faa269b4be68”、“649461398a675e38870c07b1614085e4”);
//使用用户名和密码对其进行身份验证,以便
//执行写入操作并访问此用户的配置文件
//私人数据。
session.Authenticate(“cskiwi”,Lastfm.Utilities.md5(“Cskiwi147963”);
DirectoryInfo dir=newdirectoryinfo(“C:\\Users\\kiwi\\Dropbox\\music\\Mk3”);
Console.WriteLine(“设置目录的目录类型:“+dir.FullName”);
foreach(dir.GetFiles(“**”),SearchOption.AllDirectories中的FileInfo文件)。其中(file=>file.Extension.Equals(“.mp3”)| | file.Extension.Equals(.wav”)){
Console.WriteLine();
Console.WriteLine(“--”+file.Name+“--”);
TagLib.File TagFile=TagLib.File.Create(File.FullName);
//创建一个艺术家对象。
如果(TagFile.Tag.Performers.Length>0){
艺人=新艺人(TagFile.Tag.Performers[0],会话);
//显示系统的当前标签。
列表标签=新列表();
试一试{
foreach(艺术家中的TopTag标签。GetTopTags(20))
tags.Add(tag.Item.Name.ToString());
如果(tags.Count==0)
Console.WriteLine(“未找到标签”);
}捕获(例外e){
Console.WriteLine(“未找到艺术家”);
}
TagFile.Tag.Genres=tags.ToArray();
TagFile.Save();
foreach(TagFile.tag.Genres中的字符串标记){
Console.Write(““+tag”);
}
}否则{
Console.WriteLine(“标签中未找到艺术家”);
}
Console.WriteLine();
}
控制台。写入(“按任意键退出”);
Console.ReadLine();
}
}
}