Beispiel #1
0
        private async Task MainAsync()
        {
            Console.WriteLine("アイドルの一覧をダウンロードしています。");
            var idols = await Idol.DownloadIdolsAsync();

            Console.WriteLine("アイドルの一覧を保存しています。");
            var ic = await SaveIdolsAsync(idols);

            await Task.Delay(Wait);

            if (ic > 0 || _ForceUpdateImages)
            {
                var d = new HashSet <Tuple <string, string> >();
                for (var i = 0; i < idols.Count; i++)
                {
                    var idol = idols[i];

                    Console.WriteLine("[{0}/{1}]{2}の画像一覧をダウンロードしています。", i + 1, idols.Count, idol.Name);
                    var imgs = await idol.GetIdolImagesAsync(errorHandler : (n, v) =>
                    {
                        var t = Tuple.Create(n, v);
                        if (d.Add(t))
                        {
                            Console.WriteLine("不明な{0}:{1}", n, v);
                        }
                    });

                    Console.WriteLine("[{0}/{1}]{2}の画像一覧を保存しています。", i + 1, idols.Count, idol.Name);
                    await SaveIdolImagesAsync(imgs);

                    await Task.Delay(Wait);
                }
            }
            // TODO:nullのデータを消してリトライ

            var types = new[] {
                IdolImageDataType.Framed,
                IdolImageDataType.Frameless,
                IdolImageDataType.Quest,
                IdolImageDataType.LS,
                IdolImageDataType.XS
            };

            var tc = await GetUnaquiredImageCountAsync(types);

            var dc = 0;

            for (var img = await GetUnaquiredImageAsync(types); img != null; img = await GetUnaquiredImageAsync(types))
            {
                foreach (var t in types)
                {
                    if (await AnyImageDataAsync(img.Hash, t))
                    {
                        continue;
                    }
                    dc++;

                    Console.WriteLine("[{0}/{1}]{2}の{3}画像をダウンロードしています。", dc, tc, img.Headline, t);
                    var d = await GetImageDataAsync(img.Hash, t);

                    if (d != null && d.Length > 2 && d[0] == 0xff && d[1] == 0xd8)
                    {
                        Console.WriteLine("[{0}/{1}]{2}の{3}画像を保存しています。", dc, tc, img.Headline, t);
                        await InsertImageDataAsync(img.Hash, t, d);
                    }
                    await Task.Delay(Wait);
                }
            }
        }