blob: 6bdfc63bd22be8c67f203b6eb0771a107e384f66 [file] [log] [blame]
// $Id: test_remove.cpp,v 1.13 2003/03/02 15:17:21 t1mpy Exp $
#if defined(HAVE_CONFIG_H)
# include "config.h"
#endif
#include "id3/id3lib_streams.h"
#include "id3/tag.h"
#include "id3/misc_support.h"
#include "id3/id3lib_strings.h"
using std::cout;
using std::endl;
using std::cerr;
using namespace dami;
typedef const char* LPCTSTR;
/* CSharedTag is a wrapper I made for some features I need */
/* LPCTSTR means const char * */
size_t RemoveFrame(ID3_Tag& pTag, ID3_FrameID fID, LPCTSTR sDescription)
{
size_t nCount = 0;
const ID3_Frame * frame = NULL;
do {
if (!sDescription)
{
cerr << "*** description is null" << endl;
frame = pTag.Find(fID);
}
else
{
cerr << "*** description is \"" << sDescription << "\"" << endl;
frame = pTag.Find(fID, ID3FN_DESCRIPTION, sDescription);
}
if (frame)
{
ID3_Field* fld = frame->GetField(ID3FN_TEXT);
String text(fld->GetRawText(), fld->Size());
cerr << "*** delete frame with text \"" << text << "\"" << endl;
/* pTag is an ID3_Tag */
delete pTag.RemoveFrame(frame);
nCount++;
}
} while (frame != NULL);
return nCount;
}
int main( int argc, char *argv[])
{
ID3_Tag tag;
ID3_Frame frame;
if (argc == 2)
{
tag.Link(argv[1]);
cerr << "removed " << RemoveFrame(tag, ID3FID_COMMENT, "") << " descriptionless comment frames" << endl;
tag.Update();
}
else
{
tag.Link("test-remove.tag");
tag.Strip(ID3TT_ALL);
tag.Clear();
frame.SetID(ID3FID_TITLE);
frame.GetField(ID3FN_TEXT)->Set("Test title");
tag.AddFrame(frame);
frame.SetID(ID3FID_COMPOSER);
frame.GetField(ID3FN_TEXT)->Set("Test composer");
tag.AddFrame(frame);
frame.SetID(ID3FID_BAND);
frame.GetField(ID3FN_TEXT)->Set("Test band");
tag.AddFrame(frame);
frame.SetID(ID3FID_CONDUCTOR);
frame.GetField(ID3FN_TEXT)->Set("Test conductor");
tag.AddFrame(frame);
frame.SetID(ID3FID_COMMENT);
frame.GetField(ID3FN_LANGUAGE)->Set("eng");
frame.GetField(ID3FN_TEXT)->Set("Test comment");
frame.GetField(ID3FN_DESCRIPTION)->Set("A Description");
tag.AddFrame(frame);
frame.SetID(ID3FID_COMMENT);
frame.GetField(ID3FN_LANGUAGE)->Set("eng");
frame.GetField(ID3FN_TEXT)->Set("Test comment 2");
frame.GetField(ID3FN_DESCRIPTION)->Set("");
tag.AddFrame(frame);
frame.SetID(ID3FID_COMMENT);
frame.GetField(ID3FN_LANGUAGE)->Set("eng");
frame.GetField(ID3FN_TEXT)->Set("ID3v1 comment text?");
frame.GetField(ID3FN_DESCRIPTION)->Set(STR_V1_COMMENT_DESC);
tag.AddFrame(frame);
tag.SetPadding(false);
tag.Update(ID3TT_ID3V2);
cerr << "removed " << ID3_RemoveArtists(&tag) << " artist frames" << endl;
tag.Update();
cerr << "removed " << ID3_RemoveTitles(&tag) << " title frames" << endl;
tag.Update();
cerr << "removed " << RemoveFrame(tag, ID3FID_COMMENT, "") << " descriptionless comment frames" << endl;
tag.Update();
}
return 0;
}