private void uiDownloadButton_Click(object sender, EventArgs e) { if (!OsirtHelper.IsOnFacebook(DownloadUrl)) { MessageBox.Show("The download URL does not appear to be a Facebook video URL.", "Invalid Facebook Video URL", MessageBoxButtons.OK, MessageBoxIcon.Warning); return; } uiDownloadProgressBar.Visible = true; uiCancelButton.Enabled = false; string videoUrl = DownloadUrl; string url; try { using (WebClient wc = new WebClient()) { wc.Headers.Add("user-agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.101 Safari/537.36"); //get page source from the url entered string source = wc.DownloadString(videoUrl); //simply parse the page source looking for simple tokens. int hdLoc = source.IndexOf("hd_src:"); int sdLoc = source.IndexOf(",sd_src:"); int length = sdLoc - hdLoc; url = source.Substring(hdLoc, length); //find everything between quotes, in this case the Url url = Regex.Match(url, "\"([^\"]*)\"").ToString().Replace("\"", ""); } using (WebClient downloader = new WebClient()) { //need to rethink the video file in cache, could have multiple videos saving there //need video recovery string facebookVideoLocation = Path.Combine(Constants.VideoCacheLocation, "temp_facebook_vid.mp4"); downloader.DownloadFileAsync(new Uri(url), facebookVideoLocation); downloader.DownloadProgressChanged += Downloader_DownloadProgressChanged; downloader.DownloadFileCompleted += Downloader_DownloadFileCompleted; } } catch { MessageBox.Show("Unable to download this video. Make sure a valid video URL is entered.", "Error downloading video", MessageBoxButtons.OK, MessageBoxIcon.Error); } }
void IContextMenuHandler.OnBeforeContextMenu(IWebBrowser browserControl, IBrowser browser, IFrame frame, IContextMenuParams parameters, IMenuModel model) { //Removing existing menu item model.Clear(); if (!string.IsNullOrEmpty(parameters.UnfilteredLinkUrl)) { model.AddItem((CefMenuCommand)26501, "Open link in new tab"); model.AddSeparator(); } if (parameters.TypeFlags.HasFlag(ContextMenuType.Media) && parameters.HasImageContents) { if (!UI.BrowserPanel.IsUsingTor) { if (OsirtHelper.HasJpegExtension(parameters.SourceUrl)) { model.AddItem((CefMenuCommand)ViewImageExifData, "View image EXIF data"); } model.AddItem((CefMenuCommand)MenuSaveImage, "Save image"); } model.AddItem((CefMenuCommand)CopyImgLocation, "Copy image location to clipboard"); model.AddItem((CefMenuCommand)ReverseImageSearch, "Reverse image search using TinEye"); model.AddSeparator(); // } if (OsirtHelper.IsOnYouTube(browserControl.Address)) { model.AddItem((CefMenuCommand)SaveYouTubeVideo, "Extract YouTube video"); } if (OsirtHelper.IsOnFacebook(browserControl.Address)) { model.AddItem((CefMenuCommand)ViewFacebookId, "Show Facebook profile ID"); } if (OsirtHelper.IsOnTwitter(browserControl.Address)) { model.AddItem((CefMenuCommand)ViewTwitterId, "Show Twitter profile ID"); } model.AddItem((CefMenuCommand)ViewSource, "View page source"); model.AddItem((CefMenuCommand)ExtractAllLinks, "Extract all links on page"); model.AddItem((CefMenuCommand)Bookmark, "Add page to bookmarks"); }
void IContextMenuHandler.OnBeforeContextMenu(IWebBrowser browserControl, IBrowser browser, IFrame frame, IContextMenuParams parameters, IMenuModel model) { //Removing existing menu item //model.Clear(); if (parameters.TypeFlags.HasFlag(ContextMenuType.Selection)) { model.AddItem((CefMenuCommand)SearchSelectedText, "Search selected text using Google"); model.AddItem((CefMenuCommand)SaveText, "Save selected text"); model.AddSeparator(); } if (!string.IsNullOrEmpty(parameters.UnfilteredLinkUrl)) { model.AddItem((CefMenuCommand)26501, "Open link in new tab"); model.AddSeparator(); } if (parameters.TypeFlags.HasFlag(ContextMenuType.Media) && parameters.HasImageContents) { if (!RuntimeSettings.IsUsingTor) { if (OsirtHelper.HasJpegExtension(parameters.SourceUrl)) { model.AddItem((CefMenuCommand)ViewImageExifData, "View image EXIF data"); } model.AddItem((CefMenuCommand)MenuSaveImage, "Save image"); } model.AddItem((CefMenuCommand)CopyImgLocation, "Copy image location to clipboard"); var sub = model.AddSubMenu((CefMenuCommand)ReverseImgSearchSubMenu, "Reverse image search tools"); sub.AddItem((CefMenuCommand)ReverseImageSearchTineye, "Reverse image search using TinEye"); //sub.AddItem((CefMenuCommand)ReverseImageSearchYandex, "Reverse image search using Yandex"); sub.AddItem((CefMenuCommand)ReverseImageSearchGoogle, "Reverse image search using Google"); model.AddSeparator(); // } if (OsirtHelper.IsOnYouTube(browserControl.Address)) { model.AddItem((CefMenuCommand)SaveYouTubeVideo, "Extract YouTube video"); } if (OsirtHelper.IsOnFacebook(browserControl.Address)) { model.AddItem((CefMenuCommand)ViewFacebookId, "Show Facebook profile ID"); } if (OsirtHelper.IsOnTwitter(browserControl.Address)) { model.AddItem((CefMenuCommand)ViewTwitterId, "Show Twitter profile ID"); } model.AddItem((CefMenuCommand)ViewSource, "View page source"); model.AddItem((CefMenuCommand)ExtractAllLinks, "Extract all links on page"); model.AddItem((CefMenuCommand)Bookmark, "Add page to bookmarks"); model.Remove(CefMenuCommand.ViewSource); model.Remove(CefMenuCommand.Print); model.Remove(CefMenuCommand.Undo); model.Remove(CefMenuCommand.Redo); model.Remove(CefMenuCommand.Forward); model.Remove(CefMenuCommand.Back); }