Skip to content

Commit 396e13f

Browse files
committed
Clean up Xkcd data
1 parent 487ba2c commit 396e13f

7 files changed

Lines changed: 10537 additions & 10540 deletions

File tree

ExampleDataApis.Tests/ExampleDataApis.Tests.csproj

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,12 @@
2222
<Content Include="xkcd-metadata.jsonl">
2323
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
2424
</Content>
25+
<None Remove="xkcd-dimensions.json" />
26+
<Content Include="xkcd-dimensions.json">
27+
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
28+
<CopyToPublishDirectory>PreserveNewest</CopyToPublishDirectory>
29+
</Content>
30+
2531
</ItemGroup>
2632

2733
</Project>

ExampleDataApis.Tests/UnitTest.cs

Lines changed: 24 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -49,39 +49,36 @@ public void Extract_Xkcd_Image_Dimensions()
4949
.Where(x => !x.IsNullOrEmpty())
5050
.Select(JsonSerializer.DeserializeFromString<XkcdComic>)
5151
.ToList();
52+
53+
var existingDimensions = "xkcd-dimensions.json"
54+
.ReadAllText().FromJson<List<XkcdComicDimensions>>();
5255

53-
var results = new List<XkcdComicDimensions>();
54-
foreach (var comic in comics)
56+
var updatedDimensions = "xkcd-dimensions_updated.json"
57+
.ReadAllText().FromJson<List<XkcdComicDimensions>>();
58+
59+
for (var index = 0; index < existingDimensions.Count; index++)
5560
{
56-
try
61+
var existingDimension = existingDimensions[index];
62+
if(existingDimension?.Width != 0)
63+
continue;
64+
var comic = comics.FirstOrDefault(x => x.Id == existingDimension.Id);
65+
if (comic == null || comic.ImageUrl.IsNullOrEmpty())
5766
{
58-
var image = comic.ImageUrl.GetBytesFromUrl();
59-
using var imageStream = new MemoryStream(image);
60-
var pngImage = Image.FromStream(imageStream);
61-
// Get the dimensions of the PNG image
62-
int width = pngImage.Width;
63-
int height = pngImage.Height;
64-
results.Add(new XkcdComicDimensions
65-
{
66-
Id = comic.Id,
67-
Width = width,
68-
Height = height
69-
});
70-
}
71-
catch (Exception e)
72-
{
73-
Console.WriteLine($"Failed: comic.Id = {comic.Id}");
74-
Console.WriteLine(e);
75-
results.Add(new XkcdComicDimensions
76-
{
77-
Id = comic.Id,
78-
Width = 0,
79-
Height = 0
80-
});
67+
continue;
8168
}
69+
70+
var image = comic.ImageUrl.GetBytesFromUrl();
71+
using var imageStream = new MemoryStream(image);
72+
var pngImage = Image.FromStream(imageStream);
73+
74+
if (pngImage.Width == 0)
75+
throw new Exception("Width 0");
76+
existingDimension.Width = pngImage.Width;
77+
existingDimension.Height = pngImage.Height;
78+
File.WriteAllText("xkcd-dimensions_updated.json", JsonSerializer.SerializeToString(existingDimensions));
8279
}
8380

84-
File.WriteAllText("xkcd-dimensions.json", JsonSerializer.SerializeToString(results));
81+
File.WriteAllText("xkcd-dimensions_updated.json", JsonSerializer.SerializeToString(existingDimensions));
8582
}
8683
}
8784

0 commit comments

Comments
 (0)