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();
        }
  }

Освен това погледнах дефиницията на FirstPerformer и FirstPerformer членове на класа TagLib, но те нямат зададен метод. Някой знае ли как да се реши това?


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, et al връщат нов масив, така че редактирането му не прави промени в основната структура на данните. Наистина трябва да върне 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