tagpy: auto_ptr в питоне?

Я не профессионал, меня просто расстраивает, что почти ни один линуксовый аудиоплеер не поддерживает тег композитора id3v2, и я хотел бы разобраться, как его добавить. Taglib не поддерживает тег композитора напрямую, но есть обходной путь — создание тега с нуля. Я пытаюсь перевести это на тагпи.

Следующие строки предназначены для создания нового фрейма 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>)

person Andrew Dabrowski    schedule 08.01.2014    source источник


Ответы (1)


Я пытался сделать это на слишком низком уровне. Все, что мне было нужно, это использовать id3v2.tag.addTag().

person Andrew Dabrowski    schedule 08.01.2014