Download MovieFinder.Scraper/ImageScrapperService.cs from niobures/VideoSearch: direct link, hf CLI and curl.
- Browser
- Download file 3.12 kB
-
https://huggingface.co/niobures/VideoSearch/resolve/main/MovieFinder.Scraper/ImageScrapperService.cs
- Command line
-
hf download hf://niobures/VideoSearch/MovieFinder.Scraper/ImageScrapperService.cs
-
curl -L -o ImageScrapperService.cs https://huggingface.co/niobures/VideoSearch/resolve/main/MovieFinder.Scraper/ImageScrapperService.cs
3.12 kB
| using System; | |
| using System.Collections.Generic; | |
| using System.Linq; | |
| using System.Text; | |
| using MovieFinder.Data; | |
| using System.Net; | |
| using System.IO; | |
| namespace MovieFinder.Scraper | |
| { | |
| public class ImageScrapperService | |
| { | |
| public void Run(string imagePath) | |
| { | |
| using (var db = new MovieFinderEntities()) | |
| { | |
| while (!IsCancelled) | |
| { | |
| //var movies = db.Movies | |
| // .Where(x => x.ImageUrl != null && x.ImageLocalUrl == null) | |
| // .OrderByDescending(x => x.ID) | |
| // .Take(100).ToList(); | |
| //if (movies.Count == 0) | |
| // return; | |
| foreach (var m in db.Movies | |
| .Where(x => x.ImageUrl != null && x.ImageLocalUrl == null) | |
| .OrderByDescending(x => x.ID)) | |
| { | |
| if (IsCancelled) | |
| return; | |
| if(CopyImageToLocal(m, imagePath)) | |
| db.SaveChanges(); | |
| } | |
| } | |
| } | |
| } | |
| public bool CopyImageToLocal(Movie movie, string imagePath) | |
| { | |
| using (var client = new WebClient()) | |
| { | |
| try | |
| { | |
| var downloadPath = Path.Combine(imagePath, movie.ReleaseDate.Year.ToString()); | |
| if (!Directory.Exists(downloadPath)) | |
| Directory.CreateDirectory(downloadPath); | |
| downloadPath = Path.Combine(downloadPath, movie.UniqueID); | |
| var fileBytes = client.DownloadData(movie.ImageUrl); | |
| var fileType = client.ResponseHeaders[HttpResponseHeader.ContentType]; | |
| if (fileType != null) | |
| { | |
| switch (fileType) | |
| { | |
| case "image/gif": | |
| downloadPath += ".gif"; | |
| break; | |
| case "image/png": | |
| downloadPath += ".png"; | |
| break; | |
| default: | |
| downloadPath += ".jpg"; | |
| break; | |
| } | |
| File.WriteAllBytes(downloadPath, fileBytes); | |
| } | |
| else | |
| { | |
| } | |
| movie.ImageLocalUrl = downloadPath.Split(new string[] { imagePath }, StringSplitOptions.RemoveEmptyEntries)[0]; | |
| return true; | |
| } | |
| catch (Exception ex) | |
| { | |
| File.AppendAllText("log.txt", String.Format("{0}{1}", ex.ToString(), Environment.NewLine)); | |
| } | |
| } | |
| return false; | |
| } | |
| public bool IsCancelled { get; set; } | |
| } | |
| } | |