Ejemplo n.º 1
0
        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);
        }
Ejemplo n.º 2
0
        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);
        }