public UsersTest() { _photoListWithOneUser = Enumerable.Range(0, 5) .Select(offset => { var meta = new VrcMetaData(); meta.Users.Add(new KoyashiroKohaku.VrcMetaTool.User($"{(char)('a' + offset)}")); return(new Photo($"file{offset}.png") { MetaData = meta }); }); _photoListWithManyUsers = Enumerable.Range(0, 5) .Select(offset => { var meta = new VrcMetaData(); foreach (var userOffset in Enumerable.Range(0, 5)) { meta.Users.Add(new KoyashiroKohaku.VrcMetaTool.User($"{(char)('a' + userOffset)}")); } return(new Photo($"file{offset}.png") { MetaData = meta }); }); _photoListForAlphabet = new int[] { 0, 3, 1, 2, 4 } // 各写真のユーザーの文字offset .Select(i => { var meta = new VrcMetaData { World = "worldName" }; meta.Users.Add( new KoyashiroKohaku.VrcMetaTool.User($"{(char)('a' + i)}")); return(new Photo("hoge.png") { MetaData = meta }); }); _photoListForCount = new int[] { 3, 5, 1, 4, 2 } // 各写真のユーザー数 .Select(i => { var meta = new VrcMetaData { World = "worldName" }; meta.Users.AddRange( Enumerable.Range(0, i) .Select(ii => new KoyashiroKohaku.VrcMetaTool.User($"{(char)('a' + i)}"))); return(new Photo("hoge.png") { MetaData = meta }); }); }
// TODO: 命名をどうにかする private void ImageProcessing(string filePath, VrcMetaData meta, SearchResult searchResult, Action <string, VrcMetaData> imageProcessFunction) { imageProcessFunction(filePath, meta); AppCache.Instance.DeleteCacheFile(filePath); //TODO: ここでサムネイルの読み直しをおこなう Image.Value = ImageHelper.LoadBitmapImage(filePath); searchResult.ResearchCommand.Execute(); }
public static void FilpHorizontalAndSave(string filePath, VrcMetaData metaData) { using var image = FlipHorizontal(LoadImage(filePath)); var buffer = Bitmap2Bytes(image); if (!(metaData is null)) { buffer = VrcMetaDataWriter.Write(buffer, metaData); } SaveImage(buffer, filePath); }
public static void Rotate180AndSave(string filePath, VrcMetaData metaData) { using var image = Rotate180(LoadImage(filePath)); var buffer = Bitmap2Bytes(image); if (!(metaData is null)) { buffer = VrcMetaDataWriter.Write(buffer, metaData); } SaveImage(buffer, filePath); }
public static VrcMetaData GetVrcMetaData(string filePath) { //return new VrcMetaData(); if (!VrcMetaDataReader.TryRead(filePath, out VrcMetaData meta)) { meta = new VrcMetaData { Date = GetDateTimeFromPhotoName(filePath) }; } return(meta); }
public List <(string filePath, VrcMetaData vrcMetaData)> GetVrcMetaDataIfExists(IEnumerable <string> filePaths) { using (asyncLock.Lock()) { var photos = Photos .Select(p => new { p.FilePath, p.World, p.Date, p.Photographer, p.PhotoUsers, }) .Where(p => filePaths.Contains(p.FilePath)) .ToList(); var results = new List <(string filePath, VrcMetaData vrcMetaData)>(); foreach (var photo in photos) { var filePath = photo.FilePath; var vrcMetaData = new VrcMetaData { World = photo.World?.WorldName, Date = photo.Date, Photographer = photo.Photographer?.UserName }; foreach (var(userName, twitterScreenName) in photo.PhotoUsers.Select(pu => (pu.User.UserName, pu.User.TwitterScreenName))) { var user = new KoyashiroKohaku.VrcMetaTool.User(userName) { TwitterScreenName = twitterScreenName }; vrcMetaData.Users.Add(user); } results.Add((filePath, vrcMetaData)); } return(results); } }
public SearchResultUserNameTest() { _photoList = new int[] { 3, 2, 5, 10 } // 各人が含まれる写真の数 .SelectMany((i, offset) => { var meta = new VrcMetaData { World = "worldName" }; meta.Users.Add( new KoyashiroKohaku.VrcMetaTool.User($"{(char)('a' + offset)}")); return(Enumerable.Range(0, i) .Select(_ => new Photo("hoge.png") { MetaData = meta, })); }); }
public SearchResultWorldNameTest() { _photoList = new int[] { 3, 2, 5, 10 } // 各ワールドが含まれる写真の数 .SelectMany((i, offset) => Enumerable.Range(0, i) .Select(_ => { var meta = new VrcMetaData { World = $"{(char)('a' + offset)}" }; // ワールド検索だけどUserがnullだと自動的に検索から除外されてしまう meta.Users.Add(new KoyashiroKohaku.VrcMetaTool.User("userName")); return(new Photo("hoge.png") { MetaData = meta }); })); }
public async Task <List <(string filePath, VrcMetaData vrcMetaData)> > GetVrcMetaDataIfExistsAsync(IEnumerable <string> filePaths) { var photos = await Photos .Select(p => new { p.FilePath, p.World, p.Date, p.Photographer, p.PhotoUsers }) .ToListAsync() .ConfigureAwait(true); var results = new List <(string filePath, VrcMetaData vrcMetaData)>(); foreach (var photo in photos) { var filePath = photo.FilePath; var vrcMetaData = new VrcMetaData { World = photo.World?.WorldName, Date = photo.Date, Photographer = photo.Photographer?.UserName }; foreach (var(userName, twitterScreenName) in photo.PhotoUsers.Select(pu => (pu.User.UserName, pu.User.TwitterScreenName))) { var user = new KoyashiroKohaku.VrcMetaTool.User(userName) { TwitterScreenName = twitterScreenName }; vrcMetaData.Users.Add(user); } results.Add((filePath, vrcMetaData)); } return(results); }
public List <(string filePath, VrcMetaData vrcMetaData)> GetVrcMetaDataIfExists(IEnumerable <string> filePaths) { return(filePaths .Select((filePath, offset) => { var meta = new VrcMetaData { Photographer = $"user{offset}", Date = DateTime.Now.AddDays(-offset), World = $"world{offset}" }; meta.Users.AddRange( Enumerable.Range(0, offset + 1) .Select(i => new User($"user{i}") { TwitterScreenName = "@user{i}" })); return (filePath, meta); }) .ToList()); }
public Task InsertAsync(string filePath, VrcMetaData metaData, CancellationToken cancelToken) { return(Task.Delay(100)); }
public Task InsertAsync(string filePath, VrcMetaData metaData, CancellationToken cancelToken) { return(Task.Run(async() => { var photo = new Photo { FilePath = filePath }; photo.Date = metaData.Date; using (await asyncLock.LockAsync()) { if (cancelToken.IsCancellationRequested) { return; } if (metaData.Photographer != null) { if (!ExistsUserByUserName(metaData.Photographer, out User user)) { user = CreateUser(metaData.Photographer); } photo.Photographer = user; } if (metaData.World != null) { if (!ExistsWorldByWorldName(metaData.World, out World world)) { world = CreateWorld(metaData.World); } photo.World = world; } if (metaData.Users != null && metaData.Users.Any()) { foreach (var metaUser in metaData.Users) { if (!ExistsUserByUserName(metaUser.UserName, out User user)) { user = CreateUser(metaUser.UserName); } var photoUser = CreatePhotoUser(photo, user); photo.PhotoUsers.Add(photoUser); } } _context.Photos.Add(photo); count++; if (count >= 100) { _context.SaveChanges(); count = 0; } } }, cancelToken)); }