tagpy: auto_ptr в питоне?
Я не профессионал, просто разочарован тем, что практически ни один аудиоплеер linux не поддерживает тег композитора id3v2, и я хотел бы выяснить, как его добавить. Taglib не поддерживает тег composer напрямую, но есть обходной путь, создавая тег с нуля. Я пытаюсь перевести это на tagpy.
Следующие строки должны создать новый кадр id3v2 и добавить его в новый список кадров.
newframe = tagpy.id3v2.TextIdentificationFrame( 'TCOM' )
newframe.setText( "Bruckner" )
newframelist = tagpy.id3v2.FrameList()
newframelist.append( newframelist )
Но последняя строка выдает ошибку.
newframelist.append( newframelist )
Boost.Python.ArgumentError: Python argument types in
id3v2_FrameList.append(id3v2_FrameList, id3v2_FrameList) did not match C++ signature:
append(TagLib::List<TagLib::ID3v2::Frame*> {lvalue}, std::auto_ptr<TagLib::ID3v2::Frame>)
Я правильно не использую команду добавления? Есть ли другой способ сделать это? Проблема с tagpy, то есть он не может правильно обернуть метод добавления?
Обратите внимание, что замена последней строки на "newframelist[ 0 ] = newframe" приводит к аналогичной ошибке.
newframelist[ 0 ] = newframe
Boost.Python.ArgumentError: Python argument types in
id3v2_FrameList.__setitem__(id3v2_FrameList, int, id3v2_TextIdentificationFrame) did not match C++ signature:
__setitem__(TagLib::List<TagLib::ID3v2::Frame*> {lvalue}, unsigned int, std::auto_ptr<TagLib::ID3v2::Frame>)
1 ответ
Я пытался сделать это на слишком низком уровне. Все, что мне было нужно, это использовать id3v2.tag.addTag().