本文整理汇总了C++中CFileItem::SetArtFallback方法的典型用法代码示例。如果您正苦于以下问题:C++ CFileItem::SetArtFallback方法的具体用法?C++ CFileItem::SetArtFallback怎么用?C++ CFileItem::SetArtFallback使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类CFileItem
的用法示例。
在下文中一共展示了CFileItem::SetArtFallback方法的4个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: FillLibraryArt
bool CVideoThumbLoader::FillLibraryArt(CFileItem &item)
{
CVideoInfoTag &tag = *item.GetVideoInfoTag();
if (tag.m_iDbId > -1 && !tag.m_type.empty())
{
std::map<std::string, std::string> artwork;
m_videoDatabase->Open();
if (m_videoDatabase->GetArtForItem(tag.m_iDbId, tag.m_type, artwork))
SetArt(item, artwork);
else if (tag.m_type == "actor" && !tag.m_artist.empty())
{ // we retrieve music video art from the music database (no backward compat)
CMusicDatabase database;
database.Open();
int idArtist = database.GetArtistByName(item.GetLabel());
if (database.GetArtForItem(idArtist, MediaTypeArtist, artwork))
item.SetArt(artwork);
}
else if (tag.m_type == MediaTypeAlbum)
{ // we retrieve music video art from the music database (no backward compat)
CMusicDatabase database;
database.Open();
int idAlbum = database.GetAlbumByName(item.GetLabel(), tag.m_artist);
if (database.GetArtForItem(idAlbum, MediaTypeAlbum, artwork))
item.SetArt(artwork);
}
if (tag.m_type == MediaTypeEpisode || tag.m_type == MediaTypeSeason)
{
// For episodes and seasons, we want to set fanart for that of the show
if (!item.HasArt("tvshow.fanart") && tag.m_iIdShow >= 0)
{
const ArtMap& artmap = GetArtFromCache(MediaTypeTvShow, tag.m_iIdShow);
if (!artmap.empty())
{
item.AppendArt(artmap, MediaTypeTvShow);
item.SetArtFallback("fanart", "tvshow.fanart");
item.SetArtFallback("tvshow.thumb", "tvshow.poster");
}
}
if (tag.m_type == MediaTypeEpisode && !item.HasArt("season.poster") && tag.m_iSeason > -1)
{
const ArtMap& artmap = GetArtFromCache(MediaTypeSeason, tag.m_iIdSeason);
if (!artmap.empty())
item.AppendArt(artmap, MediaTypeSeason);
}
}
else if (tag.m_type == MediaTypeMovie && tag.m_set.id >= 0 && !item.HasArt("set.fanart"))
{
const ArtMap& artmap = GetArtFromCache(MediaTypeVideoCollection, tag.m_set.id);
if (!artmap.empty())
item.AppendArt(artmap, MediaTypeVideoCollection);
}
m_videoDatabase->Close();
}
return !item.GetArt().empty();
}
示例2: FillLibraryArt
bool CMusicThumbLoader::FillLibraryArt(CFileItem &item)
{
CMusicInfoTag &tag = *item.GetMusicInfoTag();
if (tag.GetDatabaseId() > -1 && !tag.GetType().empty())
{
m_musicDatabase->Open();
map<string, string> artwork;
if (m_musicDatabase->GetArtForItem(tag.GetDatabaseId(), tag.GetType(), artwork))
item.SetArt(artwork);
else if (tag.GetType() == "song")
{ // no art for the song, try the album
ArtCache::const_iterator i = m_albumArt.find(tag.GetAlbumId());
if (i == m_albumArt.end())
{
m_musicDatabase->GetArtForItem(tag.GetAlbumId(), "album", artwork);
i = m_albumArt.insert(make_pair(tag.GetAlbumId(), artwork)).first;
}
if (i != m_albumArt.end())
{
item.AppendArt(i->second, "album");
for (map<string, string>::const_iterator j = i->second.begin(); j != i->second.end(); ++j)
item.SetArtFallback(j->first, "album." + j->first);
}
}
if (tag.GetType() == "song" || tag.GetType() == "album")
{ // fanart from the artist
string fanart = m_musicDatabase->GetArtistArtForItem(tag.GetDatabaseId(), tag.GetType(), "fanart");
if (!fanart.empty())
{
item.SetArt("artist.fanart", fanart);
item.SetArtFallback("fanart", "artist.fanart");
}
else if (tag.GetType() == "song")
{
// If no artist fanart, try for album artist fanart
fanart = m_musicDatabase->GetArtistArtForItem(tag.GetAlbumId(), "album", "fanart");
if (!fanart.empty())
{
item.SetArt("albumartist.fanart", fanart);
item.SetArtFallback("fanart", "albumartist.fanart");
}
}
}
m_musicDatabase->Close();
}
return !item.GetArt().empty();
}
示例3: FillLibraryArt
bool CVideoThumbLoader::FillLibraryArt(CFileItem &item)
{
CVideoInfoTag &tag = *item.GetVideoInfoTag();
if (tag.m_iDbId > -1 && !tag.m_type.empty())
{
map<string, string> artwork;
m_videoDatabase->Open();
if (m_videoDatabase->GetArtForItem(tag.m_iDbId, tag.m_type, artwork))
SetArt(item, artwork);
else if (tag.m_type == MediaTypeArtist)
{ // we retrieve music video art from the music database (no backward compat)
CMusicDatabase database;
database.Open();
int idArtist = database.GetArtistByName(item.GetLabel());
if (database.GetArtForItem(idArtist, MediaTypeArtist, artwork))
item.SetArt(artwork);
}
else if (tag.m_type == MediaTypeAlbum)
{ // we retrieve music video art from the music database (no backward compat)
CMusicDatabase database;
database.Open();
int idAlbum = database.GetAlbumByName(item.GetLabel(), tag.m_artist);
if (database.GetArtForItem(idAlbum, MediaTypeAlbum, artwork))
item.SetArt(artwork);
}
// For episodes and seasons, we want to set fanart for that of the show
if (!item.HasArt("fanart") && tag.m_iIdShow >= 0)
{
ArtCache::const_iterator i = m_showArt.find(tag.m_iIdShow);
if (i == m_showArt.end())
{
map<string, string> showArt;
m_videoDatabase->GetArtForItem(tag.m_iIdShow, MediaTypeTvShow, showArt);
i = m_showArt.insert(make_pair(tag.m_iIdShow, showArt)).first;
}
if (i != m_showArt.end())
{
item.AppendArt(i->second, "tvshow");
item.SetArtFallback("fanart", "tvshow.fanart");
item.SetArtFallback("tvshow.thumb", "tvshow.poster");
}
}
m_videoDatabase->Close();
}
return !item.GetArt().empty();
}
示例4: FillLibraryArt
//.........这里部分代码省略.........
for (const auto& artistCredit : album.artistCredits)
{
int idArtist = m_musicDatabase->GetArtistByName(artistCredit.GetArtist());
if (idArtist > 0)
{
std::vector<ArtForThumbLoader> artistart;
if (m_musicDatabase->GetArtForItem(-1, -1, idArtist, true, artistart))
{
for (auto& artitem : artistart)
{
if (iOrder > 0)
artitem.prefix = StringUtils::Format("albumartist%i", iOrder);
else
artitem.prefix = "albumartist";
}
art.insert(art.end(), artistart.begin(), artistart.end());
}
}
++iOrder;
}
}
else
{
// Replicate the artist art as album artist art
std::vector<ArtForThumbLoader> artistart;
for (const auto& artitem : art)
{
ArtForThumbLoader newart;
newart.artType = artitem.artType;
newart.mediaType = artitem.mediaType;
newart.prefix = "album" + artitem.prefix;
newart.url = artitem.url;
artistart.emplace_back(newart);
}
art.insert(art.end(), artistart.begin(), artistart.end());
}
artfound = !art.empty();
m_musicDatabase->Close();
}
}
if (artfound)
{
std::string fanartfallback;
bool bDiscSetThumbSet = false;
std::map<std::string, std::string> artmap;
for (auto artitem : art)
{
/* Add art to artmap, naming according to media type.
For example: artists have "thumb", "fanart", "poster" etc.,
albums have "thumb", "artist.thumb", "artist.fanart",... "artist1.thumb", "artist1.fanart" etc.,
songs have "thumb", "album.thumb", "artist.thumb", "albumartist.thumb", "albumartist1.thumb" etc.
*/
std::string artname;
if (tag.GetType() == artitem.mediaType)
artname = artitem.artType;
else if (artitem.prefix.empty())
artname = artitem.mediaType + "." + artitem.artType;
else
{
if (tag.GetType() == MediaTypeAlbum)
StringUtils::Replace(artitem.prefix, "albumartist", "artist");
artname = artitem.prefix + "." + artitem.artType;
}
artmap.insert(std::make_pair(artname, artitem.url));
// Add fallback art for "thumb" and "fanart" art types only
// Set album thumb as the fallback used when song thumb is missing
// or use extra album thumb when part of disc set
if (tag.GetType() == MediaTypeSong && artitem.mediaType == MediaTypeAlbum)
{
if (artitem.artType == "thumb" && !bDiscSetThumbSet)
item.SetArtFallback(artitem.artType, artname);
else if (StringUtils::StartsWith(artitem.artType, "thumb"))
{
int number = atoi(artitem.artType.substr(5).c_str());
if (number > 0 && tag.GetDiscNumber() == number)
{
item.SetArtFallback("thumb", artname);
bDiscSetThumbSet = true;
}
}
}
// For albums and songs set fallback fanart from the artist.
// For songs prefer primary song artist over primary albumartist fanart as fallback fanart
if (artitem.prefix == "artist" && artitem.artType == "fanart")
fanartfallback = artname;
if (artitem.prefix == "albumartist" && artitem.artType == "fanart" && fanartfallback.empty())
fanartfallback = artname;
}
if (!fanartfallback.empty())
item.SetArtFallback("fanart", fanartfallback);
item.AppendArt(artmap);
}
return artfound;
}