--- /dev/null
+<node order="8" type="folder">
+ <label>20459</label>
+ <path>videodb://3/9</path>
+ <icon>DefaultTags.png</icon>
+</node>
{ NODE_TYPE_MUSICVIDEOS_ALBUM, 5, 132 },
{ NODE_TYPE_DIRECTOR, 6, 20348 },
{ NODE_TYPE_STUDIO, 7, 20388 },
+ { NODE_TYPE_TAGS, 9, 20459 }
};
CDirectoryNodeMusicVideosOverview::CDirectoryNodeMusicVideosOverview(const CStdString& strName, CDirectoryNode* pParent)
CQueryParams params;
CollectQueryParams(params);
- bool bSuccess=videodatabase.GetMusicVideosNav(BuildPath(), items, params.GetGenreId(), params.GetYear(), params.GetActorId(), params.GetDirectorId(),params.GetStudioId(),params.GetAlbumId());
+ bool bSuccess=videodatabase.GetMusicVideosNav(BuildPath(), items, params.GetGenreId(), params.GetYear(), params.GetActorId(), params.GetDirectorId(), params.GetStudioId(), params.GetAlbumId(), params.GetTagId());
videodatabase.Close();
}
CFileItemList items;
- if (!videodatabase.GetMusicVideosNav(videoUrl.ToString(), items, genreID, year, -1, -1, -1, -1, sorting))
+ if (!videodatabase.GetMusicVideosNav(videoUrl.ToString(), items, genreID, year, -1, -1, -1, -1, -1, sorting))
return InternalError;
return GetAdditionalMusicVideoDetails(parameterObject, items, result, videodatabase, false);
type = "movie";
else if (mediaType == VIDEODB_CONTENT_TVSHOWS)
type = "tvshow";
+ else if (mediaType == VIDEODB_CONTENT_MUSICVIDEOS)
+ type = "musicvideo";
else
return;
mediaType = "movie";
else if (idContent == VIDEODB_CONTENT_TVSHOWS)
mediaType = "tvshow";
+ else if (idContent == VIDEODB_CONTENT_MUSICVIDEOS)
+ mediaType = "musicvideo";
else
return false;
return false;
}
-bool CVideoDatabase::GetMusicVideosNav(const CStdString& strBaseDir, CFileItemList& items, int idGenre, int idYear, int idArtist, int idDirector, int idStudio, int idAlbum, const SortDescription &sortDescription /* = SortDescription() */)
+bool CVideoDatabase::GetMusicVideosNav(const CStdString& strBaseDir, CFileItemList& items, int idGenre, int idYear, int idArtist, int idDirector, int idStudio, int idAlbum, int idTag /* = -1 */, const SortDescription &sortDescription /* = SortDescription() */)
{
CVideoDbUrl videoUrl;
if (!videoUrl.FromString(strBaseDir))
videoUrl.AddOption("year", idYear);
else if (idArtist != -1)
videoUrl.AddOption("artistid", idArtist);
+ else if (idTag != -1)
+ videoUrl.AddOption("tagid", idTag);
if (idAlbum != -1)
videoUrl.AddOption("albumid", idAlbum);
option = options.find("albumid");
if (option != options.end())
filter.AppendWhere(PrepareSQL("musicvideoview.c%02d = (select c%02d from musicvideo where idMVideo = %i)", VIDEODB_ID_MUSICVIDEO_ALBUM, VIDEODB_ID_MUSICVIDEO_ALBUM, (int)option->second.asInteger()));
+
+ option = options.find("tagid");
+ if (option != options.end())
+ {
+ filter.AppendJoin(PrepareSQL("join taglinks on taglinks.idMedia = musicvideoview.idMVideo AND taglinks.media_type = 'musicvideo'"));
+ filter.AppendWhere(PrepareSQL("taglinks.idTag = %i", (int)option->second.asInteger()));
+ }
+
+ option = options.find("tag");
+ if (option != options.end())
+ {
+ filter.AppendJoin(PrepareSQL("join taglinks on taglinks.idMedia = musicvideoview.idMVideo AND taglinks.media_type = 'musicvideo' join tag on tag.idTag = taglinks.idTag"));
+ filter.AppendWhere(PrepareSQL("tag.strTag like '%s'", option->second.asString().c_str()));
+ }
}
else
return false;
bool GetTvShowsNav(const CStdString& strBaseDir, CFileItemList& items, int idGenre=-1, int idYear=-1, int idActor=-1, int idDirector=-1, int idStudio=-1, int idTag=-1, const SortDescription &sortDescription = SortDescription());
bool GetSeasonsNav(const CStdString& strBaseDir, CFileItemList& items, int idActor=-1, int idDirector=-1, int idGenre=-1, int idYear=-1, int idShow=-1);
bool GetEpisodesNav(const CStdString& strBaseDir, CFileItemList& items, int idGenre=-1, int idYear=-1, int idActor=-1, int idDirector=-1, int idShow=-1, int idSeason=-1, const SortDescription &sortDescription = SortDescription());
- bool GetMusicVideosNav(const CStdString& strBaseDir, CFileItemList& items, int idGenre=-1, int idYear=-1, int idArtist=-1, int idDirector=-1, int idStudio=-1, int idAlbum=-1, const SortDescription &sortDescription = SortDescription());
+ bool GetMusicVideosNav(const CStdString& strBaseDir, CFileItemList& items, int idGenre=-1, int idYear=-1, int idArtist=-1, int idDirector=-1, int idStudio=-1, int idAlbum=-1, int idTag=-1, const SortDescription &sortDescription = SortDescription());
bool GetRecentlyAddedMoviesNav(const CStdString& strBaseDir, CFileItemList& items, unsigned int limit=0);
bool GetRecentlyAddedEpisodesNav(const CStdString& strBaseDir, CFileItemList& items, unsigned int limit=0);
return "MusicVideoArtists";
else if (strPath.Equals("videodb://3/5/"))
return "MusicVideoDirectors";
+ else if (strPath.Equals("videodb://3/9/"))
+ return "MusicVideoTags";
else if (strPath.Equals("videodb://3/"))
return "MusicVideos";
else if (strPath.Equals("videodb://4/"))
return "videodb://3/6/";
else if (dir.Equals("MusicVideoStudios"))
return "videodb://3/7/";
+ else if (dir.Equals("MusicVideoTags"))
+ return "videodb://3/9/";
else if (dir.Equals("MusicVideos"))
return "videodb://3/";
else if (dir.Equals("RecentlyAddedMovies"))
baseDir += "2";
idColumn = "idShow";
}
+ else if (type.compare("musicvideo") == 0)
+ {
+ mediaType = MediaTypeMusicVideo;
+ baseDir += "3";
+ idColumn = "idMVideo";
+ }
baseDir += "/2/";
CVideoDbUrl videoUrl;