From b0a51a88930c88e5b91fb3ebaa992a77abd4a945 Mon Sep 17 00:00:00 2001 From: "Zane U. Ji" Date: Sun, 21 Jul 2013 02:05:11 +0800 Subject: [PATCH] Cleaned up source code --- src/getword.cpp | 2 +- src/playlistrenamer.cpp | 163 ---------------------------------------- src/playlistrenamer.h | 21 ------ src/png/Thumbs.db | Bin 65536 -> 0 bytes src/xmlcopyeditor.cpp | 14 ++-- 5 files changed, 10 insertions(+), 190 deletions(-) delete mode 100644 src/playlistrenamer.cpp delete mode 100644 src/playlistrenamer.h delete mode 100755 src/png/Thumbs.db diff --git a/src/getword.cpp b/src/getword.cpp index 393e959..880e1f1 100755 --- a/src/getword.cpp +++ b/src/getword.cpp @@ -97,7 +97,7 @@ bool GetWord::isWordCharacter ( char *s, size_t *bytes ) // Unicode punctuation marks // Based on http://www1.tip.nl/~t876506/utf8tbl.html return ( - *us == 226 && * ( us + 1 ) == 128 || + ( *us == 226 && * ( us + 1 ) == 128 ) || *us == 194 || *us == 203 ) ? false : true; diff --git a/src/playlistrenamer.cpp b/src/playlistrenamer.cpp deleted file mode 100644 index 8657d5e..0000000 --- a/src/playlistrenamer.cpp +++ /dev/null @@ -1,163 +0,0 @@ -#include -#include "playlistrenamer.h" -#include "binaryfile.h" -#include "replace.h" -#include "wrapregex.h" -#include - -bool PlayListRenamer::run ( - const std::string& folder ) -{ - std::string m3uFile, m3uBuffer; - m3uFile = folder + "playlist.m3u"; - - if ( !readFile ( m3uFile, m3uBuffer ) ) - { - return false; - } - - std::vector lines; - if ( !splitBuffer ( m3uBuffer, lines ) ) - { - wxMessageBox ( _T("can't split buffer") ); - return false; - } - - std::string title, from, to; - size_t lineCount = lines.size(); - int trackNo = 0; - - wxString random; - random.Printf ( _T("%i"), lineCount ); - wxMessageBox (random ); - for ( size_t i = 0; i < lineCount; i++ ) - { - wxString line; - line = wxString ( lines[i].c_str(), wxConvUTF8, lines[i].size() ); - wxMessageBox ( line ); - - if ( lines[i][0] == '#' ) - { - if ( lines[i].find ( "EXTINF" ) == std::string::npos ) - continue; - - //isolate m3u trackname - std::string pattern0 = ".+?,"; - WrapRegex re0 ( pattern0, true ); - int replacements; - title = re0.replaceGlobal ( lines[i], &replacements ); - - bool abbrev = false; - if ( title.size() > 22 ) - { - title.erase ( 18 ); - abbrev = true; - } - - // no trailing whitespace - std::string pattern1 = "\\s+$"; - WrapRegex re1 ( pattern1, false ); - title = re1.replaceGlobal ( title, &replacements ); - - // no contiguous whitespace - std::string pattern2 = "\\s\\s+"; - std::string replace2 = " "; - WrapRegex re2 ( pattern2, false, replace2 ); - title = re2.replaceGlobal ( title, &replacements ); - - // alphanumeric only - std::string pattern3 = "[;\\.\\[\\],!^&*()]"; - WrapRegex re3 ( pattern3, false ); - title = re3.replaceGlobal ( title, &replacements ); - - if ( abbrev ) - title.append ( "... " ); - - title += ".mp3"; - } - else - { - from = lines[i]; - to = title; - - wxString wideFrom, wideTo; - wideFrom = wxString ( from.c_str(), wxConvUTF8, from.size() ); - wideTo = wxString ( to.c_str(), wxConvUTF8, to.size() ); - - renameFile ( from, to, folder ); - editFiles ( from, to, folder ); - - title.clear(); - } - } -} - -bool PlayListRenamer::readFile ( const std::string& path, std::string& buffer ) -{ - buffer.clear(); - try { - BinaryFile bf ( path.c_str() ); - buffer.append ( bf.getData(), bf.getDataLen() ); - } - catch ( ... ) - { - return false; - } - return true; -} - -bool PlayListRenamer::splitBuffer ( const std::string& buffer, std::vector& lineVector ) -{ - wxMessageBox ( wxString ( buffer.c_str(), wxConvUTF8, buffer.size() ) ); - std::string line; - lineVector.clear(); - size_t bufferSize = buffer.size(); - - for ( size_t i = 0; i < bufferSize; i++ ) - { - if ( buffer[i] == '\n' ) - { - if ( !line.empty() ) - { - lineVector.push_back ( line ); - line.clear(); - } - } - else if ( buffer[i] == '\r' ) - { - ; - } - else - line.append ( buffer[i], 1 ); - } - if ( !line.empty() ) - lineVector.push_back ( line ); - - if ( lineVector.empty() ) - return false; - - return true; -} - -std::string PlayListRenamer::numToString ( int i) -{ - std::stringstream sstr; - sstr << i; - - return sstr.str(); -} - -void PlayListRenamer::renameFile ( const std::string& from, const std::string& to, const std::string& folder ) -{ - wxString wideFrom, wideTo, wideFolder; - wideFolder = wxString ( folder.c_str(), wxConvUTF8, folder.size() ); - wideFrom = wxString ( from.c_str(), wxConvUTF8, from.size() ); - wideTo = wxString ( to.c_str(), wxConvUTF8, to.size() ); - wxMessageBox ( wideFolder + wideFrom, wideFolder + wideTo ); - //wxRenameFile ( wideFolder + wideFrom, wideFolder + wideTo ); -} - -void PlayListRenamer::editFiles ( const std::string& from, const std::string& to, const std::string& folder ) -{ - //tbd -} diff --git a/src/playlistrenamer.h b/src/playlistrenamer.h deleted file mode 100644 index 87717dc..0000000 --- a/src/playlistrenamer.h +++ /dev/null @@ -1,21 +0,0 @@ -#ifndef PLAYLIST_RENAMER_H -#define PLAYLIST_RENAMER_H - -#include -#include - -class PlayListRenamer -{ -public: - PlayListRenamer() {} - ~PlayListRenamer() {} - bool run ( const std::string& folder ); -private: - bool readFile ( const std::string& path, std::string& buffer ); - bool splitBuffer ( const std::string& buffer, std::vector& lineVector ); - void renameFile ( const std::string& from, const std::string& to, const std::string& folder ); - void editFiles ( const std::string& from, const std::string& to, const std::string& folder ); - std::string numToString ( int i ); -}; - -#endif diff --git a/src/png/Thumbs.db b/src/png/Thumbs.db deleted file mode 100755 index 3f6f799d71ba197052041e6388605891ff84ac16..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 65536 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 rxIFlOWugSu!oQym`~m++|Nq{B>%Z88m4PML_wT