Skip to content

Commit 9f53d13

Browse files
committed
Added storing the page metadata info the comicinfo file [#2477]
1 parent 149c0f3 commit 9f53d13

File tree

11 files changed

+315
-79
lines changed

11 files changed

+315
-79
lines changed

comixed-adaptors/src/main/java/org/comixedproject/adaptors/content/ComicInfoXmlFilenameContentAdaptor.java

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,9 @@
3232
import org.comixedproject.model.comicbooks.ComicDetail;
3333
import org.comixedproject.model.comicbooks.ComicTag;
3434
import org.comixedproject.model.comicbooks.ComicTagType;
35+
import org.comixedproject.model.comicpages.ComicPage;
3536
import org.comixedproject.model.metadata.ComicInfo;
37+
import org.comixedproject.model.metadata.PageInfo;
3638
import org.springframework.http.converter.xml.MappingJackson2XmlHttpMessageConverter;
3739
import org.springframework.util.StringUtils;
3840

@@ -135,6 +137,32 @@ public void loadContent(
135137
this.commandSeparatedList(comicInfo.getCoverArtist())
136138
.forEach(
137139
name -> detail.getTags().add(new ComicTag(detail, ComicTagType.COVER, trim(name))));
140+
log.debug("Loading page metadata");
141+
for (int index = 0; index < comicInfo.getPages().size(); index++) {
142+
final PageInfo pageInfo = comicInfo.getPages().get(index);
143+
// only extract data if we can match the filename to the entry
144+
if (Objects.nonNull(pageInfo) && StringUtils.hasLength(pageInfo.getFilename())) {
145+
final Optional<ComicPage> optionalPage =
146+
comicBook.getPages().stream()
147+
.filter(
148+
comicPage ->
149+
Objects.nonNull(comicPage)
150+
&& comicPage.getFilename().equals(pageInfo.getFilename()))
151+
.findFirst();
152+
if (optionalPage.isPresent()) {
153+
final ComicPage page = optionalPage.get();
154+
page.setPageNumber(pageInfo.getPageNumber());
155+
if (Objects.nonNull(pageInfo.getImageType())) {
156+
page.setPageType(pageInfo.getImageType().getComicPageType());
157+
}
158+
page.setWidth(pageInfo.getImageWidth());
159+
page.setHeight(pageInfo.getImageHeight());
160+
page.setHash(pageInfo.getImageHash());
161+
} else {
162+
log.warn("No comic page found for comic page: " + pageInfo.getPageNumber());
163+
}
164+
}
165+
}
138166
} catch (IOException error) {
139167
throw new ContentAdaptorException("Failed to load ComicInfo.xml", error);
140168
}

comixed-adaptors/src/main/java/org/comixedproject/adaptors/content/ComicMetadataWriter.java

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,8 @@
2727
import org.comixedproject.model.comicbooks.*;
2828
import org.comixedproject.model.metadata.ComicInfo;
2929
import org.comixedproject.model.metadata.ComicInfoMetadataSource;
30+
import org.comixedproject.model.metadata.PageInfo;
31+
import org.comixedproject.model.metadata.PageType;
3032
import org.springframework.beans.factory.InitializingBean;
3133
import org.springframework.beans.factory.annotation.Autowired;
3234
import org.springframework.http.converter.xml.MappingJackson2XmlHttpMessageConverter;
@@ -158,6 +160,21 @@ public byte[] createContent(ComicBook comicBook) throws ContentAdaptorException
158160
new ComicInfoMetadataSource(
159161
metadata.getMetadataSource().getAdaptorName(), metadata.getReferenceId()));
160162
}
163+
comicBook
164+
.getPages()
165+
.forEach(
166+
page -> {
167+
final PageInfo pageInfo = new PageInfo();
168+
pageInfo.setFilename(page.getFilename());
169+
pageInfo.setPageNumber(page.getPageNumber());
170+
pageInfo.setImageType(PageType.getFor(page.getPageType()));
171+
if (StringUtils.hasLength(page.getHash())) {
172+
pageInfo.setImageHash(page.getHash());
173+
pageInfo.setImageWidth(page.getWidth());
174+
pageInfo.setImageHeight(page.getHeight());
175+
}
176+
comicInfo.getPages().add(pageInfo);
177+
});
161178
try {
162179
log.trace("Generating ComicInfo.xml data");
163180
return this.xmlConverter.getObjectMapper().writeValueAsBytes(comicInfo);

comixed-adaptors/src/test/java/org/comixedproject/adaptors/content/ComicInfoXmlFilenameContentAdaptorTest.java

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,18 +19,25 @@
1919
package org.comixedproject.adaptors.content;
2020

2121
import static org.junit.jupiter.api.Assertions.*;
22+
import static org.mockito.Mockito.mock;
2223

2324
import java.io.IOException;
2425
import org.comixedproject.model.archives.ArchiveType;
2526
import org.comixedproject.model.comicbooks.ComicBook;
2627
import org.comixedproject.model.comicbooks.ComicDetail;
28+
import org.comixedproject.model.comicpages.ComicPage;
29+
import org.comixedproject.model.comicpages.ComicPageType;
2730
import org.junit.jupiter.api.BeforeEach;
2831
import org.junit.jupiter.api.Test;
2932
import org.junit.jupiter.api.extension.ExtendWith;
3033
import org.mockito.InjectMocks;
34+
import org.mockito.Mockito;
3135
import org.mockito.junit.jupiter.MockitoExtension;
36+
import org.mockito.junit.jupiter.MockitoSettings;
37+
import org.mockito.quality.Strictness;
3238

3339
@ExtendWith(MockitoExtension.class)
40+
@MockitoSettings(strictness = Strictness.LENIENT)
3441
class ComicInfoXmlFilenameContentAdaptorTest extends BaseContentAdaptorTest {
3542
private static final String TEST_COMICINFO_FILE_COMPLETE =
3643
"src/test/resources/ComicInfo-complete.xml";
@@ -47,6 +54,7 @@ class ComicInfoXmlFilenameContentAdaptorTest extends BaseContentAdaptorTest {
4754
private static final String TEST_DESCRIPTION = "Test summary <em>inner tag</em>";
4855
private static final String TEST_METADATA_SOURCE_NAME = "ComicVine";
4956
private static final String TEST_METADATA_REFERENCE_ID = "12971";
57+
private static final String TEST_PAGE_FILENAME = "page-%d.png";
5058

5159
@InjectMocks ComicInfoXmlFilenameContentAdaptor adaptor;
5260

@@ -57,6 +65,11 @@ class ComicInfoXmlFilenameContentAdaptorTest extends BaseContentAdaptorTest {
5765
void setup() {
5866
comicBook.setComicDetail(
5967
new ComicDetail(comicBook, TEST_COMICINFO_FILE_COMPLETE, ArchiveType.CBZ));
68+
for (int index = 0; index < 31; index++) {
69+
final ComicPage page = mock(ComicPage.class);
70+
comicBook.getPages().add(page);
71+
Mockito.when(page.getFilename()).thenReturn(String.format(TEST_PAGE_FILENAME, index));
72+
}
6073
}
6174

6275
@Test
@@ -91,6 +104,19 @@ void loadContent() throws IOException, ContentAdaptorException {
91104

92105
assertEquals(TEST_METADATA_SOURCE_NAME, comicBook.getMetadataSourceName());
93106
assertEquals(TEST_METADATA_REFERENCE_ID, comicBook.getMetadataReferenceId());
107+
108+
for (int index = 0; index < comicBook.getPages().size(); index++) {
109+
final ComicPage comicPage = comicBook.getPages().get(index);
110+
Mockito.verify(comicPage, Mockito.times(1)).setPageNumber(index);
111+
Mockito.verify(comicPage, Mockito.times(1)).setHeight(1966);
112+
if (index == 3) {
113+
Mockito.verify(comicPage, Mockito.times(1)).setWidth(2560);
114+
} else {
115+
Mockito.verify(comicPage, Mockito.times(1)).setWidth(1280);
116+
}
117+
Mockito.verify(comicPage, Mockito.times(1)).setPageType(Mockito.any(ComicPageType.class));
118+
Mockito.verify(comicPage, Mockito.times(1)).setHash(Mockito.anyString());
119+
}
94120
}
95121

96122
@Test

comixed-adaptors/src/test/java/org/comixedproject/adaptors/content/ComicMetadataWriterTest.java

Lines changed: 15 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,17 +2,18 @@
22

33
import static org.junit.jupiter.api.Assertions.assertNotNull;
44
import static org.junit.jupiter.api.Assertions.assertThrows;
5+
import static org.mockito.Mockito.mock;
56

67
import com.fasterxml.jackson.core.JsonProcessingException;
78
import com.fasterxml.jackson.databind.DeserializationFeature;
89
import com.fasterxml.jackson.databind.ObjectMapper;
910
import java.io.IOException;
10-
import java.util.Date;
11-
import java.util.HashSet;
12-
import java.util.Set;
11+
import java.util.*;
1312
import org.comixedproject.model.comicbooks.*;
13+
import org.comixedproject.model.comicpages.ComicPage;
1414
import org.comixedproject.model.metadata.ComicInfo;
1515
import org.comixedproject.model.metadata.MetadataSource;
16+
import org.comixedproject.model.metadata.PageType;
1617
import org.junit.jupiter.api.BeforeEach;
1718
import org.junit.jupiter.api.Test;
1819
import org.junit.jupiter.api.extension.ExtendWith;
@@ -41,6 +42,7 @@ class ComicMetadataWriterTest {
4142

4243
private byte[] contentByte = "The encoded content".getBytes();
4344
private Set<ComicTag> tags = new HashSet<>();
45+
private List<ComicPage> comicPages = new ArrayList<>();
4446

4547
@BeforeEach
4648
void setUp() throws JsonProcessingException {
@@ -56,6 +58,16 @@ void setUp() throws JsonProcessingException {
5658
Mockito.when(metadataSource.getAdaptorName()).thenReturn(TEST_METADATA_SOURCE_NAME);
5759
Mockito.when(comicMetadataSource.getMetadataSource()).thenReturn(metadataSource);
5860
Mockito.when(comicMetadataSource.getReferenceId()).thenReturn(TEST_METADATA_REFERENCE_ID);
61+
for (int index = 0; index < PageType.values().length; index++) {
62+
final ComicPage page = mock(ComicPage.class);
63+
Mockito.when(page.getPageNumber()).thenReturn(index);
64+
Mockito.when(page.getPageType()).thenReturn(PageType.values()[index].getComicPageType());
65+
Mockito.when(page.getWidth()).thenReturn(index * 2048);
66+
Mockito.when(page.getHeight()).thenReturn(index * 1024);
67+
Mockito.when(page.getHash()).thenReturn(Integer.toString(index));
68+
comicPages.add(page);
69+
}
70+
Mockito.when(comicBook.getPages()).thenReturn(comicPages);
5971
}
6072

6173
@Test
Lines changed: 94 additions & 70 deletions
Original file line numberDiff line numberDiff line change
@@ -1,73 +1,97 @@
11
<?xml version="1.0"?>
2-
<ComicInfo xmlns:xsd="http://www.w3.org/2001/XMLSchema"
3-
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
4-
<Title> Test Title </Title>
5-
<Series> Test Series </Series>
6-
<AlternateSeries> Test Alternate Series </AlternateSeries>
7-
<Number> 24 </Number>
8-
<Volume> 2011 </Volume>
9-
<Summary> Test summary &lt;em&gt;inner tag&lt;/em&gt; </Summary>
10-
<Notes> Test notes </Notes>
11-
<Year>2013</Year>
12-
<Month>12</Month>
13-
<Writer> Test Writer1 , Test Writer2 </Writer>
14-
<Penciller> Test Penciller1 , Test Penciller2 </Penciller>
15-
<Inker> Test Inker1 , Test Inker2 </Inker>
16-
<Colorist> Test Colorist1 , Test Colorist2 </Colorist>
17-
<Letterer> Test Letterer1 , Test Letterer2 </Letterer>
18-
<CoverArtist> Test CoverArtist1 , Test CoverArtist2 </CoverArtist>
19-
<Editor> Test Editor1 , Test Editor2 </Editor>
20-
<Publisher> Test Publisher </Publisher>
21-
<Web>http://comicvine.gamespot.com/foo/71765-12971/</Web>
22-
<PageCount>20</PageCount>
23-
<Characters> Chareacter1 , Character2 </Characters>
24-
<Teams> Test Team 1 , Test Team 2 </Teams>
25-
<Locations> Test Location 1 , Test Location 2 </Locations>
26-
<MetadataSource>
27-
<Name>ComicVine</Name>
28-
<ReferenceId> 12971 </ReferenceId>
29-
</MetadataSource>
30-
<Pages>
31-
<Page Image="0" ImageSize="762694" ImageWidth="1440"
32-
ImageHeight="2214" Type="FrontCover" />
33-
<Page Image="1" ImageSize="736690" ImageWidth="1440"
34-
ImageHeight="2214" />
35-
<Page Image="2" ImageSize="713093" ImageWidth="1440"
36-
ImageHeight="2214" />
37-
<Page Image="3" ImageSize="620017" ImageWidth="1440"
38-
ImageHeight="2214" />
39-
<Page Image="4" ImageSize="1379962" ImageWidth="2880"
40-
ImageHeight="2213" />
41-
<Page Image="5" ImageSize="748871" ImageWidth="1440"
42-
ImageHeight="2214" />
43-
<Page Image="6" ImageSize="863017" ImageWidth="1440"
44-
ImageHeight="2214" />
45-
<Page Image="7" ImageSize="1597046" ImageWidth="2880"
46-
ImageHeight="2213" />
47-
<Page Image="8" ImageSize="640363" ImageWidth="1440"
48-
ImageHeight="2214" />
49-
<Page Image="9" ImageSize="597280" ImageWidth="1440"
50-
ImageHeight="2214" />
51-
<Page Image="10" ImageSize="565942" ImageWidth="1440"
52-
ImageHeight="2214" />
53-
<Page Image="11" ImageSize="626838" ImageWidth="1440"
54-
ImageHeight="2214" />
55-
<Page Image="12" ImageSize="809706" ImageWidth="1440"
56-
ImageHeight="2214" />
57-
<Page Image="13" ImageSize="665441" ImageWidth="1440"
58-
ImageHeight="2214" />
59-
<Page Image="14" ImageSize="668657" ImageWidth="1440"
60-
ImageHeight="2214" />
61-
<Page Image="15" ImageSize="695300" ImageWidth="1440"
62-
ImageHeight="2214" />
63-
<Page Image="16" ImageSize="1021125" ImageWidth="2880"
64-
ImageHeight="2213" />
65-
<Page Image="17" ImageSize="972152" ImageWidth="1440"
66-
ImageHeight="2214" />
67-
<Page Image="18" ImageSize="510149" ImageWidth="1440"
68-
ImageHeight="2214" />
69-
<Page Image="19" ImageSize="672544" ImageWidth="1440"
70-
ImageHeight="2214" />
71-
</Pages>
2+
<ComicInfo
3+
>
4+
<Title>Test Title</Title>
5+
<Series>Test Series</Series>
6+
<AlternateSeries>Test Alternate Series</AlternateSeries>
7+
<Number>24</Number>
8+
<Volume>2011</Volume>
9+
<Summary>Test summary &lt;em&gt;inner tag&lt;/em&gt;</Summary>
10+
<Notes>Test notes</Notes>
11+
<Year>2013</Year>
12+
<Month>12</Month>
13+
<Writer>Test Writer1 , Test Writer2</Writer>
14+
<Penciller>Test Penciller1 , Test Penciller2</Penciller>
15+
<Inker>Test Inker1 , Test Inker2</Inker>
16+
<Colorist>Test Colorist1 , Test Colorist2</Colorist>
17+
<Letterer>Test Letterer1 , Test Letterer2</Letterer>
18+
<CoverArtist>Test CoverArtist1 , Test CoverArtist2</CoverArtist>
19+
<Editor>Test Editor1 , Test Editor2</Editor>
20+
<Publisher>Test Publisher</Publisher>
21+
<Web>http://comicvine.gamespot.com/foo/71765-12971/</Web>
22+
<PageCount>20</PageCount>
23+
<Characters>Character1 , Character2</Characters>
24+
<Teams>Test Team 1 , Test Team 2</Teams>
25+
<Locations>Test Location 1 , Test Location 2</Locations>
26+
<MetadataSource>
27+
<Name>ComicVine</Name>
28+
<ReferenceId>12971</ReferenceId>
29+
</MetadataSource>
30+
<Pages>
31+
<Page Image="0" ImageSize="628012" ImageWidth="1280" ImageHeight="1966" Type="FrontCover" Filename="page-0.png"
32+
ImageHash="0123456789ABCDEF0123456789ABCDEF"/>
33+
<Page Image="1" ImageSize="662605" ImageWidth="1280" ImageHeight="1966" Filename="page-1.png"
34+
ImageHash="0123456789ABCDEF0123456789ABCDEF"/>
35+
<Page Image="2" ImageSize="879713" ImageWidth="1280" ImageHeight="1966" Filename="page-2.png"
36+
ImageHash="0123456789ABCDEF0123456789ABCDEF"/>
37+
<Page Image="3" ImageSize="1717761" ImageWidth="2560" ImageHeight="1966" Filename="page-3.png"
38+
ImageHash="0123456789ABCDEF0123456789ABCDEF"/>
39+
<Page Image="4" ImageSize="717765" ImageWidth="1280" ImageHeight="1966" Filename="page-4.png"
40+
ImageHash="0123456789ABCDEF0123456789ABCDEF"/>
41+
<Page Image="5" ImageSize="727433" ImageWidth="1280" ImageHeight="1966" Filename="page-5.png"
42+
ImageHash="0123456789ABCDEF0123456789ABCDEF"/>
43+
<Page Image="6" ImageSize="819209" ImageWidth="1280" ImageHeight="1966" Filename="page-6.png"
44+
ImageHash="0123456789ABCDEF0123456789ABCDEF"/>
45+
<Page Image="7" ImageSize="739381" ImageWidth="1280" ImageHeight="1966" Filename="page-7.png"
46+
ImageHash="0123456789ABCDEF0123456789ABCDEF"/>
47+
<Page Image="8" ImageSize="755878" ImageWidth="1280" ImageHeight="1966" Filename="page-8.png"
48+
ImageHash="0123456789ABCDEF0123456789ABCDEF"/>
49+
<Page Image="9" ImageSize="700246" ImageWidth="1280" ImageHeight="1966" Filename="page-9.png"
50+
ImageHash="0123456789ABCDEF0123456789ABCDEF"/>
51+
<Page Image="10" ImageSize="747419" ImageWidth="1280" ImageHeight="1966" Filename="page-10.png"
52+
ImageHash="0123456789ABCDEF0123456789ABCDEF"/>
53+
<Page Image="11" ImageSize="684624" ImageWidth="1280" ImageHeight="1966" Filename="page-11.png"
54+
ImageHash="0123456789ABCDEF0123456789ABCDEF"/>
55+
<Page Image="12" ImageSize="650971" ImageWidth="1280" ImageHeight="1966" Filename="page-12.png"
56+
ImageHash="0123456789ABCDEF0123456789ABCDEF"/>
57+
<Page Image="13" ImageSize="603854" ImageWidth="1280" ImageHeight="1966" Filename="page-13.png"
58+
ImageHash="0123456789ABCDEF0123456789ABCDEF"/>
59+
<Page Image="14" ImageSize="770996" ImageWidth="1280" ImageHeight="1966" Filename="page-14.png"
60+
ImageHash="0123456789ABCDEF0123456789ABCDEF"/>
61+
<Page Image="15" ImageSize="737056" ImageWidth="1280" ImageHeight="1966" Filename="page-15.png"
62+
ImageHash="0123456789ABCDEF0123456789ABCDEF"/>
63+
<Page Image="16" ImageSize="677279" ImageWidth="1280" ImageHeight="1966" Filename="page-16.png"
64+
ImageHash="0123456789ABCDEF0123456789ABCDEF"/>
65+
<Page Image="17" ImageSize="544141" ImageWidth="1280" ImageHeight="1966" Filename="page-17.png"
66+
ImageHash="0123456789ABCDEF0123456789ABCDEF"/>
67+
<Page Image="18" ImageSize="759604" ImageWidth="1280" ImageHeight="1966" Filename="page-18.png"
68+
ImageHash="0123456789ABCDEF0123456789ABCDEF"/>
69+
<Page Image="19" ImageSize="708056" ImageWidth="1280" ImageHeight="1966" Filename="page-19.png"
70+
ImageHash="0123456789ABCDEF0123456789ABCDEF"/>
71+
<Page Image="20" ImageSize="754171" ImageWidth="1280" ImageHeight="1966" Filename="page-20.png"
72+
ImageHash="0123456789ABCDEF0123456789ABCDEF"/>
73+
<Page Image="21" ImageSize="726356" ImageWidth="1280" ImageHeight="1966" Filename="page-21.png"
74+
ImageHash="0123456789ABCDEF0123456789ABCDEF"/>
75+
<Page Image="22" ImageSize="721789" ImageWidth="1280" ImageHeight="1966" Type="InnerCover"
76+
Filename="page-22.png"
77+
ImageHash="0123456789ABCDEF0123456789ABCDEF"/>
78+
<Page Image="23" ImageSize="957631" ImageWidth="1280" ImageHeight="1966" Type="Roundup" Filename="page-23.png"
79+
ImageHash="0123456789ABCDEF0123456789ABCDEF"/>
80+
<Page Image="24" ImageSize="602891" ImageWidth="1280" ImageHeight="1966" Type="Advertisement"
81+
Filename="page-24.png"
82+
ImageHash="0123456789ABCDEF0123456789ABCDEF"/>
83+
<Page Image="25" ImageSize="637186" ImageWidth="1280" ImageHeight="1966" Type="Editorial" Filename="page-25.png"
84+
ImageHash="0123456789ABCDEF0123456789ABCDEF"/>
85+
<Page Image="26" ImageSize="554198" ImageWidth="1280" ImageHeight="1966" Type="Letters" Filename="page-26.png"
86+
ImageHash="0123456789ABCDEF0123456789ABCDEF"/>
87+
<Page Image="27" ImageSize="518172" ImageWidth="1280" ImageHeight="1966" Type="Preview" Filename="page-27.png"
88+
ImageHash="0123456789ABCDEF0123456789ABCDEF"/>
89+
<Page Image="28" ImageSize="625025" ImageWidth="1280" ImageHeight="1966" Type="BackCover" Filename="page-28.png"
90+
ImageHash="0123456789ABCDEF0123456789ABCDEF"/>
91+
<Page Image="29" ImageSize="786456" ImageWidth="1280" ImageHeight="1966" Type="Other" Filename="page-29.png"
92+
ImageHash="0123456789ABCDEF0123456789ABCDEF"/>
93+
<Page Image="30" ImageSize="245185" ImageWidth="1280" ImageHeight="1966" Type="Deleted" Filename="page-30.png"
94+
ImageHash="0123456789ABCDEF0123456789ABCDEF"/>
95+
</Pages>
7296
</ComicInfo>
7397

comixed-model/src/main/java/org/comixedproject/model/comicbooks/ComicBook.java

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -227,11 +227,6 @@ public ComicPage getPageWithFilename(String filename) {
227227
return null;
228228
}
229229

230-
public void sortPages() {
231-
this.pages.sort((ComicPage p1, ComicPage p2) -> p1.getFilename().compareTo(p2.getFilename()));
232-
this.updatePageNumbers();
233-
}
234-
235230
public void updatePageNumbers() {
236231
for (int index = 0; index < this.pages.size(); index++) {
237232
this.pages.get(index).setPageNumber(index);

comixed-model/src/main/java/org/comixedproject/model/comicpages/ComicPageType.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,5 +33,6 @@ public enum ComicPageType {
3333
ADVERTISEMENT,
3434
PREVIEW,
3535
STORY,
36-
OTHER;
36+
OTHER,
37+
DELETE;
3738
}

comixed-model/src/main/java/org/comixedproject/model/metadata/ComicInfo.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,8 @@
1919
package org.comixedproject.model.metadata;
2020

2121
import com.fasterxml.jackson.annotation.JsonProperty;
22+
import java.util.ArrayList;
23+
import java.util.List;
2224
import java.util.Objects;
2325
import lombok.Getter;
2426
import lombok.NoArgsConstructor;
@@ -141,6 +143,10 @@ public class ComicInfo {
141143
@Setter
142144
private ComicInfoMetadataSource metadata;
143145

146+
@JsonProperty("Pages")
147+
@Getter
148+
private List<PageInfo> pages = new ArrayList<>();
149+
144150
@Override
145151
public boolean equals(final Object o) {
146152
if (this == o) return true;

0 commit comments

Comments
 (0)