⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 demo_convert.cpp

📁 更新mp3
💻 CPP
字号:
// $Id: demo_convert.cpp,v 1.15 2002/06/27 12:46:55 t1mpy Exp $////  The authors have released ID3Lib as Public Domain (PD) and claim no//  copyright, patent or other intellectual property protection in this work.//  This means that it may be modified, redistributed and used in commercial//  and non-commercial software and hardware without restrictions.  ID3Lib is//  distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, either//  express or implied.//  //  The ID3Lib authors encourage improvements and optimisations to be sent to//  the ID3Lib coordinator, currently Dirk Mahoney (dirk@id3.org).  Approved//  submissions may be altered, and will be included and released under these//  terms.#ifdef HAVE_CONFIG_H#  include <config.h>#endif#include <string.h>#include "id3/id3lib_streams.h"#include "id3/tag.h"#include "demo_convert_options.h"using std::cout;using std::endl;static const char* VERSION_NUMBER = "$Revision: 1.15 $";void PrintUsage(const char *sName){  cout << "Converts between id3v1 and id3v2 tags of an mp3 file." << endl;  cout << endl;  cout << "Will render both types of tag by default.  Only the last" << endl       << "tag type indicated in the option list will be used.  Non-" << endl       << "rendered will remain unchanged in the original file.  Will" << endl       << "also parse and convert Lyrics3 v2.0 frames, but will not" << endl       << "render them." << endl;}void PrintVersion(const char *sName){  size_t nIndex;  cout << sName << " ";  for (nIndex = 0; nIndex < strlen(VERSION_NUMBER); nIndex++)  {    if (VERSION_NUMBER[nIndex] == ' ')     {      break;    }  }  nIndex++;  for (; nIndex < strlen (VERSION_NUMBER); nIndex++)  {    if (VERSION_NUMBER[nIndex] == ' ')     {      break;    }    cout << VERSION_NUMBER[nIndex];  }  cout << endl;  cout << "Uses " << ID3LIB_FULL_NAME << endl << endl;  cout << "This program converts and strips ID3v1/1.1 and Lyrics3 v2.0" << endl;  cout << "tags to ID3v2 tags." << endl << endl;}void DisplayTags(ostream &os, luint nTags){  if (!((nTags & ID3TT_ID3V1) || (nTags & ID3TT_ID3V2)))  {    os << "no tag";  }  if (nTags & ID3TT_ID3V1)  {    os << "v1";  }  if ((nTags & ID3TT_ID3V1) && (nTags & ID3TT_ID3V2))  {    os << " and ";  }  if (nTags & ID3TT_ID3V2)  {    os << "v2";  }}int main( unsigned int argc, char * const argv[]){  flags_t ulFlag = ID3TT_ALL;  gengetopt_args_info args;  if (cmdline_parser(argc, argv, &args) != 0)  {    exit(1);  }#if defined ID3_ENABLE_DEBUG  if (args.warning_flag)  {    ID3D_INIT_WARNING();    ID3D_WARNING ( "warnings turned on" );  }  if (args.notice_flag)  {    ID3D_INIT_NOTICE();    ID3D_NOTICE ( "notices turned on" );  }#endif  if (args.v1tag_flag)  {    ulFlag = ID3TT_ID3V1;  }  if (args.v2tag_flag)  {    ulFlag = ID3TT_ID3V2;  }  const char* filename = NULL;  for (size_t i = 0; i < args.inputs_num; ++i)  {    filename = args.inputs[i];    ID3_Tag myTag;        if (args.strip_given)    {      cout << "Stripping ";    }    else    {      cout << "Converting ";    }    cout << filename << ": ";        myTag.Clear();    myTag.Link(filename, ID3TT_ALL);    myTag.SetPadding(args.padding_flag);        cout << "attempting ";    DisplayTags(cout, ulFlag);    luint nTags;        if (args.strip_flag)    {      nTags = myTag.Strip(ulFlag);      cout << ", stripped ";    }    else    {      nTags = myTag.Update(ulFlag);      cout << ", converted ";    }        DisplayTags(cout, nTags);    cout << endl;  }    return 0;}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -