/// <summary> /// Get Local Artist Artwork, check for custom folder or artwork in the same folder as the music video /// </summary> /// <param name="artistInfo"></param> /// <returns></returns> public bool GetArtistArt(DBArtistInfo artistInfo) { logger.Debug("In Method GetArtistArt(DBArtistInfo artistInfo)"); if (artistInfo == null) { return(false); } // if we already have a artist move on for now if (artistInfo.ArtFullPath.Trim().Length > 0) { return(false); } bool found = false; // If a custom artfolder is specified the search if (mvCentralCore.Settings.SearchCustomFolderForArtistArt) { found = getArtistArtFromCustomArtistArtFolder(artistInfo); logger.Debug("Sucessfully added fanart from custom folder: {0}", artistInfo.ArtFullPath); }// Look for Artwork in same folder as video if (!found) { found = getArtistArtFromArtistArtFolder(artistInfo); } // Look for artwork in the ..\thumbs\mvCentral\Artists\FullSize folder if (!found) { found = getOldArtistArt(artistInfo); } return(found); }
private void ArtistActions(Action.ActionType actionType) { if ((actionType == Action.ActionType.ACTION_MUSIC_PLAY) || (actionType == Action.ActionType.ACTION_PLAY) || (actionType == Action.ActionType.ACTION_PAUSE)) { if ((actionType == Action.ActionType.ACTION_MUSIC_PLAY) || (actionType == Action.ActionType.ACTION_PLAY) || (actionType == Action.ActionType.ACTION_PAUSE && !g_Player.HasVideo)) { DBArtistInfo currArtist = DBArtistInfo.Get(facadeLayout.SelectedListItem.Label); List <DBTrackInfo> allTracksByArtist = DBTrackInfo.GetEntriesByArtist(currArtist); AddToPlaylist(allTracksByArtist, true, mvCentralCore.Settings.ClearPlaylistOnAdd, mvCentralCore.Settings.GeneratedPlaylistAutoShuffle); } } else if (actionType == Action.ActionType.REMOTE_0 || actionType == Action.ActionType.REMOTE_1 || actionType == Action.ActionType.REMOTE_2 || actionType == Action.ActionType.REMOTE_3 || actionType == Action.ActionType.REMOTE_4 || actionType == Action.ActionType.REMOTE_5 || actionType == Action.ActionType.REMOTE_6 || actionType == Action.ActionType.REMOTE_7 || actionType == Action.ActionType.REMOTE_8 || actionType == Action.ActionType.REMOTE_9) { DoSpell(actionType); } else { _currentView = MvView.Artist; artistID = facadeLayout.SelectedListItem.ItemId; logger.Debug("Calling loadCurrent from ArtistActions"); loadCurrent(); } }
/// <summary> /// Get Artist Artwork from the Artist Artwork folder. /// </summary> /// <param name="mvArtistObject"></param> /// <returns></returns> private bool getArtistArtFromArtistArtFolder(DBArtistInfo mvArtistObject) { string artistArtFolderPath = string.Empty; logger.Debug("In Method getArtistArtFromArtistArtFolder(DBArtistInfo mv)"); if (mvArtistObject == null) { return(false); } // grab a list of possible filenames for the artist based on the user pattern string pattern = mvCentralCore.Settings.ArtistArtworkFilenamePattern; List <string> filenames = getPossibleNamesFromPattern(pattern, mvArtistObject); // check the ArtistArt folder for the user patterned ArtistArt artistArtFolderPath = mvCentralCore.Settings.ArtistArtFolder; FileInfo newArtistArt = getFirstFileFromFolder(artistArtFolderPath, filenames); if (newArtistArt != null && newArtistArt.Exists) { mvArtistObject.ArtFullPath = newArtistArt.FullName; logger.Info("Loaded artistart from " + newArtistArt.FullName); return(true); } return(false); }
// generate a filename for a artist art. should be unique based on the source hash private static string GenerateFilename(DBArtistInfo mv, string source) { string artFolder = MusicVideosCore.Settings.ArtistArtFolder; string safeName = mv.Artist.Replace(' ', '.').ToValidFilename(); return(artFolder + "\\{" + safeName + "} [" + source.GetHashCode() + "].jpg"); }
/// <summary> /// Get the track details /// </summary> /// <param name="mvSignature"></param> /// <returns></returns> public List <DBTrackInfo> GetTrackDetail(MusicVideoSignature mvSignature) { List <DBTrackInfo> results = new List <DBTrackInfo>(); if (mvSignature == null) { return(results); } lock (lockList) { DBTrackInfo mv = getMusicVideoTrack(mvSignature.Artist, mvSignature.Album, mvSignature.Track); if (mv != null) { if (mv.ArtistInfo.Count == 0) { DBArtistInfo d4 = new DBArtistInfo(); d4.Artist = mvSignature.Artist; mv.ArtistInfo.Add(d4); } results.Add(mv); } } return(results); }
public static ArtistArt FromUrl(string title, string url, out ImageLoadResults status) { DBArtistInfo mv = new DBArtistInfo(); mv.Artist = title; return(FromUrl(mv, url, false, out status)); }
public static ArtistArt FromUrl(string title, string url, bool ignoreRestrictions, out ImageLoadResults status) { DBArtistInfo mv = new DBArtistInfo(); mv.Artist = title; return(FromUrl(mv, url, ignoreRestrictions, out status)); }
public UpdateResults UpdateTrack(DBTrackInfo mv) { if (mv == null) { return(UpdateResults.FAILED); } lock (LockList) { DBArtistInfo db1 = DBArtistInfo.Get(mv); if (db1 != null) { mv.ArtistInfo[0] = db1; } if (mv.ArtistInfo.Count > 0) { mv.ArtistInfo[0].PrimarySource = mv.PrimarySource; mv.ArtistInfo[0].Commit(); } DBAlbumInfo db2 = DBAlbumInfo.Get(mv); if (db2 != null) { mv.AlbumInfo[0] = db2; } if (mv.AlbumInfo.Count > 0) { foreach (DBAlbumInfo db3 in mv.AlbumInfo) { db3.PrimarySource = mv.PrimarySource; db3.Commit(); } } } return(UpdateResults.SUCCESS); }
public CreateAlbumForTrack(DBTrackInfo trackToAdd) { InitializeComponent(); DBArtistInfo theArtist = DBArtistInfo.Get(trackToAdd); tbArtistName.Text = theArtist.Artist; tbTrackName.Text = trackToAdd.Track; }
/// <summary> /// Play tracks by selected Genre /// </summary> private void playByGenre() { GUIDialogMenu dlgMenu = (GUIDialogMenu)GUIWindowManager.GetWindow((int)GUIWindow.Window.WINDOW_DIALOG_MENU); if (dlgMenu != null) { dlgMenu.Reset(); dlgMenu.SetHeading(mvCentralUtils.PluginName() + " - " + Localization.SmartPlaylistOptions); List <DBGenres> genreList = DBGenres.GetAll(); genreList.Sort(delegate(DBGenres p1, DBGenres p2) { return(p1.Genre.CompareTo(p2.Genre)); }); foreach (DBGenres genre in genreList) { if (genre.Enabled) { dlgMenu.Add(genre.Genre); } } dlgMenu.DoModal(GetID); if (dlgMenu.SelectedLabel == -1) // Nothing was selected { return; } //dlgMenu.SelectedLabelText PlayList playlist = Player.playlistPlayer.GetPlaylist(PlayListType.PLAYLIST_MVCENTRAL); playlist.Clear(); List <DBArtistInfo> allArtists = DBArtistInfo.GetAll(); foreach (DBArtistInfo artist in allArtists) { if (tagMatched(dlgMenu.SelectedLabelText, artist)) { logger.Debug("Matched Artist {0} with Tag {1}", artist.Artist, dlgMenu.SelectedLabelText); List <DBTrackInfo> theTracks = DBTrackInfo.GetEntriesByArtist(artist); foreach (DBTrackInfo artistTrack in theTracks) { playlist.Add(new PlayListItem(artistTrack)); } } } Player.playlistPlayer.CurrentPlaylistType = PlayListType.PLAYLIST_MVCENTRAL; if (mvCentralCore.Settings.GeneratedPlaylistAutoShuffle) { playlist.Shuffle(); } Player.playlistPlayer.Play(0); if (mvCentralCore.Settings.AutoFullscreen) { GUIWindowManager.ActivateWindow((int)GUIWindow.Window.WINDOW_FULLSCREEN_VIDEO); } } }
private void setMusicVideoArtist(ref DBArtistInfo mv, string artistName, string artistmbid) { if (string.IsNullOrEmpty(artistName)) { return; } logger.Debug("In Method: setMusicVideoArtist(ref DBArtistInfo mv, Artist: " + artistName + " MBID: " + artistmbid + ")"); MusicDatabase m_db = null; try { m_db = MusicDatabase.Instance; } catch (Exception e) { logger.Error("setMusicVideoArtist: Music database init failed " + e.ToString()); return; } var artistInfo = new MediaPortal.Music.Database.ArtistInfo(); if (!m_db.GetArtistInfo(artistName, ref artistInfo)) { return; } // Name mv.Artist = artistName; // MBID // mv.MdID = // Tags char[] delimiters = new char[] { ',' }; string[] tags = artistInfo.Genres.Split(delimiters, StringSplitOptions.RemoveEmptyEntries); foreach (string tag in tags) { mv.Tag.Add(tag.Trim()); } tags = artistInfo.Styles.Split(delimiters, StringSplitOptions.RemoveEmptyEntries); foreach (string tag in tags) { mv.Tag.Add(tag.Trim()); } // Bio mv.bioSummary = artistInfo.AMGBio; mv.bioContent = artistInfo.AMGBio; // Additional mv.Born = artistInfo.Born; mv.Genre = artistInfo.Genres; mv.Styles = artistInfo.Styles; mv.YearsActive = artistInfo.YearsActive; // Image URL if (!string.IsNullOrEmpty(artistInfo.Image) && !mv.ArtUrls.Contains(artistInfo.Image)) { mv.ArtUrls.Add(artistInfo.Image); } }
/// <summary> /// Update missing Artist information /// </summary> /// <param name="mv"></param> /// <param name="artistInfo"></param> private void UpdateMusicVideoArtist(ref DBArtistInfo mv, ArtistInfo artistInfo, string strArtistHTML) { if (mv.Formed.Trim() == string.Empty) { mv.Formed = mvCentralUtils.StripHTML(artistInfo.Formed); } if (mv.Disbanded.Trim() == string.Empty) { mv.Disbanded = mvCentralUtils.StripHTML(artistInfo.Disbanded); } if (mv.Born.Trim() == string.Empty) { mv.Born = mvCentralUtils.StripHTML(artistInfo.Born); } if (mv.Death.Trim() == string.Empty) { mv.Death = mvCentralUtils.StripHTML(artistInfo.Death); } if (mv.bioSummary.Trim() == string.Empty) { mv.bioSummary = getBioSummary(artistInfo.AMGBio, 50); } if (mv.bioContent.Trim() == string.Empty) { mv.bioContent = artistInfo.AMGBio; } if (mv.Genre.Trim() == string.Empty) { mv.Genre = artistInfo.Genres; } if (mv.Tones.Trim() == string.Empty) { mv.Tones = artistInfo.Tones; } if (mv.Styles.Trim() == string.Empty) { mv.Styles = artistInfo.Styles; } if (mv.YearsActive.Trim() == string.Empty) { mv.YearsActive = artistInfo.YearsActive; } }
/// <summary> /// Set the Artist information, override existing information /// </summary> /// <param name="mv"></param> /// <param name="artistInfo"></param> private void SetMusicVideoArtist(ref DBArtistInfo mv, ArtistInfo artistInfo, string strArtistHTML) { // Now fill in the data mv.Formed = mvCentralUtils.StripHTML(artistInfo.Formed); mv.Disbanded = mvCentralUtils.StripHTML(artistInfo.Disbanded); mv.Born = mvCentralUtils.StripHTML(artistInfo.Born); mv.Death = mvCentralUtils.StripHTML(artistInfo.Death); mv.bioSummary = getBioSummary(artistInfo.AMGBio, 50); mv.bioContent = artistInfo.AMGBio; mv.Genre = artistInfo.Genres; mv.Tones = artistInfo.Tones; mv.Styles = artistInfo.Styles; mv.YearsActive = artistInfo.YearsActive; }
private void GenreActions(MediaPortal.GUI.Library.Action.ActionType actionType) { if ((actionType == Action.ActionType.ACTION_MUSIC_PLAY) || (actionType == Action.ActionType.ACTION_PLAY) || (actionType == Action.ActionType.ACTION_PAUSE)) { if ((actionType == Action.ActionType.ACTION_MUSIC_PLAY) || (actionType == Action.ActionType.ACTION_PLAY) || (actionType == Action.ActionType.ACTION_PAUSE && !g_Player.HasVideo)) { List <DBArtistInfo> artistList = new List <DBArtistInfo>(); List <DBArtistInfo> artistFullList = DBArtistInfo.GetAll(); logger.Debug("Checking for matches for Genre : " + facadeLayout.SelectedListItem.Label); foreach (DBArtistInfo artistInfo in artistFullList) { if (tagMatched(facadeLayout.SelectedListItem.Label, artistInfo)) { logger.Debug("Matched Artist {0} with Tag {1}", artistInfo.Artist, facadeLayout.SelectedListItem.Label); if (!artistList.Contains(artistInfo)) { artistList.Add(artistInfo); } } } if (mvCentralCore.Settings.ClearPlaylistOnAdd) { ClearPlaylist(); } foreach (DBArtistInfo currArtist in artistList) { List <DBTrackInfo> artistTracks = DBTrackInfo.GetEntriesByArtist(currArtist); AddToPlaylist(artistTracks, false, false, mvCentralCore.Settings.GeneratedPlaylistAutoShuffle); } Player.playlistPlayer.Play(0); if (mvCentralCore.Settings.AutoFullscreen) { GUIWindowManager.ActivateWindow((int)GUIWindow.Window.WINDOW_FULLSCREEN_VIDEO); } } else { _currentView = MvView.Genres; artistID = facadeLayout.SelectedListItem.ItemId; logger.Debug("Calling loadCurrent from GenreActions"); loadCurrent(); } } }
/// <summary> /// Get the Artist Artwork from Mediaportal folder /// </summary> /// <param name="mvArtistObject"></param> /// <returns></returns> private bool getMPArtistArt(DBArtistInfo mvArtistObject) { logger.Debug("In Method: getMPArtistArt(DBArtistInfo mvArtistObject)"); bool found = false; string thumbFolder = Thumbs.MusicArtists; string cleanTitle = MediaPortal.Util.Utils.MakeFileName(mvArtistObject.Artist); string filename = thumbFolder + @"\" + cleanTitle + "L.jpg"; if (File.Exists(filename)) { found &= mvArtistObject.AddArtFromFile(filename); } logger.Debug("In Method: getMPArtistArt(DBArtistInfo mvArtistObject) filename: " + filename + " - " + found); return(found); }
public int Compare(GUIListItem x, GUIListItem y) { try { DBArtistInfo artistX = (DBArtistInfo)x.MusicTag; DBArtistInfo artistY = (DBArtistInfo)y.MusicTag; int rtn; switch (_sortField) { case SortingFields.DateAdded: rtn = artistX.DateAdded.CompareTo(artistY.DateAdded); break; // default to the title field case SortingFields.Artist: default: rtn = artistX.SortBy.CompareTo(artistY.SortBy); break; } // if both items are identical, fallback to using the Title if (rtn == 0) { rtn = artistX.Artist.CompareTo(artistY.Artist); } // if both items are STILL identical, fallback to using the ID if (rtn == 0) { rtn = artistX.ID.GetValueOrDefault(0).CompareTo(artistY.ID.GetValueOrDefault(0)); } if (_sortDirection == SortingDirections.Descending) { rtn = -rtn; } return(rtn); } catch { return(0); } }
public static ArtistArt FromUrl(DBArtistInfo mv, string url, bool ignoreRestrictions, out ImageLoadResults status) { ImageSize minSize = null; ImageSize maxSize = new ImageSize(); if (!ignoreRestrictions) { minSize = new ImageSize(); minSize.Width = MusicVideosCore.Settings.MinimumArtistWidth; minSize.Height = MusicVideosCore.Settings.MinimumArtistHeight; } maxSize.Width = MusicVideosCore.Settings.MaximumArtistWidth; maxSize.Height = MusicVideosCore.Settings.MaximumArtistHeight; bool redownload = MusicVideosCore.Settings.RedownloadArtistArtwork; ArtistArt newArtistart = new ArtistArt(); newArtistart.Filename = GenerateFilename(mv, url); status = newArtistart.FromUrl(url, ignoreRestrictions, minSize, maxSize, redownload); switch (status) { case ImageLoadResults.SUCCESS: logger.Info("Added artist art for \"{0}\" from: {1}", mv.Artist, url); break; case ImageLoadResults.SUCCESS_REDUCED_SIZE: logger.Debug("Added resized artist art for \"{0}\" from: {1}", mv.Artist, url); break; case ImageLoadResults.FAILED_ALREADY_LOADED: logger.Debug("Artist art for \"{0}\" from the following URL is already loaded: {1}", mv.Artist, url); return(null); case ImageLoadResults.FAILED_TOO_SMALL: logger.Error("Downloaded artist art for \"{0}\" failed minimum resolution requirements: {1}", mv.Artist, url); return(null); case ImageLoadResults.FAILED: logger.Error("Failed downloading artist art for \"{0}\": {1}", mv.Artist, url); return(null); } return(newArtistart); }
/// <summary> /// Get Local Artist Artwork, check for custom folder or artwork in the same folder as the music video /// </summary> /// <param name="artistInfo"></param> /// <returns></returns> public bool GetArtistArt(DBArtistInfo artistInfo) { if (artistInfo == null) { return(false); } logger.Debug("In Method: GetArtistArt(DBArtistInfo artistInfo)"); // if we already have a artist move on for now if (artistInfo.ArtFullPath.Trim().Length > 0 && File.Exists(artistInfo.ArtFullPath.Trim())) { return(false); } // Look for Artwork in Mediaportal folder return(getMPArtistArt(artistInfo)); }
/// <summary> /// Play by Selected Tag /// </summary> private void playByTag() { GUIDialogMenu dlgMenu = (GUIDialogMenu)GUIWindowManager.GetWindow((int)GUIWindow.Window.WINDOW_DIALOG_MENU); if (dlgMenu != null) { dlgMenu.Reset(); dlgMenu.SetHeading(mvCentralUtils.PluginName() + " - " + Localization.SmartPlaylistOptions); foreach (string artistTag in artistTags) { dlgMenu.Add(artistTag); } dlgMenu.DoModal(GetID); if (dlgMenu.SelectedLabel == -1) // Nothing was selected { return; } //dlgMenu.SelectedLabelText PlayList playlist = Player.playlistPlayer.GetPlaylist(PlayListType.PLAYLIST_MVCENTRAL); playlist.Clear(); List <DBArtistInfo> allArtists = DBArtistInfo.GetAll(); foreach (DBArtistInfo artist in allArtists) { if (artist.Tag.Contains(dlgMenu.SelectedLabelText)) { List <DBTrackInfo> theTracks = DBTrackInfo.GetEntriesByArtist(artist); foreach (DBTrackInfo artistTrack in theTracks) { playlist.Add(new PlayListItem(artistTrack)); } } } Player.playlistPlayer.CurrentPlaylistType = PlayListType.PLAYLIST_MVCENTRAL; playlist.Shuffle(); Player.playlistPlayer.Play(0); if (mvCentralCore.Settings.AutoFullscreen) { GUIWindowManager.ActivateWindow((int)GUIWindow.Window.WINDOW_FULLSCREEN_VIDEO); } } }
private void AlbumActions(MediaPortal.GUI.Library.Action.ActionType actionType) { if ((actionType == Action.ActionType.ACTION_MUSIC_PLAY) || (actionType == Action.ActionType.ACTION_PLAY) || (actionType == Action.ActionType.ACTION_PAUSE)) { if ((actionType == Action.ActionType.ACTION_MUSIC_PLAY) || (actionType == Action.ActionType.ACTION_PLAY) || (actionType == Action.ActionType.ACTION_PAUSE && !g_Player.HasVideo)) { DBArtistInfo currArtist = DBArtistInfo.Get(facadeLayout.SelectedListItem.Label); List <DBTrackInfo> allTracksOnAlbum = DBTrackInfo.GetEntriesByAlbum((DBAlbumInfo)facadeLayout.SelectedListItem.MusicTag); AddToPlaylist(allTracksOnAlbum, true, mvCentralCore.Settings.ClearPlaylistOnAdd, mvCentralCore.Settings.GeneratedPlaylistAutoShuffle); } else { _currentView = MvView.Artist; artistID = facadeLayout.SelectedListItem.ItemId; logger.Debug("Calling loadCurrent from AlbumActions"); loadCurrent(); } } }
/// <summary> /// Get the Artist Artwork using the old Method /// </summary> /// <param name="mvArtistObject"></param> /// <returns></returns> private bool getOldArtistArt(DBArtistInfo mvArtistObject) { logger.Debug("In Method getOldArtistArt(DBArtistInfo mv)"); bool found = false; string artistartFolderPath = mvCentralCore.Settings.ArtistArtFolder; DirectoryInfo artistartFolder = new DirectoryInfo(artistartFolderPath); string safeName = mvArtistObject.Artist.Replace(' ', '.').ToValidFilename(); Regex oldArtistArtRegex = new Regex("^{?" + Regex.Escape(safeName) + "}? \\[-?\\d+\\]\\.(jpg|png)"); foreach (FileInfo currFile in artistartFolder.GetFiles()) { if (oldArtistArtRegex.IsMatch(currFile.Name)) { found &= mvArtistObject.AddArtFromFile(currFile.FullName); } } return(found); }
/// <summary> /// get the artist details /// </summary> /// <param name="mv"></param> /// <returns></returns> public DBTrackInfo GetArtistDetail(DBTrackInfo mv) { // ****************** Additional Artist Info Processing ****************** // Check and update Artist details from additional providers DBArtistInfo artInfo = new DBArtistInfo(); artInfo = mv.ArtistInfo[0]; foreach (DBSourceInfo artistExtraInfo in artistDetailSources) { if (artInfo.PrimarySource != artistExtraInfo.Provider) { artInfo = artistExtraInfo.Provider.GetArtistDetail(mv).ArtistInfo[0]; artInfo.PrimarySource = artistExtraInfo; } } mv.ArtistInfo[0] = artInfo; return(mv); }
public bool GetArtistArt(DBArtistInfo mvArtistObject) { if (mvArtistObject == null) { return(false); } int artistartAdded = 0; int count = 0; // grab artistart loading settings int maxArtistArts = mvCentralCore.Settings.MaxArtistArts; lock (mvArtistObject) { if (mvArtistObject.ArtUrls != null) { foreach (string a2 in mvArtistObject.ArtUrls) { if (mvArtistObject.AlternateArts.Count >= maxArtistArts) { break; } if (mvArtistObject.AddArtFromURL(a2) == ImageLoadResults.SUCCESS) { artistartAdded++; } count++; } } if (artistartAdded > 0) { return(true); } } // if we get here we didn't manage to find a proper backdrop // so return false return(false); }
public static ArtistArt FromUrl(DBArtistInfo mv, string url, bool ignoreRestrictions, out ImageLoadResults status) { ImageSize minSize = null; ImageSize maxSize = new ImageSize(); if (!ignoreRestrictions) { minSize = new ImageSize(); minSize.Width = MusicVideosCore.Settings.MinimumArtistWidth; minSize.Height = MusicVideosCore.Settings.MinimumArtistHeight; } maxSize.Width = MusicVideosCore.Settings.MaximumArtistWidth; maxSize.Height = MusicVideosCore.Settings.MaximumArtistHeight; bool redownload = MusicVideosCore.Settings.RedownloadArtistArtwork; ArtistArt newArtistart = new ArtistArt(); newArtistart.Filename = GenerateFilename(mv, url); status = newArtistart.FromUrl(url, ignoreRestrictions, minSize, maxSize, redownload); switch (status) { case ImageLoadResults.SUCCESS: logger.Info("Added artist art for \"{0}\" from: {1}", mv.Artist, url); break; case ImageLoadResults.SUCCESS_REDUCED_SIZE: logger.Debug("Added resized artist art for \"{0}\" from: {1}", mv.Artist, url); break; case ImageLoadResults.FAILED_ALREADY_LOADED: logger.Debug("Artist art for \"{0}\" from the following URL is already loaded: {1}", mv.Artist, url); return null; case ImageLoadResults.FAILED_TOO_SMALL: logger.Error("Downloaded artist art for \"{0}\" failed minimum resolution requirements: {1}", mv.Artist, url); return null; case ImageLoadResults.FAILED: logger.Error("Failed downloading artist art for \"{0}\": {1}", mv.Artist, url); return null; } return newArtistart; }
public UpdateResults UpdateTrack(DBTrackInfo mv) { // Have we anything to update? if (mv == null) { return(UpdateResults.FAILED); } logger.Debug("In Method: UpdateTrack(DBTrackInfo mv)"); lock (lockObj) { // Update the Artist var artistData = DBArtistInfo.Get(mv); if (artistData != null) { mv.ArtistInfo[0] = artistData; } if (mv.ArtistInfo.Count > 0) { mv.ArtistInfo[0].PrimarySource = mv.PrimarySource; mv.ArtistInfo[0].Commit(); } // Update the Album var albumData = DBAlbumInfo.Get(mv); if (albumData != null) { mv.AlbumInfo[0] = albumData; } if (mv.AlbumInfo.Count > 0) { mv.AlbumInfo[0].PrimarySource = mv.PrimarySource; mv.AlbumInfo[0].Commit(); } } return(UpdateResults.SUCCESS); }
/// <summary> /// get the artist details and update missing data from this source /// </summary> /// <param name="mv"></param> /// <returns></returns> public DBTrackInfo GetArtistDetail(DBTrackInfo mv) { string strArtistHtml; string strArtistUrl; // Get details of the artist string artist = mv.ArtistInfo[0].Artist; if (GetArtistHTML(artist, out strArtistHtml, out strArtistUrl)) { var artistInfo = AMGHTMLParser.ParseArtistHTML(strArtistHtml, artist); //var artistInfo = new MusicArtistInfo(); if (artistInfo != null) { artistInfo.Artist = artist; DBArtistInfo mv1 = (DBArtistInfo)mv.ArtistInfo[0]; UpdateMusicVideoArtist(ref mv1, artistInfo, strArtistHtml); } } return(mv); }
/// <summary> /// Get Artist Artwork /// </summary> /// <param name="mvArtistObject"></param> /// <returns></returns> public bool GetArtistArt(DBArtistInfo mvArtistObject) { XmlNodeList xml; // Get the images // If we have a MBID for this Artist use this to retrive the image otherwise fall back to keyword search if (string.IsNullOrEmpty(mvArtistObject.MdID.Trim())) { xml = getXML(SearchArtistImage, APIKey, mvArtistObject.Artist); } else { xml = getXML(SearchArtistImageMBID, APIKey, mvArtistObject.MdID); } // If we reveived nothing back, bail out if (xml == null) { return(false); } XmlNode root = xml.Item(0).ParentNode; // Get image nodes XmlNodeList images = root.SelectNodes(@"/search/images/image"); int artistartAdded = 0; // Loop though each nodce and add it foreach (XmlNode imageNode in images) { XmlNode imageIDNode = imageNode.SelectSingleNode("id"); if (mvArtistObject.AddArtFromURL(string.Format(DownloadImage, APIKey, imageIDNode.InnerText)) == ImageLoadResults.SUCCESS) { artistartAdded++; } } return(artistartAdded > 0); }
/// <summary> /// Get Artist Artwork /// </summary> /// <param name="mvArtistObject"></param> /// <returns></returns> public bool GetArtistArt(DBArtistInfo mvArtistObject) { if (string.IsNullOrEmpty(mvArtistObject.MdID.Trim())) { return(false); } logger.Debug("In Method: GetArtistArt(DBArtistInfo mvArtistObject)"); // Get the images // If we have a MBID for this Artist use this to retrive the image otherwise fall back to keyword search var html = getJSON(SearchArtistImage, APIKey, mvArtistObject.MdID.Trim()); // If we reveived nothing back, bail out if (string.IsNullOrEmpty(html)) { return(false); } int artistartAdded = 0; var URLList = new List <string>(); URLList = ExtractURL("artistthumb", html); if (URLList != null) { foreach (string _url in URLList) { var _fileURL = _url.Substring(checked (_url.IndexOf("|") + 1)); if (mvArtistObject.AddArtFromURL(_fileURL) == ImageLoadResults.SUCCESS) { artistartAdded++; } } } return(artistartAdded > 0); }
/// <summary> /// Get the Artist, Album Details /// </summary> /// <param name="mv"></param> /// <returns></returns> public bool GetDetails(DBBasicInfo mv) { string strArtistHTML; string strAlbumHTML; string strArtistURL; ReportProgress(string.Empty); // Get details of the artist if (mv.GetType() == typeof(DBArtistInfo)) { string artist = ((DBArtistInfo)mv).Artist; ReportProgress("Getting Artist..."); if (GetArtistHTML(artist, out strArtistHTML, out strArtistURL)) { var artistInfo = AMGHTMLParser.ParseArtistHTML(strArtistHTML, artist); if (artistInfo != null) { artistInfo.Artist = artist; DBArtistInfo mv1 = (DBArtistInfo)mv; SetMusicVideoArtist(ref mv1, artistInfo, strArtistHTML); GetArtistArt((DBArtistInfo)mv); ReportProgress("Done..."); return(true); } } return(false); } // get details of the album if (mv.GetType() == typeof(DBAlbumInfo)) { string album = ((DBAlbumInfo)mv).Album; List <DBTrackInfo> trackList = DBTrackInfo.GetEntriesByAlbum((DBAlbumInfo)mv); DBArtistInfo artist = DBArtistInfo.Get(trackList[0]); if (GetAlbumHTML(artist.Artist, album, out strAlbumHTML)) { var albumInfo = AMGHTMLParser.ParseAlbumHTML(strAlbumHTML, album, artist.Artist); if (albumInfo != null) { albumInfo.Artist = album; DBAlbumInfo mv1 = (DBAlbumInfo)mv; SetMusicVideoAlbum(ref mv1, albumInfo); } } return(false); } // get details of the track if (mv.GetType() == typeof(DBTrackInfo)) { if (((DBTrackInfo)mv).LocalMedia[0].IsDVD) { string track = ((DBTrackInfo)mv).Track; GetDVDDetails((DBTrackInfo)mv); return(true); } else { string track = ((DBTrackInfo)mv).Track; GetTrackDetails((DBTrackInfo)mv); return(true); } } return(true); }
// generate a filename for a artist art. should be unique based on the source hash private static string GenerateFilename(DBArtistInfo mv, string source) { string artFolder = MusicVideosCore.Settings.ArtistArtFolder; string safeName = mv.Artist.Replace(' ', '.').ToValidFilename(); return artFolder + "\\{" + safeName + "} [" + source.GetHashCode() + "].jpg"; }
public static ArtistArt FromUrl(DBArtistInfo mv, string url, out ImageLoadResults status) { return(FromUrl(mv, url, false, out status)); }
public static ArtistArt FromUrl(string title, string url, bool ignoreRestrictions, out ImageLoadResults status) { DBArtistInfo mv = new DBArtistInfo(); mv.Artist = title; return FromUrl(mv, url, ignoreRestrictions, out status); }
public static ArtistArt FromFile(DBArtistInfo mv, string path) { throw new NotImplementedException(); }
public static ArtistArt FromUrl(string title, string url, out ImageLoadResults status) { DBArtistInfo mv = new DBArtistInfo(); mv.Artist = title; return FromUrl(mv, url, false, out status); }
public static ArtistArt FromUrl(DBArtistInfo mv, string url, out ImageLoadResults status) { return FromUrl(mv, url, false, out status); }