mirror of
https://github.com/claunia/cuetools.net.git
synced 2025-12-16 18:14:25 +00:00
taglib-sharp initial import (r553)
This commit is contained in:
131
taglib-sharp/examples/BatchSet.cs
Normal file
131
taglib-sharp/examples/BatchSet.cs
Normal file
@@ -0,0 +1,131 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using TagLib;
|
||||
|
||||
public class BatchSet
|
||||
{
|
||||
private enum Mode {
|
||||
Tag, Value, File
|
||||
}
|
||||
|
||||
public static void Main(string [] args)
|
||||
{
|
||||
if(args.Length < 3) {
|
||||
Console.Error.WriteLine ("USAGE: BatchSet.exe -tag value [-tag2 value ...] File1 [File2 ...]");
|
||||
return;
|
||||
}
|
||||
|
||||
Mode mode = Mode.Tag;
|
||||
List<string> files = new List<string> ();
|
||||
Dictionary<string,string> tags = new Dictionary<string,string> ();
|
||||
|
||||
string tag = null;
|
||||
|
||||
foreach (string str in args) {
|
||||
if (mode == Mode.Tag) {
|
||||
if (str [0] == '-') {
|
||||
if (str == "--") {
|
||||
mode = Mode.File;
|
||||
} else {
|
||||
tag = str.Substring (1);
|
||||
mode = Mode.Value;
|
||||
}
|
||||
|
||||
continue;
|
||||
}
|
||||
mode = Mode.File;
|
||||
}
|
||||
|
||||
if (mode == Mode.Value) {
|
||||
if (!tags.ContainsKey (tag))
|
||||
tags.Add (tag, str);
|
||||
mode = Mode.Tag;
|
||||
continue;
|
||||
}
|
||||
|
||||
if (mode == Mode.File)
|
||||
files.Add (str);
|
||||
}
|
||||
|
||||
foreach (string filename in files) {
|
||||
TagLib.File file = TagLib.File.Create (filename);
|
||||
if (file == null)
|
||||
continue;
|
||||
|
||||
Console.WriteLine ("Updating Tags For: " + filename);
|
||||
|
||||
foreach (string key in tags.Keys) {
|
||||
string value = tags [key];
|
||||
try {
|
||||
switch (key) {
|
||||
case "id3version":
|
||||
byte number = byte.Parse (value);
|
||||
if (number == 1) {
|
||||
file.RemoveTags (TagTypes.Id3v2);
|
||||
} else {
|
||||
TagLib.Id3v2.Tag v2 =
|
||||
file.GetTag (TagTypes.Id3v2, true)
|
||||
as TagLib.Id3v2.Tag;
|
||||
|
||||
if (v2 != null)
|
||||
v2.Version = number;
|
||||
}
|
||||
break;
|
||||
case "album":
|
||||
file.Tag.Album = value;
|
||||
break;
|
||||
case "artists":
|
||||
file.Tag.AlbumArtists = value.Split (new char [] {';'});
|
||||
break;
|
||||
case "comment":
|
||||
file.Tag.Comment = value;
|
||||
break;
|
||||
case "lyrics":
|
||||
file.Tag.Lyrics = value;
|
||||
break;
|
||||
case "composers":
|
||||
file.Tag.Composers = value.Split (new char [] {';'});
|
||||
break;
|
||||
case "disc":
|
||||
file.Tag.Disc = uint.Parse (value);
|
||||
break;
|
||||
case "disccount":
|
||||
file.Tag.DiscCount = uint.Parse (value);
|
||||
break;
|
||||
case "genres":
|
||||
file.Tag.Genres = value.Split (new char [] {';'});
|
||||
break;
|
||||
case "performers":
|
||||
file.Tag.Performers = value.Split (new char [] {';'});
|
||||
break;
|
||||
case "title":
|
||||
file.Tag.Title = value;
|
||||
break;
|
||||
case "track":
|
||||
file.Tag.Track = uint.Parse (value);
|
||||
break;
|
||||
case "trackcount":
|
||||
file.Tag.TrackCount = uint.Parse (value);
|
||||
break;
|
||||
case "year":
|
||||
file.Tag.Year = uint.Parse (value);
|
||||
break;
|
||||
case "pictures":
|
||||
List<Picture> pics = new List<Picture> ();
|
||||
if (!string.IsNullOrEmpty (value))
|
||||
foreach (string path in value.Split (new char [] {';'})) {
|
||||
pics.Add (new Picture (path));
|
||||
}
|
||||
file.Tag.Pictures = pics.ToArray ();
|
||||
break;
|
||||
}
|
||||
} catch (Exception e) {
|
||||
Console.WriteLine ("Error setting tag " + key + ":");
|
||||
Console.WriteLine (e);
|
||||
}
|
||||
}
|
||||
|
||||
file.Save();
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user