public async Task <string> DownloadMedia(InstaMedia media, string outputFolder) { using (var client = new WebClient()) { Directory.CreateDirectory(outputFolder); var image = media.GetImages().FirstOrDefault(); if (image != null) { var outputFilePath = Path.Combine(outputFolder, $"{media.Code}.jpg"); client.DownloadFile(image.Uri, outputFilePath); return(outputFilePath); } } return(null); }
public async Task <IReadOnlyList <IResult <InstaMedia> > > UploadMedia(InstaMedia media, string outputFolder) { var images = new List <InstaImageUpload>(); var albumImages = new List <InstaImageUpload>(); // var videos = new List<InstaVideoUpload>(); var files = new List <string>(); using (var client = new WebClient()) { Directory.CreateDirectory(outputFolder); foreach (var image in media.GetImages()) { var outputFilePath = Path.Combine(outputFolder, $"IMG-{Guid.NewGuid()}.jpg"); client.DownloadFile(image.Uri, outputFilePath); files.Add(outputFilePath); images.Add(image.AsUpload(media, outputFilePath)); } foreach (var image in media.GetAlbumImages()) { var outputFilePath = Path.Combine(outputFolder, $"IMG-{Guid.NewGuid()}.jpg"); client.DownloadFile(image.Uri, outputFilePath); files.Add(outputFilePath); albumImages.Add(image.AsUpload(media, outputFilePath)); } /* * foreach (var video in media.GetOriginalVideos()) * { * var outputFilePath = Path.Combine(outputFolder, $"VID-{Guid.NewGuid()}.mp4"); * client.DownloadFile(video.Uri, outputFilePath); * files.Add(outputFilePath); * videos.Add(video.AsUpload(outputFilePath)); * } */ } var results = new List <IResult <InstaMedia> >(); var caption = media.Caption?.Text; var location = media.Location; foreach (var image in images) { try { results.Add(await this.Instagram.MediaProcessor.UploadPhotoAsync( this.UploadProgress, image, caption, location)); } catch (Exception e) { this.logger.LogTrace(e.Message); } } if (albumImages.Any()) { try { results.Add(await this.Instagram.MediaProcessor.UploadAlbumAsync( albumImages.ToArray(), null, caption, location)); } catch (Exception e) { this.logger.LogTrace(e.Message); } } /*foreach (var video in videos) * { * try * { * results.Add(await this.Instagram.MediaProcessor.UploadVideoAsync( * this.UploadProgress, * video, * caption, * location)); * } * catch (Exception e) * { * this.logger.LogTrace(e.Message); * } * }*/ foreach (var file in files) { if (File.Exists(file)) { File.Delete(file); } } return(results); }