/// <summary> /// Searches for the specified show and its episode. /// </summary> /// <param name="ep">The episode.</param> public void Search(Episode ep) { _td = new TaskDialog { Title = "Searching...", Instruction = "{0} S{1:00}E{2:00}".FormatWith(ep.Show.Name, ep.Season, ep.Number), Content = "Searching for the episode...", CommonButtons = TaskDialogButton.Cancel, ShowProgressBar = true }; _td.SetMarqueeProgressBar(true); _td.Destroyed += TaskDialogDestroyed; _td.ButtonClick += TaskDialogDestroyed; _active = true; new Thread(() => { Thread.Sleep(500); if (_active) { _res = _td.Show().CommonButton; } }).Start(); _os.SearchAsync(ep); Utils.Win7Taskbar(state: TaskbarProgressBarState.Indeterminate); }
/// <summary> /// Searches for videos on the service asynchronously. /// </summary> /// <param name="ep">The episode.</param> public void SearchAsync(Episode ep) { SearchThread = new Thread(() => { try { var url = Search(ep); OnlineSearchDone.Fire(this, "{0} S{1:00}E{2:00}".FormatWith(ep.Show.Name, ep.Season, ep.Number), url); } catch (OnlineVideoNotFoundException ex) { OnlineSearchError.Fire(this, "{0} S{1:00}E{2:00}".FormatWith(ep.Show.Name, ep.Season, ep.Number), ex.Message, new Tuple<string, string, string>(ex.LinkTitle, ex.LinkURL, null)); } catch (Exception ex) { OnlineSearchError.Fire(this, "{0} S{1:00}E{2:00}".FormatWith(ep.Show.Name, ep.Season, ep.Number), "There was an error while searching for the video on this service.", new Tuple<string, string, string>(null, null, ex.Message)); } }); SearchThread.Start(); }
/// <summary> /// Searches for videos on BBC iPlayer. /// </summary> /// <param name="ep">The episode.</param> /// <returns> /// URL of the video. /// </returns> public override string Search(Episode ep) { return "http://www.google.com/search?btnI=I'm+Feeling+Lucky&hl=en&q=" + Utils.EncodeURL("intitle:" + ep.Show.Name + " intitle:\"season " + ep.Season + "\" site:itunes.apple.com inurl:/tv-season/"); }
/// <summary> /// Searches for videos on BBC iPlayer. /// </summary> /// <param name="ep">The episode.</param> /// <returns> /// URL of the video. /// </returns> public override string Search(Episode ep) { return "http://www.google.com/search?btnI=I'm+Feeling+Lucky&hl=en&q=" + Utils.EncodeURL("intitle:" + ep.Show.Name + " intitle:\"Season " + ep.Season + ", Episode " + ep.Number + "\" site:amazon.com"); }
/// <summary> /// Searches for videos on the service. /// </summary> /// <param name="ep">The episode.</param> /// <returns> /// URL of the video. /// </returns> public abstract string Search(Episode ep);
/// <summary> /// Downloads all the episodes from the database. /// </summary> /// <param name="setWatched">if set to <c>true</c> the value of the <c>Watched</c> will be fetched from the <c>Database.Trackings</c> list.</param> /// <returns> /// List of episodes. /// </returns> public static List<Episode> GetEpisodes(bool setWatched = false) { lock (Connection) { using (var cmd = new SQLiteCommand("select episodeid, showid, season, episode, airdate, name, descr, pic, url from episodes", Connection)) using (var dr = cmd.ExecuteReader()) { var episodes = new List<Episode>(); while (dr.Read()) { try { var episode = new Episode(); episode.EpisodeID = dr.GetInt32(0); episode.ShowID = dr.GetInt32(1); episode.Season = dr.GetInt32(2); episode.Number = dr.GetInt32(3); if (setWatched) episode.Watched = Trackings.Contains(episode.EpisodeID); if (!(dr[4] is DBNull)) episode.Airdate = Extensions.GetUnixTimestamp(dr.GetInt32(4)); if (!(dr[5] is DBNull)) episode.Name = dr.GetString(5); if (!(dr[6] is DBNull)) episode.Description = dr.GetString(6); if (!(dr[7] is DBNull)) episode.Picture = dr.GetString(7); if (!(dr[8] is DBNull)) episode.URL = dr.GetString(8); episodes.Add(episode); } catch { } } return episodes; } } }