public Hashtable GetAnyFanart(Utils.Category category) { var filenames = GetAnyHashtable(category); try { if (filenames != null) return filenames; filenames = new Hashtable(); var SQLCategory = string.Empty; if (category == Utils.Category.MusicFanartScraped) { if (Utils.UseAlbum && !Utils.DisableMPTumbsForRandom) { SQLCategory = (SQLCategory.Length > 0 ? SQLCategory + "," : string.Empty) + "'" + ((object) Utils.Category.MusicAlbumThumbScraped).ToString() + "'"; } if (Utils.UseArtist && !Utils.DisableMPTumbsForRandom) { SQLCategory = (SQLCategory.Length > 0 ? SQLCategory + "," : string.Empty) + "'" + ((object) Utils.Category.MusicArtistThumbScraped).ToString() + "'"; } if (Utils.UseFanart) { SQLCategory = (SQLCategory.Length > 0 ? SQLCategory + "," : string.Empty) + "'" + ((object) Utils.Category.MusicFanartScraped).ToString() + "',"+ "'" + ((object) Utils.Category.MusicFanartManual).ToString() + "'"; } } else SQLCategory = "'" + ((object) category).ToString() + "'"; if (!string.IsNullOrEmpty(SQLCategory)) { var SQL = "SELECT Id, Key1, FullPath, SourcePath, Category, Provider "+ "FROM Image "+ "WHERE Enabled = 'True' AND "+ "DummyItem = 'False' AND "+ "AvailableRandom = 'True' AND "+ "Category IN (" + SQLCategory + ");"; SQLiteResultSet sqLiteResultSet; lock (lockObject) sqLiteResultSet = dbClient.Execute(SQL); var index = 0; while (index < sqLiteResultSet.Rows.Count) { var fanartImage = new FanartImage(sqLiteResultSet.GetField(index, 0), sqLiteResultSet.GetField(index, 1), sqLiteResultSet.GetField(index, 2), sqLiteResultSet.GetField(index, 3), sqLiteResultSet.GetField(index, 4), sqLiteResultSet.GetField(index, 5)); filenames.Add(index, fanartImage); checked { ++index; } } Utils.Shuffle(ref filenames); AddToAnyHashtable(category, filenames); } return filenames; } catch (Exception ex) { logger.Error("getAnyFanart: " + ex); return filenames; } }
public Hashtable GetFanart(string artist, string album, Utils.Category category, bool highDef) { var filenames = new Hashtable(); var flag = false; // logger.Debug("*** Key1: "+artist+" Key2: "+album); // logger.Debug("*** For DB Query ["+Utils.HandleMultipleArtistNamesForDBQuery(Utils.PatchSql(artist))+"]"); try { string SQL; SQLiteResultSet sqLiteResultSet; SQL = "SELECT Id, Key1, FullPath, SourcePath, Category, Provider "+ "FROM Image "+ "WHERE Key1 IN (" + Utils.HandleMultipleArtistNamesForDBQuery(Utils.PatchSql(artist)) + ") AND "+ (album == null ? string.Empty : "Key2 = '"+Utils.PatchSql(album)+"' AND ")+ "Enabled = 'True' AND "+ "DummyItem = 'False'"+ (category == Utils.Category.MusicFanartScraped ? " AND Category in (" + Utils.GetMusicFanartCategoriesInStatement(highDef) + ");" : ";") ; lock (lockObject) sqLiteResultSet = dbClient.Execute(SQL); if (!string.IsNullOrEmpty(album) && (sqLiteResultSet.Rows.Count <= 0)) { flag = true ; SQL = "SELECT Id, Key1, FullPath, SourcePath, Category, Provider "+ "FROM Image "+ "WHERE Key1 IN (" + Utils.HandleMultipleArtistNamesForDBQuery(Utils.PatchSql(artist)) + ") AND "+ "Enabled = 'True' AND "+ "DummyItem = 'False'"+ (category == Utils.Category.MusicFanartScraped ? " AND Category in (" + Utils.GetMusicFanartCategoriesInStatement(highDef) + ");" : ";") ; lock (lockObject) sqLiteResultSet = dbClient.Execute(SQL); } // logger.Debug("*** "+SQL) ; var index = 0; while (index < sqLiteResultSet.Rows.Count) { var fanartImage = new FanartImage(sqLiteResultSet.GetField(index, 0).Trim(), sqLiteResultSet.GetField(index, 1).Trim(), sqLiteResultSet.GetField(index, 2).Trim(), sqLiteResultSet.GetField(index, 3).Trim(), sqLiteResultSet.GetField(index, 4).Trim(), sqLiteResultSet.GetField(index, 5).Trim()); filenames.Add(index, fanartImage); // logger.Debug("*** Fanart: "+sqLiteResultSet.GetField(index, 2)); checked { ++index; } } Utils.Shuffle(ref filenames); // TODO: ... Then create procedure for Delete Old Music Fanart files from Disk (Artist not in MP DB and Last_Access < NOW-100) if (sqLiteResultSet.Rows.Count > 0) { try { if (category == Utils.Category.MusicFanartScraped) SQL = "UPDATE Image SET Last_Access = '"+DateTime.Today.ToString("yyyyMMdd", CultureInfo.CurrentCulture)+"' "+ "WHERE Key1 IN (" + Utils.HandleMultipleArtistNamesForDBQuery(Utils.PatchSql(artist)) + ") AND "+ (album == null || flag ? string.Empty : "Key2 = '"+Utils.PatchSql(album)+"' AND ")+ "Enabled = 'True' AND "+ "DummyItem = 'False' AND "+ "Category in (" + Utils.GetMusicFanartCategoriesInStatement(highDef) + ");"; else SQL = "UPDATE Image SET Last_Access = '"+DateTime.Today.ToString("yyyyMMdd", CultureInfo.CurrentCulture)+"' "+ "WHERE Key1 IN ('" + Utils.PatchSql(artist) + "') AND "+ (album == null || flag ? string.Empty : "Key2 = '"+Utils.PatchSql(album)+"' AND ")+ "DummyItem = 'False' AND "+ "Enabled = 'True';"; lock (lockObject) dbClient.Execute(SQL); } catch (Exception ex) { logger.Debug("getFanart: Last Access update:"); logger.Debug(ex); } } } catch (Exception ex) { logger.Error("getFanart: " + ex); } return filenames; }
private void AddScapedFanartToAnyHash() { if (HtAnyFanart == null) HtAnyFanart = new Hashtable(); var hashtable = !HtAnyFanart.ContainsKey(Utils.Category.MusicFanartScraped) ? new Hashtable() : (Hashtable) HtAnyFanart[Utils.Category.MusicFanartScraped]; if (hashtable != null && hashtable.Count >= 1) return; var filenames = new Hashtable(); var str = "SELECT Id, Key1, FullPath, SourcePath, Category, Provider "+ "FROM Image "+ "WHERE Enabled = 'True' AND "+ "DummyItem = 'False' AND "+ "Category = '" + ((object) Utils.Category.MusicFanartScraped).ToString() + "';"; SQLiteResultSet sqLiteResultSet; lock (lockObject) sqLiteResultSet = dbClient.Execute(str); var num = 0; while (num < sqLiteResultSet.Rows.Count) { var fanartImage = new FanartImage(sqLiteResultSet.GetField(num, 0), sqLiteResultSet.GetField(num, 1), sqLiteResultSet.GetField(num, 2), sqLiteResultSet.GetField(num, 3), sqLiteResultSet.GetField(num, 4), sqLiteResultSet.GetField(num, 5)); filenames.Add(num, fanartImage); checked { ++num; } } Utils.Shuffle(ref filenames); HtAnyFanart.Remove(Utils.Category.MusicFanartScraped); HtAnyFanart.Add(Utils.Category.MusicFanartScraped, filenames); }
public Hashtable GetAnyFanartFromDB(Utils.Category category, int iLimit = 0, int iOffset = 0) { var filenames = new Hashtable(); try { var SQLCategory = string.Empty; if (category == Utils.Category.MusicFanartScraped) { if (Utils.UseAlbum && !Utils.DisableMPTumbsForRandom) { SQLCategory = (SQLCategory.Length > 0 ? SQLCategory + "," : string.Empty) + "'" + ((object) Utils.Category.MusicAlbumThumbScraped).ToString() + "'"; } if (Utils.UseArtist && !Utils.DisableMPTumbsForRandom) { SQLCategory = (SQLCategory.Length > 0 ? SQLCategory + "," : string.Empty) + "'" + ((object) Utils.Category.MusicArtistThumbScraped).ToString() + "'"; } if (Utils.UseFanart) { SQLCategory = (SQLCategory.Length > 0 ? SQLCategory + "," : string.Empty) + "'" + ((object) Utils.Category.MusicFanartScraped).ToString() + "',"+ "'" + ((object) Utils.Category.MusicFanartManual).ToString() + "'"; } } else { SQLCategory = "'" + ((object) category).ToString() + "'"; } if (!string.IsNullOrEmpty(SQLCategory)) { var SQL = "SELECT Id, Key1, FullPath, SourcePath, Category, Provider "+ "FROM Image "+ "WHERE Enabled = 'True' AND "+ "DummyItem = 'False' AND "+ "AvailableRandom = 'True' AND "+ // 3.5 " AND ((iWidth > " + Utils.MinWResolution + " AND iHeight > " + Utils.MinHResolution + (Utils.UseAspectRatio ? " AND Ratio >= 1.3 " : "") + ") OR (iWidth = null AND iHeight = null))" "Category IN (" + SQLCategory + ") "+ (iLimit > 0 ? "LIMIT " + iLimit.ToString() + " OFFSET " + iOffset.ToString() : "") + ";"; SQLiteResultSet sqLiteResultSet; lock (lockObject) sqLiteResultSet = dbClient.Execute(SQL); var index = 0; while (index < sqLiteResultSet.Rows.Count) { var fanartImage = new FanartImage(sqLiteResultSet.GetField(index, 0), sqLiteResultSet.GetField(index, 1), sqLiteResultSet.GetField(index, 2), sqLiteResultSet.GetField(index, 3), sqLiteResultSet.GetField(index, 4), sqLiteResultSet.GetField(index, 5)); filenames.Add(index, fanartImage); checked { ++index; } } } } catch (Exception ex) { logger.Error("GetAnyFanartFromDB: " + ex); } return filenames; }