feature: more detail of doujinshi

This commit is contained in:
Ricter Z 2016-02-15 23:28:49 +08:00
parent e56a241849
commit 73849e0d10
2 changed files with 30 additions and 3 deletions

View File

@ -5,16 +5,27 @@ from constant import DETAIL_URL, IMAGE_URL
from logger import logger from logger import logger
class DoujinshiInfo(dict):
def __init__(self, **kwargs):
super(DoujinshiInfo, self).__init__(**kwargs)
def __getattr__(self, item):
try:
return dict.__getitem__(self, item)
except KeyError:
return ''
class Doujinshi(object): class Doujinshi(object):
def __init__(self, name=None, subtitle=None, id=None, img_id=None, ext='jpg', pages=0): def __init__(self, name=None, id=None, img_id=None, ext='jpg', pages=0, **kwargs):
self.name = name self.name = name
self.subtitle = subtitle
self.id = id self.id = id
self.img_id = img_id self.img_id = img_id
self.ext = ext self.ext = ext
self.pages = pages self.pages = pages
self.downloader = None self.downloader = None
self.url = '%s/%d' % (DETAIL_URL, self.id) self.url = '%s/%d' % (DETAIL_URL, self.id)
self.info = DoujinshiInfo(**kwargs)
def __repr__(self): def __repr__(self):
return '<Doujinshi: {}>'.format(self.name) return '<Doujinshi: {}>'.format(self.name)
@ -22,7 +33,11 @@ class Doujinshi(object):
def show(self): def show(self):
table = [ table = [
["Doujinshi", self.name], ["Doujinshi", self.name],
["Subtitle", self.subtitle], ["Subtitle", self.info.subtitle],
["Characters", self.info.characters],
["Authors", self.info.artists],
["Language", self.info.language],
["Tags", self.info.tags],
["URL", self.url], ["URL", self.url],
["Pages", self.pages], ["Pages", self.pages],
] ]

View File

@ -37,6 +37,7 @@ def doujinshi_parser(id_):
title = doujinshi_info.find('h1').text title = doujinshi_info.find('h1').text
subtitle = doujinshi_info.find('h2') subtitle = doujinshi_info.find('h2')
doujinshi['name'] = title doujinshi['name'] = title
doujinshi['subtitle'] = subtitle.text if subtitle else '' doujinshi['subtitle'] = subtitle.text if subtitle else ''
@ -55,6 +56,17 @@ def doujinshi_parser(id_):
pages = pages.group(1) pages = pages.group(1)
break break
doujinshi['pages'] = int(pages) doujinshi['pages'] = int(pages)
# gain information of the doujinshi
information_fields = doujinshi_info.find_all('div', attrs={'class': 'field-name'})
needed_fields = ['Characters', 'Artists', 'Language', 'Tags']
for field in information_fields:
field_name = field.contents[0].strip().strip(':')
if field_name in needed_fields:
data = [sub_field.contents[0].strip() for sub_field in
field.find_all('a', attrs={'class': 'tag'})]
doujinshi[field_name.lower()] = ', '.join(data)
return doujinshi return doujinshi