diff --git a/calibre-plugin/plugin-defaults.ini b/calibre-plugin/plugin-defaults.ini index 41cb1caa..172097fd 100644 --- a/calibre-plugin/plugin-defaults.ini +++ b/calibre-plugin/plugin-defaults.ini @@ -2818,6 +2818,12 @@ add_to_comma_entries:,reads ## are reports that sound like site throttling without it. slow_down_sleep_time:2 +## wattpad.com chapters can have a banner image at the top of the +## page. When include_chapter_banner_images:true the banner image +## will be prepended to the chapter text during download as: +## +include_chapter_banner_images:true + [www.adastrafanfic.com] use_basic_cache:true ## Some sites do not require a login, but do require the user to diff --git a/fanficfare/adapters/adapter_wattpadcom.py b/fanficfare/adapters/adapter_wattpadcom.py index 14e874ea..dba2ce21 100644 --- a/fanficfare/adapters/adapter_wattpadcom.py +++ b/fanficfare/adapters/adapter_wattpadcom.py @@ -42,6 +42,7 @@ class WattpadComAdapter(BaseSiteAdapter): self.story.setMetadata('siteabbrev',self.getSiteAbbrev()) self.story.setMetadata('storyId', self.storyId) self._setURL('https://www.wattpad.com/story/%s' % self.storyId) + self.chapter_photoUrl = {} # categoryDefs do not change all that often, if at all. Could be put in a constant, leaving it as a class var for now # note: classvar may be useless because of del adapter @@ -98,7 +99,8 @@ class WattpadComAdapter(BaseSiteAdapter): def doExtractChapterUrlsAndMetadata(self, get_cover=True): try: storyInfo = json.loads(self.get_request(WattpadComAdapter.API_STORYINFO % self.storyId)) - # logger.debug('storyInfo: %s' % json.dumps(storyInfo)) + # logger.debug('storyInfo: %s' % json.dumps(storyInfo, sort_keys=True, + # indent=2, separators=(',', ':'))) except Exception: raise exceptions.InvalidStoryURL(self.url, self.getSiteDomain(), self.getSiteExampleURLs()) @@ -126,7 +128,9 @@ class WattpadComAdapter(BaseSiteAdapter): self.story.setMetadata('dateUpdated', makeDate(storyInfo['modifyDate'].rstrip('Z'), "%Y-%m-%dT%H:%M:%S")) self.story.setMetadata('datePublished', makeDate(storyInfo['createDate'].rstrip('Z'), "%Y-%m-%dT%H:%M:%S")) - [self.add_chapter(part['title'], part['url']) for part in storyInfo['parts']] + for part in storyInfo['parts']: + self.add_chapter(part['title'], part['url']) + self.chapter_photoUrl[part['url']] = part['photoUrl'] self.setCoverImage(storyInfo['url'], storyInfo['cover'].replace('-256-','-512-')) self.story.setMetadata('language', storyInfo['language']['name']) @@ -145,7 +149,15 @@ class WattpadComAdapter(BaseSiteAdapter): def getChapterText(self, url): logger.debug('%s' % url) chapterID = re.search(r'https://www.wattpad.com/(?P\d+).*', url).group('chapterID') - return self.utf8FromSoup(url,self.make_soup(self.get_request(WattpadComAdapter.API_STORYTEXT % chapterID))) + data = self.get_request(WattpadComAdapter.API_STORYTEXT % chapterID) + # logger.debug(self.chapter_photoUrl[url]) + imgdata = '' + if self.chapter_photoUrl[url] and self.getConfig('include_chapter_banner_images',True): + imgdata = ''' + +''' % self.chapter_photoUrl[url] + # logger.debug(imgdata + data) + return self.utf8FromSoup(url,self.make_soup(imgdata + data)) # adapter self-dicovery is not implemented in fanficfare (it existed for the previous project) def getClass(): diff --git a/fanficfare/configurable.py b/fanficfare/configurable.py index d84cb66f..9cc7d51d 100644 --- a/fanficfare/configurable.py +++ b/fanficfare/configurable.py @@ -293,6 +293,7 @@ def get_valid_set_options(): 'use_threadmarks_cover':(base_xenforo2_list,None,boollist), 'skip_sticky_first_posts':(base_xenforo2_list,None,boollist), 'include_dice_rolls':(base_xenforo2_list,None,boollist+['svg']), + 'include_chapter_banner_images':(['wattpad.com'],None,boollist), 'fix_excess_space': (['novelonlinefull.com', 'novelall.com'], ['epub', 'html'], boollist), 'dedup_order_chapter_list': (['m.wuxiaworld.co', 'novelupdates.cc'], None, boollist), 'show_nsfw_cover_images': (['fiction.live'], None, boollist), @@ -541,6 +542,7 @@ def get_valid_keywords(): 'use_threadmarks_cover', 'skip_sticky_first_posts', 'include_dice_rolls', + 'include_chapter_banner_images', 'datethreadmark_format', 'fix_pseudo_html', 'fix_excess_space', diff --git a/fanficfare/defaults.ini b/fanficfare/defaults.ini index 86957041..a0bc7a1d 100644 --- a/fanficfare/defaults.ini +++ b/fanficfare/defaults.ini @@ -2839,6 +2839,12 @@ add_to_comma_entries:,reads ## are reports that sound like site throttling without it. slow_down_sleep_time:2 +## wattpad.com chapters can have a banner image at the top of the +## page. When include_chapter_banner_images:true the banner image +## will be prepended to the chapter text during download as: +## +include_chapter_banner_images:true + [www.adastrafanfic.com] use_basic_cache:true ## Some sites do not require a login, but do require the user to