Here's the original code for filling the scrapers properly (made for one music scraper)
Code: Select all
void CGUIWindowSettingsCategory::FillInScrapers(CGUISpinControlEx *pControl, const CStdString& strSelected, const CStdString& strContent)
{
CFileItemList items;
if (strContent.Equals("music"))
CDirectory::GetDirectory("special://xbmc/system/scrapers/music",items,".xml",false);
else
CDirectory::GetDirectory("special://xbmc/system/scrapers/video",items,".xml",false);
int j=0;
int k=0;
pControl->Clear();
for ( int i=0;i<items.Size();++i)
{
if (items[i]->m_bIsFolder)
continue;
CScraperParser parser;
if (parser.Load(items[i]->GetPath()))
{
if (parser.GetContent() != strContent && !strContent.Equals("music"))
continue;
if (parser.GetName().Equals(strSelected) || URIUtils::GetFileName(items[i]->GetPath()).Equals(strSelected))
{
if (strContent.Equals("music")) // native strContent would be albums or artists but we're using the same scraper for both
{
if (g_guiSettings.GetString("musiclibrary.scraper") != strSelected)
{
g_guiSettings.SetString("musiclibrary.scraper", URIUtils::GetFileName(items[i]->GetPath()));
SScraperInfo info;
CMusicDatabase database;
info.strPath = g_guiSettings.GetString("musiclibrary.scraper");
info.strContent = "albums";
info.strTitle = parser.GetName();
database.Open();
database.SetScraperForPath("musicdb://",info);
database.Close();
}
}
else if (strContent.Equals("movies"))
g_guiSettings.SetString("scrapers.moviedefault", URIUtils::GetFileName(items[i]->GetPath()));
else if (strContent.Equals("tvshows"))
g_guiSettings.SetString("scrapers.tvshowdefault", URIUtils::GetFileName(items[i]->GetPath()));
else if (strContent.Equals("musicvideos"))
g_guiSettings.SetString("scrapers.musicvideodefault", URIUtils::GetFileName(items[i]->GetPath()));
k = j;
}
pControl->AddLabel(parser.GetName(),j++);
}
}
pControl->SetValue(k);
}
Here's the specific code that I came up with which is clearly not working
Code: Select all
void CGUIWindowSettingsCategory::FillInScrapers(CGUISpinControlEx *pControl, const CStdString& strSelected, const CStdString& strContent)
{
CFileItemList items;
if (strContent.Equals("albums"))
CDirectory::GetDirectory("special://xbmc/system/scrapers/music/albums",items,".xml",false);
else if (strContent.Equals("artists"))
CDirectory::GetDirectory("special://xbmc/system/scrapers/music/artists",items,".xml",false);
else
CDirectory::GetDirectory("special://xbmc/system/scrapers/video",items,".xml",false);
int j=0;
int k=0;
pControl->Clear();
for ( int i=0;i<items.Size();++i)
{
if (items[i]->m_bIsFolder)
continue;
CScraperParser parser;
if (parser.Load(items[i]->GetPath()))
{
if (strContent.Equals("albums"))
g_guiSettings.SetString("musiclibrary.albumscraper", URIUtils::GetFileName(items[i]->GetPath()));
else if (strContent.Equals("artists"))
g_guiSettings.SetString("musiclibrary.artistscraper", URIUtils::GetFileName(items[i]->GetPath()));
else if (strContent.Equals("movies"))
g_guiSettings.SetString("scrapers.moviedefault", URIUtils::GetFileName(items[i]->GetPath()));
else if (strContent.Equals("tvshows"))
g_guiSettings.SetString("scrapers.tvshowdefault", URIUtils::GetFileName(items[i]->GetPath()));
else if (strContent.Equals("musicvideos"))
g_guiSettings.SetString("scrapers.musicvideodefault", URIUtils::GetFileName(items[i]->GetPath()));
k = j;
}
pControl->AddLabel(parser.GetName(),j++);
}
pControl->SetValue(k);
}