mirror of
https://github.com/JimmXinu/FanFicFare.git
synced 2026-05-04 04:41:36 +02:00
Add support for www.sunnydaleafterdark.com
This is an EFiction style site, focusing on Buffy the Vampire Slayer fics with the Buffy/Spike ship. There are a few quirks about how the site shows the infobox metadata.
This commit is contained in:
parent
7f97decb8a
commit
fe5605ea50
4 changed files with 121 additions and 0 deletions
|
|
@ -3578,6 +3578,24 @@ extracategories:Lord of the Rings
|
|||
|
||||
website_encodings:Windows-1252,utf8
|
||||
|
||||
[www.sunnydaleafterdark.com]
|
||||
## Site dedicated to these categories/characters/ships
|
||||
## 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
|
||||
|
||||
## Some sites also require the user to confirm they are adult for
|
||||
## adult content. In commandline version, this should go in your
|
||||
## personal.ini, not defaults.ini.
|
||||
#is_adult:true
|
||||
|
||||
extracategories:Buffy: The Vampire Slayer
|
||||
extracharacters:Buffy, Spike
|
||||
extraships:Spike/Buffy
|
||||
|
||||
[www.swi.org.ru]
|
||||
use_basic_cache:true
|
||||
|
||||
|
|
|
|||
|
|
@ -145,6 +145,7 @@ from . import adapter_psychficcom
|
|||
from . import adapter_deviantartcom
|
||||
from . import adapter_merengohu
|
||||
from . import adapter_readonlymindcom
|
||||
from . import adapter_wwwsunnydaleafterdarkcom
|
||||
|
||||
## This bit of complexity allows adapters to be added by just adding
|
||||
## importing. It eliminates the long if/else clauses we used to need
|
||||
|
|
|
|||
84
fanficfare/adapters/adapter_wwwsunnydaleafterdarkcom.py
Normal file
84
fanficfare/adapters/adapter_wwwsunnydaleafterdarkcom.py
Normal file
|
|
@ -0,0 +1,84 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
|
||||
# Copyright 2011 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
|
||||
from ..htmlcleanup import stripHTML
|
||||
|
||||
# Software: eFiction
|
||||
from .base_efiction_adapter import BaseEfictionAdapter
|
||||
|
||||
class WWWSunnydaleAfterDarkComAdapter(BaseEfictionAdapter):
|
||||
|
||||
@classmethod
|
||||
def getProtocol(self):
|
||||
"""
|
||||
Some, but not all site now require https.
|
||||
"""
|
||||
return "https"
|
||||
|
||||
@staticmethod
|
||||
def getSiteDomain():
|
||||
return 'www.sunnydaleafterdark.com'
|
||||
|
||||
@classmethod
|
||||
def getSiteAbbrev(self):
|
||||
return 'sad'
|
||||
|
||||
@classmethod
|
||||
def getDateFormat(self):
|
||||
return r"%m/%d/%y"
|
||||
|
||||
def extractChapterUrlsAndMetadata(self):
|
||||
## Call super of extractChapterUrlsAndMetadata().
|
||||
## base_efiction leaves the soup in self.html.
|
||||
super(WWWSunnydaleAfterDarkComAdapter, self).extractChapterUrlsAndMetadata()
|
||||
|
||||
## attempt to fetch rating from title line:
|
||||
## "Do You Think This Is Love? by Supernatural Beings [PG]"
|
||||
r = stripHTML(self.html.find("div", {"id": "pagetitle"}))
|
||||
if '[' in r and ']' in r:
|
||||
self.story.setMetadata('rating',
|
||||
r[r.index('[')+1:r.index(']')])
|
||||
|
||||
def make_soup(self, data):
|
||||
soup = super(WWWSunnydaleAfterDarkComAdapter, self).make_soup(data)
|
||||
## This site uses Javascript to "hide" warnings, for spoiler reasons
|
||||
## <span class="label">Warnings: <span class="revealSpoiler" onclick="this.getElementsByClassName('spoiler')[0].classList.remove('spoiler');">(Click Here To Reveal) <span class="spoiler">Warning A, Warning B, Warning Y, Warning Z</span></span></span>
|
||||
## We need to remove the revealSpoiler spans and replace them with the contents
|
||||
## of the enclosed spoiler spans.
|
||||
infobox = soup.find("div", "infobox")
|
||||
if infobox is not None:
|
||||
for revealSpoiler in infobox.find_all("span", class_="revealSpoiler"):
|
||||
parent = revealSpoiler.parent
|
||||
spoiler = revealSpoiler.find("span", class_="spoiler")
|
||||
spoiler.extract()
|
||||
revealSpoiler.replace_with(spoiler)
|
||||
spoiler.unwrap()
|
||||
parent.smooth()
|
||||
return soup
|
||||
|
||||
def handleMetadataPair(self, key, value):
|
||||
## Inexplicably puts the entire Genres string inside the label span
|
||||
## Likewise Warnings, which also have the spoiler javascript (removed in make_soup)
|
||||
if key.startswith("Genre") or key.startswith("Warning"):
|
||||
key, value = key.split(': ')
|
||||
super(WWWSunnydaleAfterDarkComAdapter, self).handleMetadataPair(key, value)
|
||||
|
||||
|
||||
def getClass():
|
||||
return WWWSunnydaleAfterDarkComAdapter
|
||||
|
||||
|
|
@ -3548,6 +3548,24 @@ extracategories:Lord of the Rings
|
|||
|
||||
website_encodings:Windows-1252,utf8
|
||||
|
||||
[www.sunnydaleafterdark.com]
|
||||
## Site dedicated to these categories/characters/ships
|
||||
## 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
|
||||
|
||||
## Some sites also require the user to confirm they are adult for
|
||||
## adult content. In commandline version, this should go in your
|
||||
## personal.ini, not defaults.ini.
|
||||
#is_adult:true
|
||||
|
||||
extracategories:Buffy: The Vampire Slayer
|
||||
extracharacters:Buffy, Spike
|
||||
extraships:Spike/Buffy
|
||||
|
||||
[www.swi.org.ru]
|
||||
use_basic_cache:true
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue