@@ -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