public bool PlayStart(ScrapedVideo video) { this.headerGroupVideoPlayer.ValuesPrimary.Heading = video.Title; this.currentPlayingVideo = video; UpdateFavouriteButton(DataService.Create().IsFavourite(this.currentPlayingVideo)); return PlayStart(video.PlayUrl); }
protected override void OnAddItem(ScrapedVideo video, bool select) { var found = false; LogManager.Log("Adding items to Veritcal gallery"); foreach (Control c in this.tableLayoutPanel.Controls) { var widget = c as WebViewWidget; if (widget != null) { if (widget.Video.Url == video.Url) { widget.SelectView(); found = true; } else widget.DeselectView(); } } if (!found) { var widget = AddItem(video); this.tableLayoutPanel.Controls.SetChildIndex(widget, 0); if (select) widget.SelectView(); } }
public override ScrapedVideo ScrapeVideoDetails(ScrapedVideo video) { var root = GotoUrl(video.Url); var flash = SelectItem(root, "#flash-player-embed"); if (flash == null) return video; var flashVars = HttpUtility.UrlDecode(ReadAttribute(SelectItem(root, "#flash-player-embed"), "flashvars")); var beg = flashVars.IndexOf("flv_url=") + 8; var end = flashVars.IndexOf("&",beg); video.PlayUrl = HttpUtility.UrlDecode(flashVars.Substring(beg, end - beg)); beg = root.InnerHtml.IndexOf("<script>videoPageWriteRelated(") + 30; end = root.InnerHtml.IndexOf(");</script>", beg); var obj = (JArray)JsonConvert.DeserializeObject(root.InnerHtml.Substring(beg, end - beg)); foreach (var item in obj) { foreach (var subItem in item) { if (subItem["u"] != null) { video.RelatedVideos.Add(new ScrapedVideo { Duration = TimeSpan.FromMinutes(Convert.ToInt32(Regex.Replace(subItem["d"].ToString(), "[^0-9.]", ""))), ImageUrl = subItem["i"].ToString(), Url = RootUrl + subItem["u"].ToString(), Title = subItem["t"].ToString(), }); } } } if (String.IsNullOrEmpty(video.PlayUrl)) throw new Exception("Unable to get video information"); video.FullyLoaded = true; return video; }
public void LoadVideo(ScrapedVideo video) { if (this.currentRequestedVideo == video && !video.FullyLoaded) return; Program.SetBusy(); this.videoPlayerWidget.PlayStop(); this.currentRequestedVideo = video; if (video.FullyLoaded) OnScrapVideoDetailsCompleted(video); else new ScraperService().ScrapVideosDetailsAsync(video, this); }
public void ScrapVideosDetailsAsync(ScrapedVideo video, IScraperServiceCallback callback) { ThreadPool.QueueUserWorkItem(delegate { try { callback.OnScrapVideoDetailsCompleted(new XVideoScraper().ScrapeVideoDetails(video)); } catch (Exception ex) { callback.OnScrapError(ex); } }); }
private WebViewWidget AddItem(ScrapedVideo video) { var widget = new WebViewWidget(video, Properties.Resources.TestHtml.Replace("{0}", video.Url).Replace("{1}", video.ImageUrl). Replace("{2}", video.Title).Replace("{3}", video.Duration.ToString())); widget.Anchor = AnchorStyles.Left | AnchorStyles.Right; widget.Width = this.Width; this.tableLayoutPanel.Controls.Add(widget); Application.DoEvents(); widget.ViewSelected += delegate(object sender, GalleryItemSelectedEventArgs e) { OnItemSelected(sender, e); }; return widget; }
public WebViewWidget(ScrapedVideo video, string html) : this() { this.SuspendLayout(); this.pictureBox.Visible = DataService.Create().IsFavourite(video); this.video = video; this.htmlPanel.Text = html; this.htmlPanel.AutoScroll = false; this.AutoScroll = false; this.htmlPanel.VerticalScroll.Enabled = false; this.htmlPanel.HorizontalScroll.Enabled = false; this.htmlPanel.VerticalScroll.Visible = false; this.htmlPanel.HorizontalScroll.Visible = false; this.ResumeLayout(); }
public override ScrapedVideo ScrapeVideoDetails(ScrapedVideo video) { var root = GotoUrl(video.Url); var flash = SelectItem(root, "#flash-player-embed"); if (flash == null) { return(video); } var flashVars = HttpUtility.UrlDecode(ReadAttribute(SelectItem(root, "#flash-player-embed"), "flashvars")); var beg = flashVars.IndexOf("flv_url=") + 8; var end = flashVars.IndexOf("&", beg); video.PlayUrl = HttpUtility.UrlDecode(flashVars.Substring(beg, end - beg)); beg = root.InnerHtml.IndexOf("<script>videoPageWriteRelated(") + 30; end = root.InnerHtml.IndexOf(");</script>", beg); var obj = (JArray)JsonConvert.DeserializeObject(root.InnerHtml.Substring(beg, end - beg)); foreach (var item in obj) { foreach (var subItem in item) { if (subItem["u"] != null) { video.RelatedVideos.Add(new ScrapedVideo { Duration = TimeSpan.FromMinutes(Convert.ToInt32(Regex.Replace(subItem["d"].ToString(), "[^0-9.]", ""))), ImageUrl = subItem["i"].ToString(), Url = RootUrl + subItem["u"].ToString(), Title = subItem["t"].ToString(), }); } } } if (String.IsNullOrEmpty(video.PlayUrl)) { throw new Exception("Unable to get video information"); } video.FullyLoaded = true; return(video); }
private List <ScrapedVideo> ScrapThumbnailVideos(HtmlNode root) { var videos = new List <ScrapedVideo>(); var items = SelectItems(root, ".thumbBlock").ToList(); foreach (var item in items) { var video = new ScrapedVideo(); var elem = SelectItem(item, ".thumb a"); if (elem == null) { elem = SelectItem(item, "script"); elem.InnerHtml = elem.InnerHtml.Replace("castDisplayRandomThumb('", "").Replace("');</script>", ""); elem = SelectItem(item, ".thumb a"); } if (elem == null) { Debug.Assert(true); } if (elem != null) { video.Url = RootUrl + ReadAttribute(elem, "href"); video.ImageUrl = ReadAttribute(SelectItem(item, ".thumb a img"), "src"); video.Title = ReadText(SelectItem(item, ".thumbInside p a")); var duration = ReadText(SelectItem(item, ".duration")); var mc = Regex.Matches(duration, @"\d+"); var hour = duration.Contains("h") ? TimeSpan.FromHours(Convert.ToInt32(mc[0].Value)) : new TimeSpan(); var min = duration.Contains("min") ? TimeSpan.FromMinutes(Convert.ToInt32( duration.Contains("h") ? mc[1].Value : mc[0].Value)) : new TimeSpan(); var sec = duration.Contains("sec") ? TimeSpan.FromSeconds(Convert.ToInt32(mc[mc.Count - 1].Value)) : new TimeSpan(); video.Duration = hour + min + sec; videos.Add(video); } } return(videos); }
public abstract ScrapedVideo ScrapeVideoDetails(ScrapedVideo video);
public void AddItem(ScrapedVideo video, bool select) { OnAddItem(video, select); }
protected virtual void OnAddItem(ScrapedVideo video, bool select) { }
public GalleryItemSelectedEventArgs(ScrapedVideo video) { Video = video; }
public ScrapedVideo GetPreviousVideo(ScrapedVideo current) { int index = -1; for (var i = 0; i < WidgetContainer.Controls.Count; i++) { var v = WidgetContainer.Controls[i] as WebViewWidget ; if (v != null && v.Video == current) { index = i; break; } } if (GetWidgetCount() > 0) { if (index == -1 || index == 0) return ((WebViewWidget)WidgetContainer.Controls[GetWidgetLastIndex()]).Video; else return ((WebViewWidget)WidgetContainer.Controls[GetPreviousWidget(index)]).Video; } return null; }
public void OnScrapVideoDetailsCompleted(ScrapedVideo video) { }
public void PlayVideo(ScrapedVideo video) { ChangeView(this.viewerWindow); this.viewerWindow.LoadVideo(video); }
private List<ScrapedVideo> ScrapThumbnailVideos(HtmlNode root) { var videos = new List<ScrapedVideo>(); var items = SelectItems(root, ".thumbBlock").ToList(); foreach (var item in items) { var video = new ScrapedVideo(); var elem = SelectItem(item, ".thumb a"); if (elem == null) { elem = SelectItem(item, "script"); elem.InnerHtml = elem.InnerHtml.Replace("castDisplayRandomThumb('", "").Replace("');</script>", ""); elem = SelectItem(item, ".thumb a"); } if (elem == null) Debug.Assert(true); if (elem != null) { video.Url = RootUrl + ReadAttribute(elem, "href"); video.ImageUrl = ReadAttribute(SelectItem(item, ".thumb a img"), "src"); video.Title = ReadText(SelectItem(item, ".thumbInside p a")); var duration = ReadText(SelectItem(item, ".duration")); var mc = Regex.Matches(duration, @"\d+"); var hour = duration.Contains("h") ? TimeSpan.FromHours(Convert.ToInt32(mc[0].Value)) : new TimeSpan(); var min = duration.Contains("min") ? TimeSpan.FromMinutes(Convert.ToInt32( duration.Contains("h") ? mc[1].Value : mc[0].Value)) : new TimeSpan(); var sec = duration.Contains("sec") ? TimeSpan.FromSeconds(Convert.ToInt32(mc[mc.Count-1].Value)) : new TimeSpan(); video.Duration = hour + min + sec; videos.Add(video); } } return videos; }
public void OnScrapVideoDetailsCompleted(ScrapedVideo video) { this.InvokeEx(() => { if (this.currentRequestedVideo == video) { var played = this.videoPlayerWidget.PlayStart(video); if (played) { this.verticalSingleColumnGalleryWidget1.AddItem(video, true); this.relatedVideoGalleryWidget.ClearItems(); this.relatedVideoGalleryWidget.AddItems(new ScrapedPage { Videos = video.RelatedVideos }); } else { this.currentRequestedVideo = null; } } Program.SetIdle(); }); }
public ScrapedVideo ScrapVideoDetails(ScrapedVideo video) { var scraper = new XVideoScraper(); return scraper.ScrapeVideoDetails(video); }