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().

Другие вопросы по тегам