CStdString CCDDARipper::GetAlbumDirName(const MUSIC_INFO::CMusicInfoTag& infoTag) { CStdString strAlbumDir; // use audiocds.trackpathformat setting to format // directory name where CD tracks will be stored, // use only format part ending at the last '/' strAlbumDir = CSettings::Get().GetString("audiocds.trackpathformat"); int pos = max(strAlbumDir.ReverseFind('/'), strAlbumDir.ReverseFind('\\')); if (pos < 0) return ""; // no directory strAlbumDir = strAlbumDir.Left(pos); // replace %A with album artist name if (strAlbumDir.Find("%A") != -1) { CStdString strAlbumArtist = StringUtils::Join(infoTag.GetAlbumArtist(), g_advancedSettings.m_musicItemSeparator); if (strAlbumArtist.IsEmpty()) strAlbumArtist = StringUtils::Join(infoTag.GetArtist(), g_advancedSettings.m_musicItemSeparator); if (strAlbumArtist.IsEmpty()) strAlbumArtist = "Unknown Artist"; else strAlbumArtist.Replace('/', '_'); strAlbumDir.Replace("%A", strAlbumArtist); } // replace %B with album title if (strAlbumDir.Find("%B") != -1) { CStdString strAlbum = infoTag.GetAlbum(); if (strAlbum.IsEmpty()) strAlbum.Format("Unknown Album %s", CDateTime::GetCurrentDateTime().GetAsLocalizedDateTime().c_str()); else strAlbum.Replace('/', '_'); strAlbumDir.Replace("%B", strAlbum); } // replace %G with genre if (strAlbumDir.Find("%G") != -1) { CStdString strGenre = StringUtils::Join(infoTag.GetGenre(), g_advancedSettings.m_musicItemSeparator); if (strGenre.IsEmpty()) strGenre = "Unknown Genre"; else strGenre.Replace('/', '_'); strAlbumDir.Replace("%G", strGenre); } // replace %Y with year if (strAlbumDir.Find("%Y") != -1) { CStdString strYear = infoTag.GetYearString(); if (strYear.IsEmpty()) strYear = "Unknown Year"; else strYear.Replace('/', '_'); strAlbumDir.Replace("%Y", strYear); } return strAlbumDir; }
std::string CCDDARipper::GetAlbumDirName(const MUSIC_INFO::CMusicInfoTag& infoTag) { std::string strAlbumDir; // use audiocds.trackpathformat setting to format // directory name where CD tracks will be stored, // use only format part ending at the last '/' strAlbumDir = CSettings::GetInstance().GetString(CSettings::SETTING_AUDIOCDS_TRACKPATHFORMAT); size_t pos = strAlbumDir.find_last_of("/\\"); if (pos == std::string::npos) return ""; // no directory strAlbumDir = strAlbumDir.substr(0, pos); // replace %A with album artist name if (strAlbumDir.find("%A") != std::string::npos) { std::string strAlbumArtist = StringUtils::Join(infoTag.GetAlbumArtist(), g_advancedSettings.m_musicItemSeparator); if (strAlbumArtist.empty()) strAlbumArtist = StringUtils::Join(infoTag.GetArtist(), g_advancedSettings.m_musicItemSeparator); if (strAlbumArtist.empty()) strAlbumArtist = "Unknown Artist"; else StringUtils::Replace(strAlbumArtist, '/', '_'); StringUtils::Replace(strAlbumDir, "%A", strAlbumArtist); } // replace %B with album title if (strAlbumDir.find("%B") != std::string::npos) { std::string strAlbum = infoTag.GetAlbum(); if (strAlbum.empty()) strAlbum = StringUtils::Format("Unknown Album %s", CDateTime::GetCurrentDateTime().GetAsLocalizedDateTime().c_str()); else StringUtils::Replace(strAlbum, '/', '_'); StringUtils::Replace(strAlbumDir, "%B", strAlbum); } // replace %G with genre if (strAlbumDir.find("%G") != std::string::npos) { std::string strGenre = StringUtils::Join(infoTag.GetGenre(), g_advancedSettings.m_musicItemSeparator); if (strGenre.empty()) strGenre = "Unknown Genre"; else StringUtils::Replace(strGenre, '/', '_'); StringUtils::Replace(strAlbumDir, "%G", strGenre); } // replace %Y with year if (strAlbumDir.find("%Y") != std::string::npos) { std::string strYear = infoTag.GetYearString(); if (strYear.empty()) strYear = "Unknown Year"; else StringUtils::Replace(strYear, '/', '_'); StringUtils::Replace(strAlbumDir, "%Y", strYear); } return strAlbumDir; }