From c9a9e2e2d6564fbdcc494334e2a60a1aa6f2f612 Mon Sep 17 00:00:00 2001 From: Jim Miller Date: Thu, 15 Apr 2021 13:01:46 -0500 Subject: [PATCH] Remove site: fictionpad.com, completely different site, looks like generic parked? --- calibre-plugin/plugin-defaults.ini | 17 -- fanficfare/adapters/__init__.py | 1 - fanficfare/adapters/adapter_fictionpadcom.py | 188 ------------------- fanficfare/defaults.ini | 17 -- 4 files changed, 223 deletions(-) delete mode 100644 fanficfare/adapters/adapter_fictionpadcom.py diff --git a/calibre-plugin/plugin-defaults.ini b/calibre-plugin/plugin-defaults.ini index cf77afb2..9c5abd9b 100644 --- a/calibre-plugin/plugin-defaults.ini +++ b/calibre-plugin/plugin-defaults.ini @@ -1928,23 +1928,6 @@ download_text_version:false ## Clear FanFiction from defaults, site is original fiction. extratags: -[fictionpad.com] -## Some sites require login (or login for some rated stories) The -## program can prompt you, or you can save it in config. In -## commandline version, this should go in your personal.ini, not -## defaults.ini. -#username:YourName -#password:yourpassword - -extra_valid_entries:followers,comments,views,likes,dislikes -#extra_titlepage_entries:followers,comments,views,likes,dislikes - -followers_label:Followers -comments_label:Comments -views_label:Views -likes_label:Likes -dislikes_label:Dislikes - [ficwad.com] use_basic_cache:true ## Some sites require login (or login for some rated stories) The diff --git a/fanficfare/adapters/__init__.py b/fanficfare/adapters/__init__.py index 03a75ff3..01d2438b 100644 --- a/fanficfare/adapters/__init__.py +++ b/fanficfare/adapters/__init__.py @@ -88,7 +88,6 @@ from . import adapter_potterficscom from . import adapter_faeriearchivecom from . import adapter_imagineeficcom from . import adapter_potterheadsanonymouscom -from . import adapter_fictionpadcom from . import adapter_storiesonlinenet from . import adapter_trekiverseorg from . import adapter_literotica diff --git a/fanficfare/adapters/adapter_fictionpadcom.py b/fanficfare/adapters/adapter_fictionpadcom.py deleted file mode 100644 index 335e0156..00000000 --- a/fanficfare/adapters/adapter_fictionpadcom.py +++ /dev/null @@ -1,188 +0,0 @@ -# -*- coding: utf-8 -*- - -# Copyright 2013 Fanficdownloader team, 2018 FanFicFare team -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# - -from __future__ import absolute_import -import logging -logger = logging.getLogger(__name__) -import re -import json - - -#from ..htmlcleanup import stripHTML -from .. import exceptions as exceptions - -# py2 vs py3 transition -from ..six import text_type as unicode - -from .base_adapter import BaseSiteAdapter, makeDate - -class FictionPadSiteAdapter(BaseSiteAdapter): - - def __init__(self, config, url): - BaseSiteAdapter.__init__(self, config, url) - self.story.setMetadata('siteabbrev','fpad') - self.dateformat = "%Y-%m-%dT%H:%M:%SZ" - self.is_adult=False - self.username = None - self.password = None - # get storyId from url--url validation guarantees query correct - m = re.match(self.getSiteURLPattern(),url) - if m: - self.story.setMetadata('storyId',m.group('id')) - - # normalized story URL. - self._setURL("https://"+self.getSiteDomain() - +"/author/"+m.group('author') - +"/stories/"+self.story.getMetadata('storyId')) - else: - raise exceptions.InvalidStoryURL(url, - self.getSiteDomain(), - self.getSiteExampleURLs()) - - @staticmethod - def getSiteDomain(): - return 'fictionpad.com' - - @classmethod - def getSiteExampleURLs(cls): - return "https://fictionpad.com/author/Author/stories/1234/Some-Title" - - def getSiteURLPattern(self): - # http://fictionpad.com/author/Serdd/stories/4275 - return r"http(s)?://(www\.)?fictionpad\.com/author/(?P[^/]+)/stories/(?P\d+)" - -#
-# -# -# or with FictionPad -# -# -# -# -# -#

-# Forgot your password? -#

-#
- def performLogin(self): - params = {} - - if self.password: - params['login'] = self.username - params['password'] = self.password - else: - params['login'] = self.getConfig("username") - params['password'] = self.getConfig("password") - params['remember'] = '1' - - loginUrl = 'http://' + self.getSiteDomain() + '/signin' - logger.debug("Will now login to URL (%s) as (%s)" % (loginUrl, - params['login'])) - - ## need to pull empty login page first to get authenticity_token - soup = self.make_soup(self.get_request(loginUrl)) - params['authenticity_token']=soup.find('input', {'name':'authenticity_token'})['value'] - - data = self.post_request(loginUrl, params) - - if "Invalid email/pseudonym and password combination." in data: - logger.info("Failed to login to URL %s as %s" % (loginUrl, - params['login'])) - raise exceptions.FailedToLogin(loginUrl,params['login']) - - - def extractChapterUrlsAndMetadata(self): - # fetch the chapter. From that we will get almost all the - # metadata and chapter list - - url=self.url - logger.debug("URL: "+url) - - data = self.get_request(url) - if "This is a mature story. Please sign in to read it." in data: - self.performLogin() - data = self.get_request(url) - - find = "wordyarn.config.page = " - data = data[data.index(find)+len(find):] - data = data[:data.index("")] - data = data[:data.rindex(";")] - data = data.replace('tables:','"tables":') - tables = json.loads(data)['tables'] - - # looks like only one author per story allowed. - author = tables['users'][0] - story = tables['stories'][0] - story_ver = tables['story_versions'][0] - logger.debug("story:%s"%story) - - self.story.setMetadata('authorId',author['id']) - self.story.setMetadata('author',author['display_name']) - self.story.setMetadata('authorUrl','https://'+self.host+'/author/'+author['display_name']+'/stories') - - self.story.setMetadata('title',story_ver['title']) - self.setDescription(url,story_ver['description']) - - if not ('assets/story_versions/covers' in story_ver['profile_image_url@2x']): - self.setCoverImage(url,story_ver['profile_image_url@2x']) - - self.story.setMetadata('datePublished',makeDate(story['published_at'], self.dateformat)) - self.story.setMetadata('dateUpdated',makeDate(story['published_at'], self.dateformat)) - - self.story.setMetadata('followers',story['followers_count']) - self.story.setMetadata('comments',story['comments_count']) - self.story.setMetadata('views',story['views_count']) - self.story.setMetadata('likes',int(story['likes'])) # no idea why they floated these. - if 'dislikes' in story: - self.story.setMetadata('dislikes',int(story['dislikes'])) - - if story_ver['is_complete']: - self.story.setMetadata('status', 'Completed') - else: - self.story.setMetadata('status', 'In-Progress') - - self.story.setMetadata('rating', story_ver['maturity_level']) - self.story.setMetadata('numWords', unicode(story_ver['word_count'])) - - for i in tables['fandoms']: - self.story.addToList('category',i['name']) - - for i in tables['genres']: - self.story.addToList('genre',i['name']) - - for i in tables['characters']: - self.story.addToList('characters',i['name']) - - for c in tables['chapters']: - chtitle = "Chapter %d"%c['number'] - if c['title']: - chtitle += " - %s"%c['title'] - self.add_chapter(chtitle,c['body_url']) - - - def getChapterText(self, url): - logger.debug('Getting chapter text from: %s' % url) - if not url: - data = u"This chapter has no text." - else: - data = self.get_request(url) - soup = self.make_soup(u"
"+data+u"
") - return self.utf8FromSoup(url,soup) - -def getClass(): - return FictionPadSiteAdapter - diff --git a/fanficfare/defaults.ini b/fanficfare/defaults.ini index b14c5ef3..6ea7f5cd 100644 --- a/fanficfare/defaults.ini +++ b/fanficfare/defaults.ini @@ -1942,23 +1942,6 @@ download_text_version:false ## Clear FanFiction from defaults, site is original fiction. extratags: -[fictionpad.com] -## Some sites require login (or login for some rated stories) The -## program can prompt you, or you can save it in config. In -## commandline version, this should go in your personal.ini, not -## defaults.ini. -#username:YourName -#password:yourpassword - -extra_valid_entries:followers,comments,views,likes,dislikes -#extra_titlepage_entries:followers,comments,views,likes,dislikes - -followers_label:Followers -comments_label:Comments -views_label:Views -likes_label:Likes -dislikes_label:Dislikes - [ficwad.com] use_basic_cache:true ## Some sites require login (or login for some rated stories) The