FanFicFare/adapter.py

202 lines
4.8 KiB
Python

# -*- coding: utf-8 -*-
import logging
import datetime
class LoginRequiredException(Exception):
def __init__(self, url):
self.url = url
def __str__(self):
return repr(self.url + ' requires user to be logged in')
class FanfictionSiteAdapter:
try:
from google.appengine.api.urlfetch import fetch as googlefetch
appEngine = True
except:
appEngine = False
login = ''
password = ''
url = ''
host = ''
path = ''
uuid = ''
storyName = ''
storyId = ''
authorName = ''
authorId = ''
authorURL = ''
outputStorySep = '-Ukn_'
outputName = ''
storyDescription = ''
storyCharacters = []
storySeries = ''
storyPublished = datetime.date(1970, 01, 31)
storyCreated = datetime.datetime.now()
storyUpdated = datetime.date(1970, 01, 31)
languageId = 'en-UK'
language = 'English'
subjects = []
publisher = ''
numChapters = '0'
numWords = '0'
genre = ''
category = ''
storyStatus = 'In-Progress'
storyRating = ''
storyUserRating = '0'
def __init__(self, url):
# basic plain url parsing...
self.url = url
parsedUrl = up.urlparse(url)
self.host = parsedUrl.netloc
self.path = parsedUrl.path
def hasAppEngine(self):
return self.appEngine
def requiresLogin(self, url = None):
return False
def performLogin(self, url = None):
return True
def extractIndividualUrls(self):
pass
def getText(self, url):
pass
def setLogin(self, login):
self.login = login
def setPassword(self, password):
self.password = password
def getHost(self):
logging.debug('self.host=%s' % self.host)
return self.host
def getUUID(self):
self.uuid = 'urn:uuid:' + self.host + '-u.' + self.authorId + '-s.' + self.storyId
logging.debug('self.uuid=%s' % self.uuid)
return self.uuid
def getOutputName(self):
self.outputName = self.storyName.replace(" ", "_") + self.outputStorySep + self.storyId
logging.debug('self.storyId=%s, self.storyName=%s self.outputName=%s' % (self.storyId, self.storyName, self.outputName))
return self.outputName
def getAuthorURL(self):
logging.debug('self.authorURL=%s' % self.authorURL)
return self.authorURL
def getAuthorId(self):
logging.debug('self.authorId=%s' % self.authorId)
return self.authorId
def getAuthorName(self):
logging.debug('self.authorName=%s' % self.authorName)
return self.authorName
def getStoryURL(self):
logging.debug('self.url=%s' % self.url)
return self.url
def getStoryId(self):
logging.debug('self.storyId=%s' % self.storyId)
return self.storyId
def getStoryName(self):
logging.debug('self.storyName=%s' % self.storyName)
return self.storyName
def getStoryDescription(self):
logging.debug('self.storyDescription=%s' % self.storyDescription)
return self.storyDescription
def getStoryCreated(self):
self.storyCreated = datetime.datetime.now()
logging.debug('self.storyCreated=%s' % self.storyCreated)
return self.storyCreated
def addCharacter(self, character):
chara = character.upper()
for c in self.storyCharacters:
if c.upper() == chara:
return False
self.storyCharacters.append(character)
return True
def getStoryCharacters(self):
logging.debug('self.storyCharacters=%s' % self.storyCharacters)
return self.storyCharacters
def getStoryPublished(self):
logging.debug('self.storyPublished=%s' % self.storyPublished)
return self.storyPublished
def getStoryUpdated(self):
logging.debug('self.storyUpdated=%s' % self.storyUpdated)
return self.storyUpdated
def getStorySeries(self):
logging.debug('self.storySeries=%s' % self.storySeries)
return self.storySeries
def getLanguage(self):
logging.debug('self.language=%s' % self.language)
return self.language
def getLanguageId(self):
logging.debug('self.languageId=%s' % self.languageId)
return self.languageId
def addSubject(self, subject):
subj = subject.upper()
for s in self.subjects:
if s.upper() == subj:
return False
self.subjects.append(subject)
return True
def getSubjects(self):
logging.debug('self.subjects=%s' % self.authorName)
return self.subjects
def getPublisher(self):
logging.debug('self.publisher=%s' % self.publisher)
return self.publisher
def getNumChapters(self):
logging.debug('self.numChapters=%s' % self.numChapters)
return self.numChapters
def getNumWords(self):
logging.debug('self.numWords=%s' % self.numWords)
return self.numWords
def getCategory(self):
logging.debug('self.category=%s' % self.category)
return self.category
def getGenre(self):
logging.debug('self.genre=%s' % self.genre)
return self.genre
def getStoryStatus(self):
logging.debug('self.storyStatus=%s' % self.storyStatus)
return self.storyStatus
def getStoryRating(self):
logging.debug('self.storyRating=%s' % self.storyRating)
return self.storyRating
def getStoryUserRating(self):
logging.debug('self.storyUserRating=%s' % self.storyUserRating)
return self.storyUserRating
def getPrintableUrl(self, url):
return url