diff --git a/calibre-plugin/plugin-defaults.ini b/calibre-plugin/plugin-defaults.ini index 51f11876..a02f1bee 100644 --- a/calibre-plugin/plugin-defaults.ini +++ b/calibre-plugin/plugin-defaults.ini @@ -1939,6 +1939,11 @@ extracategories:Psych extracategories:Queer as Folk [quotev.com] +extra_valid_entries:pages,readers,reads,favorites +pages_label:Pages +readers_label:Readers +reads_label:Reads +favorites_label:Favorites [www.restrictedsection.org] ## Some sites require login (or login for some rated stories) The diff --git a/fanficfare/adapters/adapter_quotevcom.py b/fanficfare/adapters/adapter_quotevcom.py index e95fde18..b4fe52b7 100644 --- a/fanficfare/adapters/adapter_quotevcom.py +++ b/fanficfare/adapters/adapter_quotevcom.py @@ -18,7 +18,6 @@ def get_url_path_segments(url): return tuple(filter(None, url.split('/')[3:])) -# TODO: Possibly add pages/readers/reads/favorites class QuotevComAdapter(BaseSiteAdapter): def __init__(self, config, url): @@ -64,7 +63,7 @@ class QuotevComAdapter(BaseSiteAdapter): self.story.setMetadata('author', element.get_text()) self.story.setMetadata('authorId', get_url_path_segments(element['href'])[0]) self.story.setMetadata('authorUrl', urlparse.urljoin(self.url, element['href'])) - self.setDescription(self.url, self.utf8FromSoup(self.url, soup.find('div', id='qdesct'))) + self.setDescription(self.url, soup.find('div', id='qdesct')) self.setCoverImage(self.url, urlparse.urljoin(self.url, soup.find('img', {'class': 'logo'})['src'])) for a in soup.find('div', {'class': 'tag'})('a'): @@ -73,12 +72,6 @@ class QuotevComAdapter(BaseSiteAdapter): self.story.addToList('category', a.get_text()) - self.story.setMetadata( - 'status', 'Completed' if 'completed' in - soup.find('div', {'class': 't'})('div', recursive=False)[1].div.get_text() - else 'In-Progress' - ) - elements = soup('span', {'class': 'q_time'}) self.story.setMetadata('datePublished', datetime.datetime.fromtimestamp(float(elements[0]['ts']))) self.story.setMetadata('dateUpdated', datetime.datetime.fromtimestamp(float(elements[1]['ts']))) @@ -88,6 +81,22 @@ class QuotevComAdapter(BaseSiteAdapter): self.story.setMetadata('numChapters', len(self.chapterUrls)) + element = soup.find('div', {'class': 't'})('div', recursive=False)[1].div + data = filter(None, (x.strip() for x in element('span')[1].next_sibling.split(u'\xb7'))) + + if 'completed' in data: + self.story.setMetadata('status', 'Completed') + data.remove('completed') + else: + self.story.setMetadata('status', 'In-Progress') + + for datum in data: + value, key = datum.split() + self.story.setMetadata(key, value.replace(',', '').replace('.', '')) + + self.story.setMetadata('favorites', soup.find('div', id='favqn').get_text()) + self.story.setMetadata('comments', soup.find('a', id='comment_btn').span.get_text()) + def getChapterText(self, url): data = self._fetchUrl(url) soup = self.make_soup(data) diff --git a/fanficfare/defaults.ini b/fanficfare/defaults.ini index 12dfa9ff..1b05cbc5 100644 --- a/fanficfare/defaults.ini +++ b/fanficfare/defaults.ini @@ -1919,6 +1919,11 @@ extracategories:Psych extracategories:Queer as Folk [quotev.com] +extra_valid_entries:pages,readers,reads,favorites +pages_label:Pages +readers_label:Readers +reads_label:Reads +favorites_label:Favorites [www.restrictedsection.org] ## Some sites require login (or login for some rated stories) The