X-Git-Url: http://git.treefish.org/~alex/usetaglib.git/blobdiff_plain/3f5ca8b570c4a46224f3d99bfbc0a6a520b9c28c..5efba655476d5687be2fdf9e19ff48f93ea31d27:/usetaglib.cpp?ds=sidebyside diff --git a/usetaglib.cpp b/usetaglib.cpp index e54b09e..8c04a55 100644 --- a/usetaglib.cpp +++ b/usetaglib.cpp @@ -109,35 +109,51 @@ int action_printAudio (const TagLib::FileRef f) void printHelp () { - cout << "Usage: usetaglib [ACTION]... [FILE]..." << endl; - cout << "Read and edit meta-data of audio formats supported by taglib." << endl; - cout << endl; - cout << "-h, --help Show this help" << endl; - cout << endl; - cout << "ACTIONS" << endl; - cout << " If multiple actions are specified they are executed in given order." << endl; - cout << endl; - cout << setfill(' ') << setw(37) << left << " -l, --list" - << "list all tags (implicit if no action specified)"<< endl; - cout << setfill(' ') << setw(37) << left << " -a, --listaudio" - << "show audio information"<< endl; - cout << setfill(' ') << setw(37) << left << " -e, --erase=TAGNAME" - << "erase tag TAGNAME"<< endl; - cout << setfill(' ') << setw(37) << left << " -r, --replace=TAGNAME=TAGVALSPEC" - << "replace tag TAGNAME with value TAGVALSPEC"<< endl; - cout << setfill(' ') << setw(37) << left << " -i, --insert=TAGNAME=TAGVALSPEC" - << "insert value TAGVALSPEC for tag TAGNAME"<< endl; - cout << endl; - cout << "TAGVALSPEC" << endl; - cout << " a list of values separated by '=': val1=val2=val3..." << endl; - cout << endl; - cout << "EXAMPLES" << endl; - cout << " usetaglib file.ogg" << endl; - cout << " usetaglib -e ALBUM file.flac" << endl; - cout << " usetaglib -r \"ALBUM=New Album\" -i ARTIST=Horst=Hubert file.mp3" << endl; - cout << " usetaglib -r ARTIST=Horst -l file1.ogg file2.mp3" << endl; - cout << " usetaglib -i \"ALBUMARTIST=Horst und Hubert\" file.ogg" << endl; - cout << " usetaglib --insert=\"ALBUMARTIST=Horst und Hubert\" file.ogg" << endl; + cout << + "Usage: usetaglib [ACTION]... [FILE]...\n" + "Read and edit meta-data of audio formats supported by taglib.\n" + "Multiple ACTIONS and FILES may be given in arbitrary order.\n" + "\n" + "-h, --help show help\n" + "-H, --longhelp show long help\n" + "\n" + "ACTIONS\n" + " If multiple actions are specified they are executed in given order.\n" + "\n" + " -l, --list list all tags (implicit if no action given)\n" + " -a, --audio show audio information\n" + " -e, --erase=TAGNAME erase tag TAGNAME\n" + " -r, --replace=TAGNAME=TAGVAL replace tag TAGNAME with value TAGVAL\n" + " -i, --insert=TAGNAME=TAGVAL insert tag TAGNAME with value TAGVAL\n"; +} + +void printExtraHelp () +{ + cout << + "\n" + "TAGNAME\n" + " TAGNAME is a media format independent id encoding the type of a tag.\n" + " Note that also in --list output, format specific tag ids are translated\n" + " to unified TAGNAMES.\n" + "\n" + " Some \"well-known\" tags you might want to use are:\n" + " TITLE ALBUM ARTIST ALBUMARTIST SUBTITLE TRACKNUMBER DISCNUMBER DATE\n" + " ORIGINALDATE GENRE COMMENT TITLESORT ALBUMSORT ARTISTSORT\n" + " ALBUMARTISTSORT COMPOSER LYRICIST CONDUCTOR REMIXER PERFORMER ISRC ASIN\n" + " BPM COPYRIGHT ENCODEDBY MOOD COMMENT MEDIA LABEL CATALOGNUMBER BARCODE\n" + "\n" + "TAGVAL\n" + " TAGVAL has to be either a single string or a list of strings separated\n" + " by equal signs (=). If a list is given, multiple tags of type TAGNAME\n" + " will be created and set to the respective values given in the list.\n" + "\n" + "EXAMPLES\n" + " usetaglib file.ogg\n" + " usetaglib -e ALBUM file.flac\n" + " usetaglib -r \"ALBUM=New Album\" -i ARTIST=Horst=Hubert file.mp3\n" + " usetaglib -r ARTIST=Horst -l file1.ogg file2.mp3\n" + " usetaglib -i \"ALBUMARTIST=Horst und Hubert\" file.ogg\n" + " usetaglib --insert=\"ALBUMARTIST=Horst und Hubert\" file.ogg\n"; } int main(int argc, char *argv[]) @@ -150,8 +166,9 @@ int main(int argc, char *argv[]) static struct option long_options[] = { {"help", no_argument, 0, 'h'}, + {"longhelp", no_argument, 0, 'H'}, {"list", no_argument, 0, 'l'}, - {"listaudio", no_argument, 0, 'a'}, + {"audio", no_argument, 0, 'a'}, {"insert", required_argument, 0, 'i'}, {"erase", required_argument, 0, 'e'}, {"replace", required_argument, 0, 'r'}, @@ -159,7 +176,7 @@ int main(int argc, char *argv[]) }; int option_index = 0; - c = getopt_long (argc, argv, "hlai:e:r:", + c = getopt_long (argc, argv, "hHlai:e:r:", long_options, &option_index); if (c == -1) @@ -170,35 +187,32 @@ int main(int argc, char *argv[]) case 0: if (long_options[option_index].flag != 0) break; - case 'h': printHelp(); return 0; break; - + case 'H': + printHelp(); + printExtraHelp(); + return 0; + break; case 'l': requestedActions.push_back( make_pair(LIST, "") ); break; - case 'a': requestedActions.push_back( make_pair(AUDIO, "") ); break; - case 'i': requestedActions.push_back( make_pair(INSERT, optarg) ); break; - case 'e': requestedActions.push_back( make_pair(ERASE, optarg) ); break; - case 'r': requestedActions.push_back( make_pair(REPLACE, optarg) ); break; - case '?': break; - default: abort (); } @@ -227,21 +241,17 @@ int main(int argc, char *argv[]) case LIST: action_printTags(f, propmap); break; - case AUDIO: action_printAudio(f); break; - case ERASE: action_eraseTag(propmap, actit->second); FCHANGED = true; break; - case REPLACE: action_replaceTag(propmap, splitToTagPair(actit->second)); FCHANGED = true; break; - case INSERT: action_insertTag(propmap, splitToTagPair(actit->second)); FCHANGED = true;