C# 获取歌曲标签并添加到ID3标签列表
我解决了我的问题^^ 下面的代码扫描文件夹及其子目录,对于每个.mp3&.wav,使用其ID3标记查找last.fm中的所有标记 我需要添加更多文本来解释我的代码: 您可以使用main中的参数来添加额外的选项,如自定义位置,而不是子目录等 使用2个参考文献: •lastfm sharp.dllC# 获取歌曲标签并添加到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;
•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();
}
}
}