Kodi Documentation 18.0
Kodi is an open source media player and entertainment hub.
CMusicDatabase Class Reference

Class to store and read tag information. More...

#include <MusicDatabase.h>

Inheritance diagram for CMusicDatabase:
CDatabase

Public Member Functions

 CMusicDatabase (void)
 
 ~CMusicDatabase (void) override
 
bool Open () override
 
bool CommitTransaction () override
 
void EmptyCache ()
 
void Clean ()
 
int Cleanup (CGUIDialogProgress *progressDialog=nullptr)
 
bool LookupCDDBInfo (bool bRequery=false)
 
void DeleteCDDBInfo ()
 
int AddSong (const int idAlbum, const std::string &strTitle, const std::string &strMusicBrainzTrackID, const std::string &strPathAndFileName, const std::string &strComment, const std::string &strMood, const std::string &strThumb, const std::string &artistDisp, const std::string &artistSort, const std::vector< std::string > &genres, int iTrack, int iDuration, int iYear, const int iTimesPlayed, int iStartOffset, int iEndOffset, const CDateTime &dtLastPlayed, float rating, int userrating, int votes, const ReplayGain &replayGain)
 Add a song to the database. More...
 
bool GetSong (int idSong, CSong &song)
 
bool UpdateSong (CSong &song, bool bArtists=true)
 Update a song and all its nested entities (genres, artists, contributors) More...
 
int UpdateSong (int idSong, const std::string &strTitle, const std::string &strMusicBrainzTrackID, const std::string &strPathAndFileName, const std::string &strComment, const std::string &strMood, const std::string &strThumb, const std::string &artistDisp, const std::string &artistSort, const std::vector< std::string > &genres, int iTrack, int iDuration, int iYear, int iTimesPlayed, int iStartOffset, int iEndOffset, const CDateTime &dtLastPlayed, float rating, int userrating, int votes, const ReplayGain &replayGain)
 Update a song in the database. More...
 
bool GetSongByFileName (const std::string &strFileName, CSong &song, int64_t startOffset=0)
 
bool GetSongsByPath (const std::string &strPath, MAPSONGS &songs, bool bAppendToMap=false)
 
bool Search (const std::string &search, CFileItemList &items)
 
bool RemoveSongsFromPath (const std::string &path, MAPSONGS &songs, bool exact=true)
 
bool SetSongUserrating (const std::string &filePath, int userrating)
 
bool SetSongUserrating (int idSong, int userrating)
 
bool SetSongVotes (const std::string &filePath, int votes)
 
int GetSongByArtistAndAlbumAndTitle (const std::string &strArtist, const std::string &strAlbum, const std::string &strTitle)
 
bool AddAlbum (CAlbum &album, int idSource)
 Add an album and all its songs to the database. More...
 
bool UpdateAlbum (CAlbum &album)
 Update an album and all its nested entities (artists, songs etc) More...
 
int AddAlbum (const std::string &strAlbum, const std::string &strMusicBrainzAlbumID, const std::string &strReleaseGroupMBID, const std::string &strArtist, const std::string &strArtistSort, const std::string &strGenre, int year, const std::string &strRecordLabel, const std::string &strType, bool bCompilation, CAlbum::ReleaseType releaseType)
 Add an album to the database. More...
 
bool GetAlbum (int idAlbum, CAlbum &album, bool getSongs=true)
 retrieve an album, optionally with all songs. More...
 
int UpdateAlbum (int idAlbum, const std::string &strAlbum, const std::string &strMusicBrainzAlbumID, const std::string &strReleaseGroupMBID, const std::string &strArtist, const std::string &strArtistSort, const std::string &strGenre, const std::string &strMoods, const std::string &strStyles, const std::string &strThemes, const std::string &strReview, const std::string &strImage, const std::string &strLabel, const std::string &strType, float fRating, int iUserrating, int iVotes, int iYear, bool bCompilation, CAlbum::ReleaseType releaseType, bool bScrapedMBID)
 
bool ClearAlbumLastScrapedTime (int idAlbum)
 
bool HasAlbumBeenScraped (int idAlbum)
 
bool AddAudioBook (const CFileItem &item)
 
bool SetResumeBookmarkForAudioBook (const CFileItem &item, int bookmark)
 
bool GetResumeBookmarkForAudioBook (const CFileItem &item, int &bookmark)
 
bool InsideScannedPath (const std::string &path)
 Checks if the given path is inside a folder that has already been scanned into the library. More...
 
int GetAlbumIdByPath (const std::string &path)
 
bool GetAlbumFromSong (int idSong, CAlbum &album)
 
int GetAlbumByName (const std::string &strAlbum, const std::string &strArtist="")
 
int GetAlbumByName (const std::string &strAlbum, const std::vector< std::string > &artist)
 
int GetAlbumByMatch (const CAlbum &album)
 
std::string GetAlbumById (int id)
 
bool SetAlbumUserrating (const int idAlbum, int userrating)
 
bool UpdateArtist (const CArtist &artist)
 
int AddArtist (const std::string &strArtist, const std::string &strMusicBrainzArtistID, const std::string &strSortName, bool bScrapedMBID=false)
 
int AddArtist (const std::string &strArtist, const std::string &strMusicBrainzArtistID, bool bScrapedMBID=false)
 
bool GetArtist (int idArtist, CArtist &artist, bool fetchAll=false)
 
bool GetArtistExists (int idArtist)
 
int GetLastArtist ()
 
int UpdateArtist (int idArtist, const std::string &strArtist, const std::string &strSortName, const std::string &strMusicBrainzArtistID, bool bScrapedMBID, const std::string &strType, const std::string &strGender, const std::string &strDisambiguation, const std::string &strBorn, const std::string &strFormed, const std::string &strGenres, const std::string &strMoods, const std::string &strStyles, const std::string &strInstruments, const std::string &strBiography, const std::string &strDied, const std::string &strDisbanded, const std::string &strYearsActive, const std::string &strImage, const std::string &strFanart)
 
bool UpdateArtistScrapedMBID (int idArtist, const std::string &strMusicBrainzArtistID)
 
bool GetTranslateBlankArtist ()
 
void SetTranslateBlankArtist (bool translate)
 
bool HasArtistBeenScraped (int idArtist)
 
bool ClearArtistLastScrapedTime (int idArtist)
 
int AddArtistDiscography (int idArtist, const std::string &strAlbum, const std::string &strYear)
 
bool DeleteArtistDiscography (int idArtist)
 
bool GetArtistDiscography (int idArtist, CFileItemList &items)
 
std::string GetArtistById (int id)
 
int GetArtistByName (const std::string &strArtist)
 
int GetArtistByMatch (const CArtist &artist)
 
bool GetArtistFromSong (int idSong, CArtist &artist)
 
bool IsSongArtist (int idSong, int idArtist)
 
bool IsSongAlbumArtist (int idSong, int idArtist)
 
std::string GetRoleById (int id)
 
bool UpdateArtistSortNames (int idArtist=-1)
 Propagate artist sort name into the concatenated artist sort name strings held for songs and albums. More...
 
int AddPath (const std::string &strPath)
 
bool GetPaths (std::set< std::string > &paths)
 
bool SetPathHash (const std::string &path, const std::string &hash)
 
bool GetPathHash (const std::string &path, std::string &hash)
 
bool GetAlbumPaths (int idAlbum, std::vector< std::pair< std::string, int > > &paths)
 
bool GetAlbumPath (int idAlbum, std::string &basePath)
 
int GetDiscnumberForPathID (int idPath)
 
bool GetOldArtistPath (int idArtist, std::string &path)
 
bool GetArtistPath (const CArtist &artist, std::string &path)
 
bool GetAlbumFolder (const CAlbum &album, const std::string &strAlbumPath, std::string &strFolder)
 
bool GetArtistFolderName (const CArtist &artist, std::string &strFolder)
 
bool GetArtistFolderName (const std::string &strArtist, const std::string &strMusicBrainzArtistID, std::string &strFolder)
 
bool UpdateSources ()
 
int AddSource (const std::string &strName, const std::string &strMultipath, const std::vector< std::string > &vecPaths, int id=-1)
 
int UpdateSource (const std::string &strOldName, const std::string &strName, const std::string &strMultipath, const std::vector< std::string > &vecPaths)
 
bool RemoveSource (const std::string &strName)
 
int GetSourceFromPath (const std::string &strPath)
 
bool AddAlbumSource (int idAlbum, int idSource)
 
bool AddAlbumSources (int idAlbum, const std::string &strPath)
 
bool DeleteAlbumSources (int idAlbum)
 
bool GetSources (CFileItemList &items)
 
bool GetSourcesByArtist (int idArtist, CFileItem *item)
 
bool GetSourcesByAlbum (int idAlbum, CFileItem *item)
 
bool GetSourcesBySong (int idSong, const std::string &strPath, CFileItem *item)
 
int GetSourceByName (const std::string &strSource)
 
std::string GetSourceById (int id)
 
int AddGenre (std::string &strGenre)
 
std::string GetGenreById (int id)
 
int GetGenreByName (const std::string &strGenre)
 
bool AddAlbumArtist (int idArtist, int idAlbum, std::string strArtist, int iOrder)
 
bool GetAlbumsByArtist (int idArtist, std::vector< int > &albums)
 
bool GetArtistsByAlbum (int idAlbum, CFileItem *item)
 
bool DeleteAlbumArtistsByAlbum (int idAlbum)
 
int AddRole (const std::string &strRole)
 
bool AddSongArtist (int idArtist, int idSong, const std::string &strRole, const std::string &strArtist, int iOrder)
 
bool AddSongArtist (int idArtist, int idSong, int idRole, const std::string &strArtist, int iOrder)
 
int AddSongContributor (int idSong, const std::string &strRole, const std::string &strArtist, const std::string &strSort)
 
void AddSongContributors (int idSong, const VECMUSICROLES &contributors, const std::string &strSort)
 
int GetRoleByName (const std::string &strRole)
 
bool GetRolesByArtist (int idArtist, CFileItem *item)
 
bool GetSongsByArtist (int idArtist, std::vector< int > &songs)
 
bool GetArtistsBySong (int idSong, std::vector< int > &artists)
 
bool DeleteSongArtistsBySong (int idSong)
 
bool AddSongGenres (int idSong, const std::vector< std::string > &genres)
 
bool GetGenresBySong (int idSong, std::vector< int > &genres)
 
bool GetGenresByAlbum (int idAlbum, CFileItem *item)
 
bool GetGenresByArtist (int idArtist, CFileItem *item)
 
bool GetIsAlbumArtist (int idArtist, CFileItem *item)
 
bool GetTop100 (const std::string &strBaseDir, CFileItemList &items)
 
bool GetTop100Albums (VECALBUMS &albums)
 
bool GetTop100AlbumSongs (const std::string &strBaseDir, CFileItemList &item)
 
bool GetRecentlyAddedAlbums (VECALBUMS &albums, unsigned int limit=0)
 
bool GetRecentlyAddedAlbumSongs (const std::string &strBaseDir, CFileItemList &item, unsigned int limit=0)
 
bool GetRecentlyPlayedAlbums (VECALBUMS &albums)
 
bool GetRecentlyPlayedAlbumSongs (const std::string &strBaseDir, CFileItemList &item)
 
bool GetCompilationAlbums (const std::string &strBaseDir, CFileItemList &items)
 
bool GetCompilationSongs (const std::string &strBaseDir, CFileItemList &items)
 
int GetCompilationAlbumsCount ()
 
int GetSinglesCount ()
 
int GetArtistCountForRole (int role)
 
int GetArtistCountForRole (const std::string &strRole)
 
void IncrementPlayCount (const CFileItem &item)
 Increment the playcount of an item Increments the playcount and updates the last played date. More...
 
bool CleanupOrphanedItems ()
 
bool GetGenresNav (const std::string &strBaseDir, CFileItemList &items, const Filter &filter=Filter(), bool countOnly=false)
 
bool GetSourcesNav (const std::string &strBaseDir, CFileItemList &items, const Filter &filter=Filter(), bool countOnly=false)
 
bool GetYearsNav (const std::string &strBaseDir, CFileItemList &items, const Filter &filter=Filter())
 
bool GetRolesNav (const std::string &strBaseDir, CFileItemList &items, const Filter &filter=Filter())
 
bool GetArtistsNav (const std::string &strBaseDir, CFileItemList &items, bool albumArtistsOnly=false, int idGenre=-1, int idAlbum=-1, int idSong=-1, const Filter &filter=Filter(), const SortDescription &sortDescription=SortDescription(), bool countOnly=false)
 
bool GetCommonNav (const std::string &strBaseDir, const std::string &table, const std::string &labelField, CFileItemList &items, const Filter &filter, bool countOnly)
 
bool GetAlbumTypesNav (const std::string &strBaseDir, CFileItemList &items, const Filter &filter=Filter(), bool countOnly=false)
 
bool GetMusicLabelsNav (const std::string &strBaseDir, CFileItemList &items, const Filter &filter=Filter(), bool countOnly=false)
 
bool GetAlbumsNav (const std::string &strBaseDir, CFileItemList &items, int idGenre=-1, int idArtist=-1, const Filter &filter=Filter(), const SortDescription &sortDescription=SortDescription(), bool countOnly=false)
 
bool GetAlbumsByYear (const std::string &strBaseDir, CFileItemList &items, int year)
 
bool GetSongsNav (const std::string &strBaseDir, CFileItemList &items, int idGenre, int idArtist, int idAlbum, const SortDescription &sortDescription=SortDescription())
 
bool GetSongsByYear (const std::string &baseDir, CFileItemList &items, int year)
 
bool GetSongsByWhere (const std::string &baseDir, const Filter &filter, CFileItemList &items, const SortDescription &sortDescription=SortDescription())
 
bool GetSongsFullByWhere (const std::string &baseDir, const Filter &filter, CFileItemList &items, const SortDescription &sortDescription=SortDescription(), bool artistData=false)
 
bool GetAlbumsByWhere (const std::string &baseDir, const Filter &filter, CFileItemList &items, const SortDescription &sortDescription=SortDescription(), bool countOnly=false)
 
bool GetArtistsByWhere (const std::string &strBaseDir, const Filter &filter, CFileItemList &items, const SortDescription &sortDescription=SortDescription(), bool countOnly=false)
 
int GetSongsCount (const Filter &filter=Filter())
 
bool GetFilter (CDbUrl &musicUrl, Filter &filter, SortDescription &sorting) override
 
unsigned int GetRandomSongIDs (const Filter &filter, std::vector< std::pair< int, int > > &songIDs)
 Gets song IDs in random order that match the filter criteria. More...
 
bool GetGenresJSON (CFileItemList &items, bool bSources=false)
 
bool GetArtistsByWhereJSON (const std::set< std::string > &fields, const std::string &baseDir, CVariant &result, int &total, const SortDescription &sortDescription=SortDescription())
 
bool GetAlbumsByWhereJSON (const std::set< std::string > &fields, const std::string &baseDir, CVariant &result, int &total, const SortDescription &sortDescription=SortDescription())
 
bool GetSongsByWhereJSON (const std::set< std::string > &fields, const std::string &baseDir, CVariant &result, int &total, const SortDescription &sortDescription=SortDescription())
 
bool SetScraper (int id, const CONTENT_TYPE &content, const ADDON::ScraperPtr scraper)
 
bool SetScraperAll (const std::string &strBaseDir, const ADDON::ScraperPtr scraper)
 
bool GetScraper (int id, const CONTENT_TYPE &content, ADDON::ScraperPtr &scraper)
 
bool ScraperInUse (const std::string &scraperID) const
 Check whether a given scraper is in use. More...
 
bool GetItems (const std::string &strBaseDir, CFileItemList &items, const Filter &filter=Filter(), const SortDescription &sortDescription=SortDescription())
 
bool GetItems (const std::string &strBaseDir, const std::string &itemType, CFileItemList &items, const Filter &filter=Filter(), const SortDescription &sortDescription=SortDescription())
 
std::string GetItemById (const std::string &itemType, int id)
 
void ExportToXML (const CLibExportSettings &settings, CGUIDialogProgress *progressDialog=nullptr)
 
bool ExportSongHistory (TiXmlNode *pNode, CGUIDialogProgress *progressDialog=nullptr)
 
void ImportFromXML (const std::string &xmlFile, CGUIDialogProgress *progressDialog=nullptr)
 
bool ImportSongHistory (const std::string &xmlFile, const int total, CGUIDialogProgress *progressDialog=nullptr)
 
void SetPropertiesForFileItem (CFileItem &item)
 
void SetArtForItem (int mediaId, const std::string &mediaType, const std::string &artType, const std::string &url)
 Sets art for a database item. Sets a single piece of art for a database item. More...
 
void SetArtForItem (int mediaId, const std::string &mediaType, const std::map< std::string, std::string > &art)
 Sets art for a database item. Sets multiple pieces of art for a database item. More...
 
bool GetArtForItem (int songId, int albumId, int artistId, bool bPrimaryArtist, std::vector< ArtForThumbLoader > &art)
 Fetch all related art for a database item. Fetches multiple pieces of art for a database item including that for related media types Given song id art for the related album, artist(s) and albumartist(s) will also be fetched, looking up the album and artist when ids are not provided. Given album id (and not song id) art for the related artist(s) will also be fetched, looking up the artist(s) when id are not provided. More...
 
bool GetArtForItem (int mediaId, const std::string &mediaType, std::map< std::string, std::string > &art)
 Fetch art for a database item. Fetches multiple pieces of art for a database item. More...
 
std::string GetArtForItem (int mediaId, const std::string &mediaType, const std::string &artType)
 Fetch art for a database item. Fetches a single piece of art for a database item. More...
 
bool RemoveArtForItem (int mediaId, const MediaType &mediaType, const std::string &artType)
 Remove art for a database item. Removes a single piece of art for a database item. More...
 
bool RemoveArtForItem (int mediaId, const MediaType &mediaType, const std::set< std::string > &artTypes)
 Remove art for a database item. Removes multiple pieces of art for a database item. More...
 
bool GetArtTypes (const MediaType &mediaType, std::vector< std::string > &artTypes)
 Fetch the distinct types of art held in the database for a type of media. More...
 
std::vector< std::string > GetAvailableArtTypesForItem (int mediaId, const MediaType &mediaType)
 Fetch the distinct types of available-but-unassigned art held in the database for a specific media item. More...
 
virtual int GetMusicNeedsTagScan ()
 Check if music files need all tags rescanning regardless of file being unchanged because the tag processing has changed (which may happen without db version changes) since they where last scanned. More...
 
void SetMusicNeedsTagScan (int version)
 Set minimum version number of db needed when tag data scanned from music files. More...
 
void SetMusicTagScanVersion (int version=0)
 Set the version number of tag data. More...
 
std::string GetLibraryLastUpdated ()
 
void SetLibraryLastUpdated ()
 
- Public Member Functions inherited from CDatabase
 CDatabase ()
 
virtual ~CDatabase (void)
 
bool IsOpen ()
 
virtual void Close ()
 
bool Compress (bool bForce=true)
 
void Interrupt ()
 
bool Open (const DatabaseSettings &db)
 
void BeginTransaction ()
 
void RollbackTransaction ()
 
bool InTransaction ()
 
void CopyDB (const std::string &latestDb)
 
void DropAnalytics ()
 
std::string PrepareSQL (std::string strStmt,...) const
 
std::string GetSingleValue (const std::string &strTable, const std::string &strColumn, const std::string &strWhereClause=std::string(), const std::string &strOrderBy=std::string())
 Get a single value from a table. More...
 
std::string GetSingleValue (const std::string &query)
 
std::string GetSingleValue (const std::string &query, std::unique_ptr< dbiplus::Dataset > &ds)
 Get a single value from a query on a dataset. More...
 
bool DeleteValues (const std::string &strTable, const Filter &filter=Filter())
 Delete values from a table. More...
 
bool ExecuteQuery (const std::string &strQuery)
 Execute a query that does not return any result. Note that if BeginMultipleExecute() has been called, the query will be queued until CommitMultipleExecute() is called. More...
 
bool ResultQuery (const std::string &strQuery)
 Execute a query that returns a result. More...
 
bool BeginMultipleExecute ()
 Start a multiple execution queue. Any ExecuteQuery() function following this call will be queued rather than executed until CommitMultipleExecute() is performed. NOTE: Queries that rely on any queued execute query will not function as expected during this period! More...
 
bool CommitMultipleExecute ()
 Commit the multiple execution queue to the database. Queries are performed within a transaction, and the transaction is rolled back should any one query fail. More...
 
bool QueueInsertQuery (const std::string &strQuery)
 Put an INSERT or REPLACE query in the queue. More...
 
bool CommitInsertQueries ()
 Commit all queries in the queue. More...
 
virtual bool BuildSQL (const std::string &strBaseDir, const std::string &strQuery, Filter &filter, std::string &strSQL, CDbUrl &dbUrl)
 
virtual bool BuildSQL (const std::string &strBaseDir, const std::string &strQuery, Filter &filter, std::string &strSQL, CDbUrl &dbUrl, SortDescription &sorting)
 
bool Connect (const std::string &dbName, const DatabaseSettings &db, bool create)
 

Static Public Member Functions

static void SetPropertiesFromArtist (CFileItem &item, const CArtist &artist)
 
static void SetPropertiesFromAlbum (CFileItem &item, const CAlbum &album)
 

Protected Member Functions

void CreateTables () override
 
void CreateAnalytics () override
 
int GetMinSchemaVersion () const override
 
int GetSchemaVersion () const override
 
const char * GetBaseDBName () const override
 
- Protected Member Functions inherited from CDatabase
void Split (const std::string &strFileNameAndPath, std::string &strPath, std::string &strFileName)
 
bool CreateDatabase ()
 Create database tables and analytics as needed. Calls CreateTables() and CreateAnalytics() on child classes. More...
 
int GetDBVersion ()
 
bool BuildSQL (const std::string &strQuery, const Filter &filter, std::string &strSQL)
 

Protected Attributes

std::map< std::string, int > m_genreCache
 
std::map< std::string, int > m_pathCache
 
- Protected Attributes inherited from CDatabase
bool m_sqlite
 whether we use sqlite (defaults to true) More...
 
std::unique_ptr< dbiplus::Databasem_pDB
 
std::unique_ptr< dbiplus::Datasetm_pDS
 
std::unique_ptr< dbiplus::Datasetm_pDS2
 
const CProfileManagerm_profileManager
 

Friends

class DatabaseUtils
 
class TestDatabaseUtilsHelper
 

Additional Inherited Members

- Public Types inherited from CDatabase
typedef struct CDatabase::DatasetFieldInfo DatasetFieldInfo
 

Detailed Description

Class to store and read tag information.

CMusicDatabase can be used to read and store tag information for faster access. It is based on sqlite (http://www.sqlite.org).

Here is the database layout:

See also
CAlbum, CSong, VECSONGS, CMapSong, VECARTISTS, VECALBUMS, VECGENRES

Constructor & Destructor Documentation

◆ CMusicDatabase()

CMusicDatabase::CMusicDatabase ( void  )

◆ ~CMusicDatabase()

CMusicDatabase::~CMusicDatabase ( void  )
override

Member Function Documentation

◆ AddAlbum() [1/2]

bool CMusicDatabase::AddAlbum ( CAlbum album,
int  idSource 
)

Add an album and all its songs to the database.

Parameters
albumthe album to add
idSourcethe music source id
Returns
the id of the album

◆ AddAlbum() [2/2]

int CMusicDatabase::AddAlbum ( const std::string &  strAlbum,
const std::string &  strMusicBrainzAlbumID,
const std::string &  strReleaseGroupMBID,
const std::string &  strArtist,
const std::string &  strArtistSort,
const std::string &  strGenre,
int  year,
const std::string &  strRecordLabel,
const std::string &  strType,
bool  bCompilation,
CAlbum::ReleaseType  releaseType 
)

Add an album to the database.

Parameters
strAlbumthe album title
strMusicBrainzAlbumIDthe Musicbrainz Id
strArtistthe album artist name(s) display string
strArtistSortthe album artist name(s) sort string
strGenrethe album genre(s)
yearthe year
strRecordLabelthe recording label
strTypealbum type (Musicbrainz release type e.g. "Broadcast, Soundtrack, live"),
bCompilationif the album is a compilation
releaseType"album" or "single"
Returns
the id of the album

◆ AddAlbumArtist()

bool CMusicDatabase::AddAlbumArtist ( int  idArtist,
int  idAlbum,
std::string  strArtist,
int  iOrder 
)

◆ AddAlbumSource()

bool CMusicDatabase::AddAlbumSource ( int  idAlbum,
int  idSource 
)

◆ AddAlbumSources()

bool CMusicDatabase::AddAlbumSources ( int  idAlbum,
const std::string &  strPath 
)

◆ AddArtist() [1/2]

int CMusicDatabase::AddArtist ( const std::string &  strArtist,
const std::string &  strMusicBrainzArtistID,
bool  bScrapedMBID = false 
)

◆ AddArtist() [2/2]

int CMusicDatabase::AddArtist ( const std::string &  strArtist,
const std::string &  strMusicBrainzArtistID,
const std::string &  strSortName,
bool  bScrapedMBID = false 
)

◆ AddArtistDiscography()

int CMusicDatabase::AddArtistDiscography ( int  idArtist,
const std::string &  strAlbum,
const std::string &  strYear 
)

◆ AddAudioBook()

bool CMusicDatabase::AddAudioBook ( const CFileItem item)

◆ AddGenre()

int CMusicDatabase::AddGenre ( std::string &  strGenre)

◆ AddPath()

int CMusicDatabase::AddPath ( const std::string &  strPath)

◆ AddRole()

int CMusicDatabase::AddRole ( const std::string &  strRole)

◆ AddSong()

int CMusicDatabase::AddSong ( const int  idAlbum,
const std::string &  strTitle,
const std::string &  strMusicBrainzTrackID,
const std::string &  strPathAndFileName,
const std::string &  strComment,
const std::string &  strMood,
const std::string &  strThumb,
const std::string &  artistDisp,
const std::string &  artistSort,
const std::vector< std::string > &  genres,
int  iTrack,
int  iDuration,
int  iYear,
const int  iTimesPlayed,
int  iStartOffset,
int  iEndOffset,
const CDateTime dtLastPlayed,
float  rating,
int  userrating,
int  votes,
const ReplayGain replayGain 
)

Add a song to the database.

Parameters
idAlbum[in] the database ID of the album for the song
strTitle[in] the title of the song (required to be non-empty)
strMusicBrainzTrackID[in] the MusicBrainz track ID of the song
strPathAndFileName[in] the path and filename to the song
strComment[in] the ids of the added songs
strMood[in] the mood of the added song
strThumb[in] the ids of the added songs
artistDisp[in] the assembled artist name(s) display string
artistSort[in] the artist name(s) sort string
genres[in] a vector of genres to which this song belongs
iTrack[in] the track number and disc number of the song
iDuration[in] the duration of the song
iYear[in] the year of the song
iTimesPlayed[in] the number of times the song has been played
iStartOffset[in] the start offset of the song (when using a single audio file with a .cue)
iEndOffset[in] the end offset of the song (when using a single audio file with .cue)
dtLastPlayed[in] the time the song was last played
rating[in] a rating for the song
userrating[in] a userrating (my rating) for the song
votes[in] a vote counter for the song rating
replayGain[in] album and track replaygain and peak values
Returns
the id of the song

◆ AddSongArtist() [1/2]

bool CMusicDatabase::AddSongArtist ( int  idArtist,
int  idSong,
const std::string &  strRole,
const std::string &  strArtist,
int  iOrder 
)

◆ AddSongArtist() [2/2]

bool CMusicDatabase::AddSongArtist ( int  idArtist,
int  idSong,
int  idRole,
const std::string &  strArtist,
int  iOrder 
)

◆ AddSongContributor()

int CMusicDatabase::AddSongContributor ( int  idSong,
const std::string &  strRole,
const std::string &  strArtist,
const std::string &  strSort 
)

◆ AddSongContributors()

void CMusicDatabase::AddSongContributors ( int  idSong,
const VECMUSICROLES contributors,
const std::string &  strSort 
)

◆ AddSongGenres()

bool CMusicDatabase::AddSongGenres ( int  idSong,
const std::vector< std::string > &  genres 
)

◆ AddSource()

int CMusicDatabase::AddSource ( const std::string &  strName,
const std::string &  strMultipath,
const std::vector< std::string > &  vecPaths,
int  id = -1 
)

◆ Clean()

void CMusicDatabase::Clean ( )

◆ Cleanup()

int CMusicDatabase::Cleanup ( CGUIDialogProgress progressDialog = nullptr)

◆ CleanupOrphanedItems()

bool CMusicDatabase::CleanupOrphanedItems ( )

◆ ClearAlbumLastScrapedTime()

bool CMusicDatabase::ClearAlbumLastScrapedTime ( int  idAlbum)

◆ ClearArtistLastScrapedTime()

bool CMusicDatabase::ClearArtistLastScrapedTime ( int  idArtist)

◆ CommitTransaction()

bool CMusicDatabase::CommitTransaction ( )
overridevirtual

Reimplemented from CDatabase.

◆ CreateAnalytics()

void CMusicDatabase::CreateAnalytics ( )
overrideprotectedvirtual

Implements CDatabase.

◆ CreateTables()

void CMusicDatabase::CreateTables ( void  )
overrideprotectedvirtual

Implements CDatabase.

◆ DeleteAlbumArtistsByAlbum()

bool CMusicDatabase::DeleteAlbumArtistsByAlbum ( int  idAlbum)

◆ DeleteAlbumSources()

bool CMusicDatabase::DeleteAlbumSources ( int  idAlbum)

◆ DeleteArtistDiscography()

bool CMusicDatabase::DeleteArtistDiscography ( int  idArtist)

◆ DeleteCDDBInfo()

void CMusicDatabase::DeleteCDDBInfo ( )

◆ DeleteSongArtistsBySong()

bool CMusicDatabase::DeleteSongArtistsBySong ( int  idSong)

◆ EmptyCache()

void CMusicDatabase::EmptyCache ( )

◆ ExportSongHistory()

bool CMusicDatabase::ExportSongHistory ( TiXmlNode *  pNode,
CGUIDialogProgress progressDialog = nullptr 
)

◆ ExportToXML()

void CMusicDatabase::ExportToXML ( const CLibExportSettings settings,
CGUIDialogProgress progressDialog = nullptr 
)

◆ GetAlbum()

bool CMusicDatabase::GetAlbum ( int  idAlbum,
CAlbum album,
bool  getSongs = true 
)

retrieve an album, optionally with all songs.

Parameters
idAlbumthe database id of the album.
album[out] the album to fill.
getSongswhether or not to retrieve songs, defaults to true.
Returns
true if the album is retrieved, false otherwise.

◆ GetAlbumById()

std::string CMusicDatabase::GetAlbumById ( int  id)

◆ GetAlbumByMatch()

int CMusicDatabase::GetAlbumByMatch ( const CAlbum album)

◆ GetAlbumByName() [1/2]

int CMusicDatabase::GetAlbumByName ( const std::string &  strAlbum,
const std::string &  strArtist = "" 
)

◆ GetAlbumByName() [2/2]

int CMusicDatabase::GetAlbumByName ( const std::string &  strAlbum,
const std::vector< std::string > &  artist 
)

◆ GetAlbumFolder()

bool CMusicDatabase::GetAlbumFolder ( const CAlbum album,
const std::string &  strAlbumPath,
std::string &  strFolder 
)

◆ GetAlbumFromSong()

bool CMusicDatabase::GetAlbumFromSong ( int  idSong,
CAlbum album 
)

◆ GetAlbumIdByPath()

int CMusicDatabase::GetAlbumIdByPath ( const std::string &  path)

◆ GetAlbumPath()

bool CMusicDatabase::GetAlbumPath ( int  idAlbum,
std::string &  basePath 
)

◆ GetAlbumPaths()

bool CMusicDatabase::GetAlbumPaths ( int  idAlbum,
std::vector< std::pair< std::string, int > > &  paths 
)

◆ GetAlbumsByArtist()

bool CMusicDatabase::GetAlbumsByArtist ( int  idArtist,
std::vector< int > &  albums 
)

◆ GetAlbumsByWhere()

bool CMusicDatabase::GetAlbumsByWhere ( const std::string &  baseDir,
const Filter filter,
CFileItemList items,
const SortDescription sortDescription = SortDescription(),
bool  countOnly = false 
)

◆ GetAlbumsByWhereJSON()

bool CMusicDatabase::GetAlbumsByWhereJSON ( const std::set< std::string > &  fields,
const std::string &  baseDir,
CVariant result,
int &  total,
const SortDescription sortDescription = SortDescription() 
)
Todo:
: use SortAttributeUseArtistSortName and remove articles

◆ GetAlbumsByYear()

bool CMusicDatabase::GetAlbumsByYear ( const std::string &  strBaseDir,
CFileItemList items,
int  year 
)

◆ GetAlbumsNav()

bool CMusicDatabase::GetAlbumsNav ( const std::string &  strBaseDir,
CFileItemList items,
int  idGenre = -1,
int  idArtist = -1,
const Filter filter = Filter(),
const SortDescription sortDescription = SortDescription(),
bool  countOnly = false 
)

◆ GetAlbumTypesNav()

bool CMusicDatabase::GetAlbumTypesNav ( const std::string &  strBaseDir,
CFileItemList items,
const Filter filter = Filter(),
bool  countOnly = false 
)

◆ GetArtForItem() [1/3]

std::string CMusicDatabase::GetArtForItem ( int  mediaId,
const std::string &  mediaType,
const std::string &  artType 
)

Fetch art for a database item. Fetches a single piece of art for a database item.

Parameters
mediaIdthe id in the media (song/artist/album) table.
mediaTypethe type of media, which corresponds to the table the item resides in (song/artist/album).
artTypethe type of art to retrieve, eg "thumb", "fanart".
Returns
the original URL to the piece of art, if available.
See also
SetArtForItem

◆ GetArtForItem() [2/3]

bool CMusicDatabase::GetArtForItem ( int  mediaId,
const std::string &  mediaType,
std::map< std::string, std::string > &  art 
)

Fetch art for a database item. Fetches multiple pieces of art for a database item.

Parameters
mediaIdthe id in the media (song/artist/album) table.
mediaTypethe type of media, which corresponds to the table the item resides in (song/artist/album).
art[out] a map of <type, url> where type is "thumb", "fanart", etc. and url is the original url of the art.
Returns
true if art is retrieved, false if no art is found.
See also
SetArtForItem

◆ GetArtForItem() [3/3]

bool CMusicDatabase::GetArtForItem ( int  songId,
int  albumId,
int  artistId,
bool  bPrimaryArtist,
std::vector< ArtForThumbLoader > &  art 
)

Fetch all related art for a database item. Fetches multiple pieces of art for a database item including that for related media types Given song id art for the related album, artist(s) and albumartist(s) will also be fetched, looking up the album and artist when ids are not provided. Given album id (and not song id) art for the related artist(s) will also be fetched, looking up the artist(s) when id are not provided.

Parameters
songIdthe id in the song table, -1 when song art not being fetched
albumIdthe id in the album table, -1 when album art not being fetched
artistIdthe id in the artist table, -1 when artist not known
bPrimaryArtisttrue if art from only the first song artist or album artist is to be fetched
art[out] a vector, each element having media type e.g. "artist", "album" or "song", artType e.g. "thumb", "fanart", etc., prefix of "", "artist" or "albumartist" etc. giving the kind of artist relationship, and the original url of the art.
Returns
true if art is retrieved, false if no art is found.
See also
SetArtForItem

◆ GetArtist()

bool CMusicDatabase::GetArtist ( int  idArtist,
CArtist artist,
bool  fetchAll = false 
)
Todo:
replace with artistview once dateadded is column of artist table

◆ GetArtistById()

std::string CMusicDatabase::GetArtistById ( int  id)

◆ GetArtistByMatch()

int CMusicDatabase::GetArtistByMatch ( const CArtist artist)

◆ GetArtistByName()

int CMusicDatabase::GetArtistByName ( const std::string &  strArtist)

◆ GetArtistCountForRole() [1/2]

int CMusicDatabase::GetArtistCountForRole ( const std::string &  strRole)

◆ GetArtistCountForRole() [2/2]

int CMusicDatabase::GetArtistCountForRole ( int  role)

◆ GetArtistDiscography()

bool CMusicDatabase::GetArtistDiscography ( int  idArtist,
CFileItemList items 
)

◆ GetArtistExists()

bool CMusicDatabase::GetArtistExists ( int  idArtist)

◆ GetArtistFolderName() [1/2]

bool CMusicDatabase::GetArtistFolderName ( const CArtist artist,
std::string &  strFolder 
)

◆ GetArtistFolderName() [2/2]

bool CMusicDatabase::GetArtistFolderName ( const std::string &  strArtist,
const std::string &  strMusicBrainzArtistID,
std::string &  strFolder 
)

◆ GetArtistFromSong()

bool CMusicDatabase::GetArtistFromSong ( int  idSong,
CArtist artist 
)

◆ GetArtistPath()

bool CMusicDatabase::GetArtistPath ( const CArtist artist,
std::string &  path 
)

◆ GetArtistsByAlbum()

bool CMusicDatabase::GetArtistsByAlbum ( int  idAlbum,
CFileItem item 
)

◆ GetArtistsBySong()

bool CMusicDatabase::GetArtistsBySong ( int  idSong,
std::vector< int > &  artists 
)

◆ GetArtistsByWhere()

bool CMusicDatabase::GetArtistsByWhere ( const std::string &  strBaseDir,
const Filter filter,
CFileItemList items,
const SortDescription sortDescription = SortDescription(),
bool  countOnly = false 
)

◆ GetArtistsByWhereJSON()

bool CMusicDatabase::GetArtistsByWhereJSON ( const std::set< std::string > &  fields,
const std::string &  baseDir,
CVariant result,
int &  total,
const SortDescription sortDescription = SortDescription() 
)
Todo:
: replace GetFilter to avoid exists as well as JOIn to albm_artist and song_artist tables
Todo:
: use SortAttributeUseArtistSortName and remove articles

◆ GetArtistsNav()

bool CMusicDatabase::GetArtistsNav ( const std::string &  strBaseDir,
CFileItemList items,
bool  albumArtistsOnly = false,
int  idGenre = -1,
int  idAlbum = -1,
int  idSong = -1,
const Filter filter = Filter(),
const SortDescription sortDescription = SortDescription(),
bool  countOnly = false 
)

◆ GetArtTypes()

bool CMusicDatabase::GetArtTypes ( const MediaType mediaType,
std::vector< std::string > &  artTypes 
)

Fetch the distinct types of art held in the database for a type of media.

Parameters
mediaTypethe type of media, which corresponds to the table the item resides in (song/artist/album).
artTypes[out] the types of art e.g. "thumb", "fanart", etc.
Returns
true if art is found, false if no art is found.

◆ GetAvailableArtTypesForItem()

std::vector< std::string > CMusicDatabase::GetAvailableArtTypesForItem ( int  mediaId,
const MediaType mediaType 
)

Fetch the distinct types of available-but-unassigned art held in the database for a specific media item.

Parameters
mediaIdthe id in the media (artist/album) table.
mediaTypethe type of media, which corresponds to the table the item resides in (artist/album).
Returns
the types of art e.g. "thumb", "fanart", etc.
Todo:
artwork: fanart stored separately, doesn't need to be

◆ GetBaseDBName()

const char * CMusicDatabase::GetBaseDBName ( void  ) const
inlineoverrideprotectedvirtual

Implements CDatabase.

◆ GetCommonNav()

bool CMusicDatabase::GetCommonNav ( const std::string &  strBaseDir,
const std::string &  table,
const std::string &  labelField,
CFileItemList items,
const Filter filter,
bool  countOnly 
)

◆ GetCompilationAlbums()

bool CMusicDatabase::GetCompilationAlbums ( const std::string &  strBaseDir,
CFileItemList items 
)

◆ GetCompilationAlbumsCount()

int CMusicDatabase::GetCompilationAlbumsCount ( )

◆ GetCompilationSongs()

bool CMusicDatabase::GetCompilationSongs ( const std::string &  strBaseDir,
CFileItemList items 
)

◆ GetDiscnumberForPathID()

int CMusicDatabase::GetDiscnumberForPathID ( int  idPath)

◆ GetFilter()

bool CMusicDatabase::GetFilter ( CDbUrl musicUrl,
Filter filter,
SortDescription sorting 
)
overridevirtual

Reimplemented from CDatabase.

◆ GetGenreById()

std::string CMusicDatabase::GetGenreById ( int  id)

◆ GetGenreByName()

int CMusicDatabase::GetGenreByName ( const std::string &  strGenre)

◆ GetGenresByAlbum()

bool CMusicDatabase::GetGenresByAlbum ( int  idAlbum,
CFileItem item 
)

◆ GetGenresByArtist()

bool CMusicDatabase::GetGenresByArtist ( int  idArtist,
CFileItem item 
)

◆ GetGenresBySong()

bool CMusicDatabase::GetGenresBySong ( int  idSong,
std::vector< int > &  genres 
)

◆ GetGenresJSON()

bool CMusicDatabase::GetGenresJSON ( CFileItemList items,
bool  bSources = false 
)

◆ GetGenresNav()

bool CMusicDatabase::GetGenresNav ( const std::string &  strBaseDir,
CFileItemList items,
const Filter filter = Filter(),
bool  countOnly = false 
)

◆ GetIsAlbumArtist()

bool CMusicDatabase::GetIsAlbumArtist ( int  idArtist,
CFileItem item 
)

◆ GetItemById()

std::string CMusicDatabase::GetItemById ( const std::string &  itemType,
int  id 
)

◆ GetItems() [1/2]

bool CMusicDatabase::GetItems ( const std::string &  strBaseDir,
CFileItemList items,
const Filter filter = Filter(),
const SortDescription sortDescription = SortDescription() 
)

◆ GetItems() [2/2]

bool CMusicDatabase::GetItems ( const std::string &  strBaseDir,
const std::string &  itemType,
CFileItemList items,
const Filter filter = Filter(),
const SortDescription sortDescription = SortDescription() 
)

◆ GetLastArtist()

int CMusicDatabase::GetLastArtist ( )

◆ GetLibraryLastUpdated()

std::string CMusicDatabase::GetLibraryLastUpdated ( )

◆ GetMinSchemaVersion()

int CMusicDatabase::GetMinSchemaVersion ( ) const
inlineoverrideprotectedvirtual

Reimplemented from CDatabase.

◆ GetMusicLabelsNav()

bool CMusicDatabase::GetMusicLabelsNav ( const std::string &  strBaseDir,
CFileItemList items,
const Filter filter = Filter(),
bool  countOnly = false 
)

◆ GetMusicNeedsTagScan()

int CMusicDatabase::GetMusicNeedsTagScan ( )
virtual

Check if music files need all tags rescanning regardless of file being unchanged because the tag processing has changed (which may happen without db version changes) since they where last scanned.

Returns
-1 if an error occured, 0 if no scan is needed, or the version number of tags if not the same as current.

◆ GetOldArtistPath()

bool CMusicDatabase::GetOldArtistPath ( int  idArtist,
std::string &  path 
)

◆ GetPathHash()

bool CMusicDatabase::GetPathHash ( const std::string &  path,
std::string &  hash 
)

◆ GetPaths()

bool CMusicDatabase::GetPaths ( std::set< std::string > &  paths)

◆ GetRandomSongIDs()

unsigned int CMusicDatabase::GetRandomSongIDs ( const Filter filter,
std::vector< std::pair< int, int > > &  songIDs 
)

Gets song IDs in random order that match the filter criteria.

Parameters
filterthe criteria to apply in the query
songIDsa vector of <1, id> pairs suited to party mode use
Returns
count of song ids found.

◆ GetRecentlyAddedAlbums()

bool CMusicDatabase::GetRecentlyAddedAlbums ( VECALBUMS albums,
unsigned int  limit = 0 
)

◆ GetRecentlyAddedAlbumSongs()

bool CMusicDatabase::GetRecentlyAddedAlbumSongs ( const std::string &  strBaseDir,
CFileItemList item,
unsigned int  limit = 0 
)

◆ GetRecentlyPlayedAlbums()

bool CMusicDatabase::GetRecentlyPlayedAlbums ( VECALBUMS albums)

◆ GetRecentlyPlayedAlbumSongs()

bool CMusicDatabase::GetRecentlyPlayedAlbumSongs ( const std::string &  strBaseDir,
CFileItemList item 
)

◆ GetResumeBookmarkForAudioBook()

bool CMusicDatabase::GetResumeBookmarkForAudioBook ( const CFileItem item,
int &  bookmark 
)

◆ GetRoleById()

std::string CMusicDatabase::GetRoleById ( int  id)

◆ GetRoleByName()

int CMusicDatabase::GetRoleByName ( const std::string &  strRole)

◆ GetRolesByArtist()

bool CMusicDatabase::GetRolesByArtist ( int  idArtist,
CFileItem item 
)

◆ GetRolesNav()

bool CMusicDatabase::GetRolesNav ( const std::string &  strBaseDir,
CFileItemList items,
const Filter filter = Filter() 
)

◆ GetSchemaVersion()

int CMusicDatabase::GetSchemaVersion ( void  ) const
overrideprotectedvirtual

Implements CDatabase.

◆ GetScraper()

bool CMusicDatabase::GetScraper ( int  id,
const CONTENT_TYPE content,
ADDON::ScraperPtr scraper 
)

◆ GetSinglesCount()

int CMusicDatabase::GetSinglesCount ( )

◆ GetSong()

bool CMusicDatabase::GetSong ( int  idSong,
CSong song 
)

◆ GetSongByArtistAndAlbumAndTitle()

int CMusicDatabase::GetSongByArtistAndAlbumAndTitle ( const std::string &  strArtist,
const std::string &  strAlbum,
const std::string &  strTitle 
)

◆ GetSongByFileName()

bool CMusicDatabase::GetSongByFileName ( const std::string &  strFileName,
CSong song,
int64_t  startOffset = 0 
)

◆ GetSongsByArtist()

bool CMusicDatabase::GetSongsByArtist ( int  idArtist,
std::vector< int > &  songs 
)

◆ GetSongsByPath()

bool CMusicDatabase::GetSongsByPath ( const std::string &  strPath,
MAPSONGS songs,
bool  bAppendToMap = false 
)

◆ GetSongsByWhere()

bool CMusicDatabase::GetSongsByWhere ( const std::string &  baseDir,
const Filter filter,
CFileItemList items,
const SortDescription sortDescription = SortDescription() 
)

◆ GetSongsByWhereJSON()

bool CMusicDatabase::GetSongsByWhereJSON ( const std::set< std::string > &  fields,
const std::string &  baseDir,
CVariant result,
int &  total,
const SortDescription sortDescription = SortDescription() 
)
Todo:
: use SortAttributeUseArtistSortName and remove articles

◆ GetSongsByYear()

bool CMusicDatabase::GetSongsByYear ( const std::string &  baseDir,
CFileItemList items,
int  year 
)

◆ GetSongsCount()

int CMusicDatabase::GetSongsCount ( const Filter filter = Filter())

◆ GetSongsFullByWhere()

bool CMusicDatabase::GetSongsFullByWhere ( const std::string &  baseDir,
const Filter filter,
CFileItemList items,
const SortDescription sortDescription = SortDescription(),
bool  artistData = false 
)

◆ GetSongsNav()

bool CMusicDatabase::GetSongsNav ( const std::string &  strBaseDir,
CFileItemList items,
int  idGenre,
int  idArtist,
int  idAlbum,
const SortDescription sortDescription = SortDescription() 
)

◆ GetSourceById()

std::string CMusicDatabase::GetSourceById ( int  id)

◆ GetSourceByName()

int CMusicDatabase::GetSourceByName ( const std::string &  strSource)

◆ GetSourceFromPath()

int CMusicDatabase::GetSourceFromPath ( const std::string &  strPath)

◆ GetSources()

bool CMusicDatabase::GetSources ( CFileItemList items)

◆ GetSourcesByAlbum()

bool CMusicDatabase::GetSourcesByAlbum ( int  idAlbum,
CFileItem item 
)
Todo:
: handle singles, or don't waste time checking songs

◆ GetSourcesByArtist()

bool CMusicDatabase::GetSourcesByArtist ( int  idArtist,
CFileItem item 
)

◆ GetSourcesBySong()

bool CMusicDatabase::GetSourcesBySong ( int  idSong,
const std::string &  strPath,
CFileItem item 
)

◆ GetSourcesNav()

bool CMusicDatabase::GetSourcesNav ( const std::string &  strBaseDir,
CFileItemList items,
const Filter filter = Filter(),
bool  countOnly = false 
)

◆ GetTop100()

bool CMusicDatabase::GetTop100 ( const std::string &  strBaseDir,
CFileItemList items 
)

◆ GetTop100Albums()

bool CMusicDatabase::GetTop100Albums ( VECALBUMS albums)

◆ GetTop100AlbumSongs()

bool CMusicDatabase::GetTop100AlbumSongs ( const std::string &  strBaseDir,
CFileItemList item 
)

◆ GetTranslateBlankArtist()

bool CMusicDatabase::GetTranslateBlankArtist ( )
inline

◆ GetYearsNav()

bool CMusicDatabase::GetYearsNav ( const std::string &  strBaseDir,
CFileItemList items,
const Filter filter = Filter() 
)

◆ HasAlbumBeenScraped()

bool CMusicDatabase::HasAlbumBeenScraped ( int  idAlbum)

◆ HasArtistBeenScraped()

bool CMusicDatabase::HasArtistBeenScraped ( int  idArtist)

◆ ImportFromXML()

void CMusicDatabase::ImportFromXML ( const std::string &  xmlFile,
CGUIDialogProgress progressDialog = nullptr 
)

◆ ImportSongHistory()

bool CMusicDatabase::ImportSongHistory ( const std::string &  xmlFile,
const int  total,
CGUIDialogProgress progressDialog = nullptr 
)

◆ IncrementPlayCount()

void CMusicDatabase::IncrementPlayCount ( const CFileItem item)

Increment the playcount of an item Increments the playcount and updates the last played date.

Parameters
itemCFileItem to increment the playcount for

◆ InsideScannedPath()

bool CMusicDatabase::InsideScannedPath ( const std::string &  path)

Checks if the given path is inside a folder that has already been scanned into the library.

Parameters
paththe path we want to check

◆ IsSongAlbumArtist()

bool CMusicDatabase::IsSongAlbumArtist ( int  idSong,
int  idArtist 
)

◆ IsSongArtist()

bool CMusicDatabase::IsSongArtist ( int  idSong,
int  idArtist 
)

◆ LookupCDDBInfo()

bool CMusicDatabase::LookupCDDBInfo ( bool  bRequery = false)

◆ Open()

bool CMusicDatabase::Open ( )
overridevirtual

Reimplemented from CDatabase.

◆ RemoveArtForItem() [1/2]

bool CMusicDatabase::RemoveArtForItem ( int  mediaId,
const MediaType mediaType,
const std::set< std::string > &  artTypes 
)

Remove art for a database item. Removes multiple pieces of art for a database item.

Parameters
mediaIdthe id in the media (song/artist/album) table.
mediaTypethe type of media, which corresponds to the table the item resides in (song/artist/album).
arttypesa set of types, e.g. "thumb", "fanart", etc. to be removed.
Returns
true if art is removed, false if no art is found.
See also
RemoveArtForItem

◆ RemoveArtForItem() [2/2]

bool CMusicDatabase::RemoveArtForItem ( int  mediaId,
const MediaType mediaType,
const std::string &  artType 
)

Remove art for a database item. Removes a single piece of art for a database item.

Parameters
mediaIdthe id in the media (song/artist/album) table.
mediaTypethe type of media, which corresponds to the table the item resides in (song/artist/album).
artTypethe type of art to remove, eg "thumb", "fanart".
Returns
true if art is removed, false if no art is found.
See also
RemoveArtForItem

◆ RemoveSongsFromPath()

bool CMusicDatabase::RemoveSongsFromPath ( const std::string &  path,
MAPSONGS songs,
bool  exact = true 
)
Todo:
SQLite probably doesn't allow this, but can we rely on that??
Todo:
move this below the m_pDS->exec block, once UPnP doesn't rely on this anymore

◆ RemoveSource()

bool CMusicDatabase::RemoveSource ( const std::string &  strName)

◆ ScraperInUse()

bool CMusicDatabase::ScraperInUse ( const std::string &  scraperID) const

Check whether a given scraper is in use.

Parameters
scraperIDthe scraper to check for.
Returns
true if the scraper is in use, false otherwise.

◆ Search()

bool CMusicDatabase::Search ( const std::string &  search,
CFileItemList items 
)

◆ SetAlbumUserrating()

bool CMusicDatabase::SetAlbumUserrating ( const int  idAlbum,
int  userrating 
)

◆ SetArtForItem() [1/2]

void CMusicDatabase::SetArtForItem ( int  mediaId,
const std::string &  mediaType,
const std::map< std::string, std::string > &  art 
)

Sets art for a database item. Sets multiple pieces of art for a database item.

Parameters
mediaIdthe id in the media (song/artist/album) table.
mediaTypethe type of media, which corresponds to the table the item resides in (song/artist/album).
arta map of <type, url> where type is "thumb", "fanart", etc. and url is the original url of the art.
See also
GetArtForItem

◆ SetArtForItem() [2/2]

void CMusicDatabase::SetArtForItem ( int  mediaId,
const std::string &  mediaType,
const std::string &  artType,
const std::string &  url 
)

Sets art for a database item. Sets a single piece of art for a database item.

Parameters
mediaIdthe id in the media (song/artist/album) table.
mediaTypethe type of media, which corresponds to the table the item resides in (song/artist/album).
artTypethe type of art to set, e.g. "thumb", "fanart"
urlthe url to the art (this is the original url, not a cached url).
See also
GetArtForItem

◆ SetLibraryLastUpdated()

void CMusicDatabase::SetLibraryLastUpdated ( )

◆ SetMusicNeedsTagScan()

void CMusicDatabase::SetMusicNeedsTagScan ( int  version)

Set minimum version number of db needed when tag data scanned from music files.

Parameters
versionthe version number of db

◆ SetMusicTagScanVersion()

void CMusicDatabase::SetMusicTagScanVersion ( int  version = 0)

Set the version number of tag data.

Parameters
versionthe version number of db when tags last scanned, 0 (default) means current db version

◆ SetPathHash()

bool CMusicDatabase::SetPathHash ( const std::string &  path,
const std::string &  hash 
)

◆ SetPropertiesForFileItem()

void CMusicDatabase::SetPropertiesForFileItem ( CFileItem item)

◆ SetPropertiesFromAlbum()

void CMusicDatabase::SetPropertiesFromAlbum ( CFileItem item,
const CAlbum album 
)
static

◆ SetPropertiesFromArtist()

void CMusicDatabase::SetPropertiesFromArtist ( CFileItem item,
const CArtist artist 
)
static

◆ SetResumeBookmarkForAudioBook()

bool CMusicDatabase::SetResumeBookmarkForAudioBook ( const CFileItem item,
int  bookmark 
)

◆ SetScraper()

bool CMusicDatabase::SetScraper ( int  id,
const CONTENT_TYPE content,
const ADDON::ScraperPtr  scraper 
)

◆ SetScraperAll()

bool CMusicDatabase::SetScraperAll ( const std::string &  strBaseDir,
const ADDON::ScraperPtr  scraper 
)

◆ SetSongUserrating() [1/2]

bool CMusicDatabase::SetSongUserrating ( const std::string &  filePath,
int  userrating 
)

◆ SetSongUserrating() [2/2]

bool CMusicDatabase::SetSongUserrating ( int  idSong,
int  userrating 
)

◆ SetSongVotes()

bool CMusicDatabase::SetSongVotes ( const std::string &  filePath,
int  votes 
)

◆ SetTranslateBlankArtist()

void CMusicDatabase::SetTranslateBlankArtist ( bool  translate)
inline

◆ UpdateAlbum() [1/2]

bool CMusicDatabase::UpdateAlbum ( CAlbum album)

Update an album and all its nested entities (artists, songs etc)

Parameters
albumthe album to update
Returns
true or false

◆ UpdateAlbum() [2/2]

int CMusicDatabase::UpdateAlbum ( int  idAlbum,
const std::string &  strAlbum,
const std::string &  strMusicBrainzAlbumID,
const std::string &  strReleaseGroupMBID,
const std::string &  strArtist,
const std::string &  strArtistSort,
const std::string &  strGenre,
const std::string &  strMoods,
const std::string &  strStyles,
const std::string &  strThemes,
const std::string &  strReview,
const std::string &  strImage,
const std::string &  strLabel,
const std::string &  strType,
float  fRating,
int  iUserrating,
int  iVotes,
int  iYear,
bool  bCompilation,
CAlbum::ReleaseType  releaseType,
bool  bScrapedMBID 
)

◆ UpdateArtist() [1/2]

bool CMusicDatabase::UpdateArtist ( const CArtist artist)

◆ UpdateArtist() [2/2]

int CMusicDatabase::UpdateArtist ( int  idArtist,
const std::string &  strArtist,
const std::string &  strSortName,
const std::string &  strMusicBrainzArtistID,
bool  bScrapedMBID,
const std::string &  strType,
const std::string &  strGender,
const std::string &  strDisambiguation,
const std::string &  strBorn,
const std::string &  strFormed,
const std::string &  strGenres,
const std::string &  strMoods,
const std::string &  strStyles,
const std::string &  strInstruments,
const std::string &  strBiography,
const std::string &  strDied,
const std::string &  strDisbanded,
const std::string &  strYearsActive,
const std::string &  strImage,
const std::string &  strFanart 
)

◆ UpdateArtistScrapedMBID()

bool CMusicDatabase::UpdateArtistScrapedMBID ( int  idArtist,
const std::string &  strMusicBrainzArtistID 
)

◆ UpdateArtistSortNames()

bool CMusicDatabase::UpdateArtistSortNames ( int  idArtist = -1)

Propagate artist sort name into the concatenated artist sort name strings held for songs and albums.

Parameters
intidArtist to propagate sort name for, -1 means all artists

◆ UpdateSong() [1/2]

bool CMusicDatabase::UpdateSong ( CSong song,
bool  bArtists = true 
)

Update a song and all its nested entities (genres, artists, contributors)

Parameters
song[in/out] the song to update, artist ids are returned in artist credits
bArtiststo update artist credits and contributors, default is true
Returns
true if sucessfull

◆ UpdateSong() [2/2]

int CMusicDatabase::UpdateSong ( int  idSong,
const std::string &  strTitle,
const std::string &  strMusicBrainzTrackID,
const std::string &  strPathAndFileName,
const std::string &  strComment,
const std::string &  strMood,
const std::string &  strThumb,
const std::string &  artistDisp,
const std::string &  artistSort,
const std::vector< std::string > &  genres,
int  iTrack,
int  iDuration,
int  iYear,
int  iTimesPlayed,
int  iStartOffset,
int  iEndOffset,
const CDateTime dtLastPlayed,
float  rating,
int  userrating,
int  votes,
const ReplayGain replayGain 
)

Update a song in the database.

Parameters
idSong[in] the database ID of the song to update
strTitle[in] the title of the song (required to be non-empty)
strMusicBrainzTrackID[in] the MusicBrainz track ID of the song
strPathAndFileName[in] the path and filename to the song
strComment[in] the ids of the added songs
strMood[in] the mood of the added song
strThumb[in] the ids of the added songs
artistDisp[in] the artist name(s) display string
artistSort[in] the artist name(s) sort string
genres[in] a vector of genres to which this song belongs
iTrack[in] the track number and disc number of the song
iDuration[in] the duration of the song
iYear[in] the year of the song
iTimesPlayed[in] the number of times the song has been played
iStartOffset[in] the start offset of the song (when using a single audio file with a .cue)
iEndOffset[in] the end offset of the song (when using a single audio file with .cue)
dtLastPlayed[in] the time the song was last played
rating[in] a rating for the song
userrating[in] a userrating (my rating) for the song
votes[in] a vote counter for the song rating
replayGain[in] album and track replaygain and peak values
Returns
the id of the song

◆ UpdateSource()

int CMusicDatabase::UpdateSource ( const std::string &  strOldName,
const std::string &  strName,
const std::string &  strMultipath,
const std::vector< std::string > &  vecPaths 
)

◆ UpdateSources()

bool CMusicDatabase::UpdateSources ( )

Friends And Related Function Documentation

◆ DatabaseUtils

friend class DatabaseUtils
friend

◆ TestDatabaseUtilsHelper

friend class TestDatabaseUtilsHelper
friend

Member Data Documentation

◆ m_genreCache

std::map<std::string, int> CMusicDatabase::m_genreCache
protected

◆ m_pathCache

std::map<std::string, int> CMusicDatabase::m_pathCache
protected

The documentation for this class was generated from the following files: