And Now here's a full functional program:
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/* | |
This SOURCE CODE is provided AS IS with NO WARRANTY OF ANY KIND, so always take a backup of your files first | |
@auther Mohammed Hewedy | |
*/ | |
#include <iostream> | |
#include <cstring> | |
#include <taglib/fileref.h> | |
#include <taglib/tag.h> | |
#include <dirent.h> | |
using namespace std; | |
using namespace TagLib; | |
void modifyID3Data(char*, char*, char*); | |
void usage(); | |
char* extractSongName(char* songName, char* fileName); | |
char* obtainFullPath(char* fullPath, char* dirName, char* FileName); | |
int main(int argc, char** argv) | |
{ | |
if (argc != 3) | |
usage(); | |
char* dirName = argv[1]; | |
DIR* d = opendir(dirName); | |
char* artist = argv[2]; | |
if (d) | |
{ | |
dirent* dn; | |
while ( dn = readdir(d)) | |
{ | |
if (dn->d_type == DT_REG) | |
{ | |
char* fileName = dn->d_name; | |
char fullPath[strlen(dirName) + strlen(fileName) + 1]; | |
obtainFullPath(fullPath, dirName, fileName); | |
char songName[strlen(fileName)-3]; | |
extractSongName(songName, fileName); | |
modifyID3Data(fullPath, artist, songName); | |
cout <<"Updating " << fileName <<endl; | |
} | |
} | |
closedir(d); | |
} | |
return 0; | |
} | |
char* obtainFullPath(char* fullPath, char* dirName, char* fileName) | |
{ | |
strcpy(fullPath, dirName); | |
strcpy(&fullPath[strlen(dirName)], fileName); | |
} | |
char* extractSongName(char* songName, char* fileName) | |
{ | |
int l = strlen(fileName); | |
strncpy(songName, fileName, l-4); | |
songName[l-4] = '\0'; | |
return songName; | |
} | |
void modifyID3Data(char* fullFilePath, char* artist, char* songName) | |
{ | |
FileRef f(fullFilePath); | |
cout << f.tag()->artist() << endl; | |
f.tag()->setArtist(artist); | |
f.tag()->setTitle(songName); | |
f.save(); | |
} | |
void usage() | |
{ | |
char* appName = "tagEditor"; | |
char* desc = "updates a bulk of Dir of MP3 Files (and other formats, see http://developer.kde.org/~wheeler/taglib.html) " | |
"sets the Artist with <artist> and set the song title by its file name execluding the four character extentions"; | |
char* disc = "This Program is provided AS IS with NO WARRANTY OF ANY KIND, so always take a backup of your files first."; | |
cout << "Usage: " << appName << " <dir> <artist>" <<endl << desc << endl << endl << disc << endl; | |
exit(1); | |
} |
No comments:
Post a Comment