tagpy:python中的auto_ptr?

时间:2014-01-08 15:52:09

标签: python-2.7 boost-python taglib 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>)

我没有正确使用append命令吗?还有另一种方法吗?是tagpy的问题,即它无法正确包装append方法吗?

请注意,用“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 个答案:

答案 0 :(得分:0)

我试图在太低的水平上做到这一点。我只需要使用id3v2.tag.addTag()。

相关问题