TagLib Sharp не редактирует исполнителя

Я пытаюсь сохранить теги id3 нового исполнителя и названия в треки. Загрузка тегов из треков работает нормально, а также редактирование названия трека работает нормально. Но когда я пытаюсь отредактировать исполнителя (исполнителя), это ничего не меняет. Вот код

public void renameID3(string artist,string title)
{ 
   using (TagLib.File f = TagLib.File.Create(FInfo.FullName))
        {
            f.Tag.Artists[0] = artist; //Both of them are not ...
            f.Tag.Performers[0] = artist; //working


            f.Tag.Title = title; //This works fine
            f.Save();
        }
  }

Кроме того, я просмотрел определение членов класса TagLib FirstPerformer и FirstPerformer, но у них нет установленного метода. Кто-нибудь знает, как это решить?


person Ali Yeşilkanat    schedule 25.06.2013    source источник


Ответы (2)


Застрял с той же проблемой. Обнаружено, что очистка Performers сначала заставляет его работать так, как задумано:

using(TagLib.File tlFile = TagLib.File.Create(newFileName)){
    //tlFile.Tag.Performers = new []{translateDict[author]}; //doesn't work
    tlFile.Tag.Performers = null; //clearing out performers
    tlFile.Tag.Performers = new []{translateDict[author]}; //works now
    tlFile.Save();
}
person Ilya Olkhovskiy    schedule 25.06.2013
comment
Вам не нужен шаг =null. Проблема в том, что Performers и другие возвращают массив new, поэтому его редактирование не вносит изменений в базовую структуру данных. На самом деле он должен возвращать IEnumerable‹String›, но я был молод и безрассуден. - person Brian Nickel♦; 03.07.2013
comment
@BrianNickel Не могли бы вы взглянуть на вопрос: stackoverflow.com/questions/35414734/ - person Sinnich; 29.02.2016

Это сработало для меня:

TagLib.File file = TagLib.File.Create (fname);
file.Tag.Performers = new String[1] { artist };
file.Save();
person razz    schedule 25.07.2016