// retry one row.The userstate was removed from the retry queue before that call private bool RetryRow(UserState us) { if (us != null) { Trace.Indent(); Trace.TraceInformation("Retrying a row, current position is: " + us.CurrentPosition + "for uri: " + us.ResumeUri); Trace.Unindent(); if (us.CurrentPosition > 0 && us.ResumeUri != null) { string contentType = MediaFileSource.GetContentTypeForFileName(us.Row.Cells[COLUMNINDEX_FILENAME].Value.ToString()); MediaFileSource mfs = new MediaFileSource(us.Row.Cells[COLUMNINDEX_FILENAME].Value.ToString(), contentType); Stream s = mfs.Data; s.Seek(us.CurrentPosition, SeekOrigin.Begin); lock (this.flag) { this.queue.Add(us); } us.Row.Cells[COLUMNINDEX_STATUS].Value = "Retrying (" + us.RetryCounter + ") - Last error was: " + us.Error; ru.ResumeAsync(this.youTubeAuthenticator, us.ResumeUri, us.HttpVerb, s, contentType, us); return(true); } // else treat this as a new one, a resume from null return(InsertVideo(us.Row, us.RetryCounter + 1)); } return(false); }
/// <summary> /// insert a new video. /// </summary> /// <param name="row"></param> /// <param name="retryCounter"></param> /// <returns></returns> private bool InsertVideo(DataGridViewRow row, int retryCounter) { Trace.TraceInformation("Entering InsertVideo: starting a new upload"); Video v = new Video(); v.Title = row.Cells[0].Value.ToString(); v.Description = row.Cells[1].Value.ToString(); v.Keywords = row.Cells[2].Value.ToString(); v.Tags.Add(new MediaCategory(row.Cells[3].Value.ToString())); v.Private = row.Cells[4].Value.ToString().ToLower() == "true"; string contentType = MediaFileSource.GetContentTypeForFileName(row.Cells[COLUMNINDEX_FILENAME].Value.ToString()); v.MediaSource = new MediaFileSource(row.Cells[COLUMNINDEX_FILENAME].Value.ToString(), contentType); // add the upload uri to it AtomLink link = new AtomLink("http://uploads.gdata.youtube.com/resumable/feeds/api/users/" + this.youtubeAccount + "/uploads"); link.Rel = ResumableUploader.CreateMediaRelation; v.YouTubeEntry.Links.Add(link); UserState u = new UserState(row); u.RetryCounter = retryCounter; lock (this.flag) { this.queue.Add(u); } ru.InsertAsync(this.youTubeAuthenticator, v.YouTubeEntry, u); row.Cells[COLUMNINDEX_STATUS].Value = "Queued up..."; row.Cells[COLUMNINDEX_STATUS].Tag = u; return(true); }
private void csvDisplayGrid_CellMouseEnter(object sender, DataGridViewCellEventArgs e) { if (e.RowIndex >= 0 && e.ColumnIndex >= 0) { DataGridViewCell cell = this.csvDisplayGrid.Rows[e.RowIndex].Cells[e.ColumnIndex]; if (e.ColumnIndex == COLUMNINDEX_FILENAME) { string contentType = MediaFileSource.GetContentTypeForFileName(cell.Value.ToString()); cell.ToolTipText = "We assume this file is of type: " + contentType; } } }
public void Test() { VideoPlayer2 mediaTransformer = new VideoPlayer2(); OpenVideoArgs openArgs = new OpenVideoArgs("d:\\b (1).mp4"); mediaTransformer.enableLibAVLogging(MediaTransformer.LogLevel.LOG_LEVEL_DEBUG); mediaTransformer.setLogCallback(logCallback); MediaFileSource video = new MediaFileSource(openArgs, "input", mediaTransformer.getFilterGraph(), 0, Double.MaxValue, 1); mediaTransformer.addInput(video); MediaFileSink output = new MediaFileSink("d:\\masseffect.mp4", "output", mediaTransformer.getFilterGraph(), "libx264", 1280, 720, 30, null, 48000, 2, null);//"libvo_aacenc",48000,2); mediaTransformer.addOutput(output); mediaTransformer.start(); }
public void UploadPhotoTo(string albumId, string filename) { var service = new PicasaService("GPhotoSync"); service.SetAuthenticationToken(_credentials.AccessToken); var query = new PhotoQuery(PicasaQuery.CreatePicasaUri(_credentials.User, albumId)); var feed = service.Query(query); var media = new MediaFileSource(filename, MimeTypes.GetMimeType(Path.GetExtension(filename))); var photo = new PhotoEntry(); photo.Title = new AtomTextConstruct { Text = Path.GetFileNameWithoutExtension(filename) }; photo.MediaSource = media; service.Insert(feed, photo); }
public void Test() { VideoPlayer2 mediaTransformer = new VideoPlayer2(); OpenVideoArgs openArgs = new OpenVideoArgs("d:\\b (1).mp4"); mediaTransformer.enableLibAVLogging(MediaTransformer.LogLevel.LOG_LEVEL_DEBUG); mediaTransformer.setLogCallback(logCallback); MediaFileSource video = new MediaFileSource(openArgs, "input", mediaTransformer.getFilterGraph(), 0, Double.MaxValue, 1); mediaTransformer.addInput(video); MediaFileSink output = new MediaFileSink("d:\\masseffect.mp4", "output", mediaTransformer.getFilterGraph(), "libx264", 1280, 720, 30, null, 48000, 2,null);//"libvo_aacenc",48000,2); mediaTransformer.addOutput(output); mediaTransformer.start(); }
private static void Upload() { UserState us = UploadFiles.Dequeue(); Console.WriteLine("youtube: upload " + us.AbsoluteFilePath); var settings = new YouTubeRequestSettings("iSpy", MainForm.Conf.YouTubeKey, MainForm.Conf.YouTubeUsername, MainForm.Conf.YouTubePassword); var request = new YouTubeRequest(settings); var v = new Google.YouTube.Video { Title = "iSpy: " + us.CameraData.name, Description = MainForm.Website+": free open source surveillance software: " + us.CameraData.description }; if (us.CameraData == null) { if (UploadFiles.Count > 0) Upload(); return; } v.Keywords = us.CameraData.settings.youtube.tags; if (v.Keywords.Trim() == "") v.Keywords = "ispyconnect"; //must specify at least one keyword v.Tags.Add(new MediaCategory(us.CameraData.settings.youtube.category)); v.YouTubeEntry.Private = !us.Ispublic; v.Media.Categories.Add(new MediaCategory(us.CameraData.settings.youtube.category)); v.Private = !us.Ispublic; v.Author = "iSpyConnect.com - Camera Security Software (open source)"; if (us.EmailOnComplete != "") v.Private = false; string contentType = MediaFileSource.GetContentTypeForFileName(us.AbsoluteFilePath); v.YouTubeEntry.MediaSource = new MediaFileSource(us.AbsoluteFilePath, contentType); // add the upload uri to it //var link = // new AtomLink("http://uploads.gdata.youtube.com/resumable/feeds/api/users/" + // MainForm.Conf.YouTubeAccount + "/uploads") {Rel = ResumableUploader.CreateMediaRelation}; //v.YouTubeEntry.Links.Add(link); bool success = false; ((GDataRequestFactory)request.Service.RequestFactory).Timeout = 60 * 60 * 1000; Google.YouTube.Video vCreated = null; try { vCreated = request.Upload(v); success = true; } catch (GDataRequestException ex1) { MainForm.LogErrorToFile("YouTube Uploader: " + ex1.ResponseString+" ("+ex1.Message+")"); if (ex1.ResponseString=="NoLinkedYouTubeAccount") { MainForm.LogMessageToFile( "This is because the Google account you connected has not been linked to YouTube yet. The simplest way to fix it is to simply create a YouTube channel for that account: http://www.youtube.com/create_channel"); } } catch (Exception ex) { MainForm.LogExceptionToFile(ex); } if (success) { Console.WriteLine("Uploaded: http://www.youtube.com/watch?v=" + vCreated.VideoId); string msg = "YouTube video uploaded: <a href=\"http://www.youtube.com/watch?v=" + vCreated.VideoId + "\">" + vCreated.VideoId + "</a>"; if (vCreated.Private) msg += " (private)"; else msg += " (public)"; MainForm.LogMessageToFile(msg); if (us.EmailOnComplete != "" && us.Ispublic) { SendYouTubeMails(us.EmailOnComplete, us.Message, vCreated.VideoId); } //check against most recent uploaded videos MainForm.Conf.UploadedVideos += "," + us.AbsoluteFilePath + "|" + vCreated.VideoId; if (MainForm.Conf.UploadedVideos.Length > 10000) MainForm.Conf.UploadedVideos = ""; } if (UploadFiles.Count>0) Upload(); }
public void CreateNewNote() { string gmailUsername; string syncProfile; GoogleAPITests.LoadSettings(out gmailUsername, out syncProfile); DocumentsRequest service; var scopes = new List <string>(); //Contacts-Scope scopes.Add("https://www.google.com/m8/feeds"); //Notes-Scope scopes.Add("https://docs.google.com/feeds/"); //scopes.Add("https://docs.googleusercontent.com/"); //scopes.Add("https://spreadsheets.google.com/feeds/"); //Calendar-Scope //scopes.Add("https://www.googleapis.com/auth/calendar"); scopes.Add(CalendarService.Scope.Calendar); UserCredential credential; byte[] jsonSecrets = Properties.Resources.client_secrets; using (var stream = new MemoryStream(jsonSecrets)) { FileDataStore fDS = new FileDataStore(Logger.AuthFolder, true); GoogleClientSecrets clientSecrets = GoogleClientSecrets.Load(stream); credential = GCSMOAuth2WebAuthorizationBroker.AuthorizeAsync( clientSecrets.Secrets, scopes.ToArray(), gmailUsername, CancellationToken.None, fDS). Result; OAuth2Parameters parameters = new OAuth2Parameters { ClientId = clientSecrets.Secrets.ClientId, ClientSecret = clientSecrets.Secrets.ClientSecret, // Note: AccessToken is valid only for 60 minutes AccessToken = credential.Token.AccessToken, RefreshToken = credential.Token.RefreshToken }; RequestSettings settings = new RequestSettings("GoContactSyncMod", parameters); service = new DocumentsRequest(settings); //Instantiate an Authenticator object according to your authentication, to use ResumableUploader _authenticator = new OAuth2Authenticator("GCSM Unit Tests", parameters); } //Delete previously created test note. DeleteTestNote(service); Document newEntry = new Document(); newEntry.Type = Document.DocumentType.Document; newEntry.Title = "AN_OUTLOOK_TEST_NOTE"; string file = NotePropertiesUtils.CreateNoteFile("AN_OUTLOOK_TEST_NOTE", "This is just a test note to test GoContactSyncMod", null); newEntry.MediaSource = new MediaFileSource(file, MediaFileSource.GetContentTypeForFileName(file)); #region normal flow, only working to create documents without content (metadata only), e.g. for Notes folder Document createdEntry = Synchronizer.SaveGoogleNote(null, newEntry, service); Assert.IsNotNull(createdEntry.DocumentEntry.Id.Uri); Logger.Log("Created Google note", EventType.Information); //Wait 5 seconds to give the testcase the chance to finish System.Threading.Thread.Sleep(5000); //delete test note DeleteTestNote(service); #endregion #region workaround flow to use UploadDocument, not needed anymore because of new approach to use ResumableUploader //Google.GData.Documents.DocumentEntry createdEntry2 = service.Service.UploadDocument(file, newEntry.Title); //Assert.IsNotNull(createdEntry2.Id.Uri); ////delete test note //DeleteTestNote(service); #endregion #region New approach how to update an existing document: https://developers.google.com/google-apps/documents-list/#updatingchanging_documents_and_files //Instantiate the ResumableUploader component. ResumableUploader uploader = new ResumableUploader(); uploader.AsyncOperationCompleted += new AsyncOperationCompletedEventHandler(OnGoogleNoteCreated); Synchronizer.CreateGoogleNote(newEntry, file, service, uploader, _authenticator); #endregion //Wait 5 seconds to give the testcase the chance to finish the Async events System.Threading.Thread.Sleep(5000); DeleteTestNote(service); }
private static void Upload(object state) { if (UploadList.Count == 0) { _uploading = false; return; } UserState us; try { var l = UploadList.ToList(); us = l[0];//could have been cleared by Authorise l.RemoveAt(0); UploadList = l.ToList(); } catch { _uploading = false; return; } var settings = new YouTubeRequestSettings("iSpy", MainForm.Conf.YouTubeKey, MainForm.Conf.YouTubeUsername, MainForm.Conf.YouTubePassword); var request = new YouTubeRequest(settings); var v = new Google.YouTube.Video { Title = "iSpy: " + us.CameraData.name, Description = MainForm.Website + ": free open source surveillance software: " + us.CameraData.description }; if (us.CameraData == null) { if (UploadList.Count > 0) { Upload(null); } return; } v.Keywords = us.CameraData.settings.youtube.tags; if (v.Keywords.Trim() == "") { v.Keywords = "ispyconnect"; //must specify at least one keyword } v.Tags.Add(new MediaCategory(us.CameraData.settings.youtube.category)); v.YouTubeEntry.Private = !us.CameraData.settings.youtube.@public; v.Media.Categories.Add(new MediaCategory(us.CameraData.settings.youtube.category)); v.Private = !us.CameraData.settings.youtube.@public; v.Author = "iSpyConnect.com - Camera Security Software (open source)"; string contentType = MediaFileSource.GetContentTypeForFileName(us.Filename); v.YouTubeEntry.MediaSource = new MediaFileSource(us.Filename, contentType); // add the upload uri to it //var link = // new AtomLink("http://uploads.gdata.youtube.com/resumable/feeds/api/users/" + // MainForm.Conf.YouTubeAccount + "/uploads") {Rel = ResumableUploader.CreateMediaRelation}; //v.YouTubeEntry.Links.Add(link); bool success = false; ((GDataRequestFactory)request.Service.RequestFactory).Timeout = 60 * 60 * 1000; Google.YouTube.Video vCreated = null; try { vCreated = request.Upload(v); success = true; } catch (GDataRequestException ex1) { MainForm.LogErrorToFile("YouTube Uploader: " + ex1.ResponseString + " (" + ex1.Message + ")"); if (ex1.ResponseString == "NoLinkedYouTubeAccount") { MainForm.LogMessageToFile( "This is because the Google account you connected has not been linked to YouTube yet. The simplest way to fix it is to simply create a YouTube channel for that account: http://www.youtube.com/create_channel"); } } catch (Exception ex) { MainForm.LogExceptionToFile(ex); } if (success) { string msg = "YouTube video uploaded: <a href=\"http://www.youtube.com/watch?v=" + vCreated.VideoId + "\">" + vCreated.VideoId + "</a>"; if (vCreated.Private) { msg += " (private)"; } else { msg += " (public)"; } MainForm.LogMessageToFile(msg); MainForm.Conf.UploadedVideos += "," + us.Filename + "|" + vCreated.VideoId; if (MainForm.Conf.UploadedVideos.Length > 1000) { MainForm.Conf.UploadedVideos = ""; } } Upload(null); }