【 以下文字转载自 Programming 讨论区 】
calibre是一个书籍管理软件
官网:
https://calibre-ebook.com/代码:
https://github.com/kovidgoyal/calibre我一直用来管理电子书,但有个问题,他从豆瓣抓取的评分都是用星号表示的,最多5星
我希望可以用数字来表示,比如7.5,于是自己建了个字段#douban_rating,但不知道怎么自动把从豆瓣抓取的数据填进去,只能自己手动填,非常麻烦,所以想通过改代码的方式自动完成。
我看了下代码,和豆瓣评分有关的是这段:
# Ratings
if rating:
try:
mi.rating = float(rating['average']) / 2.0
except:
log.exception('Failed to parse rating')
mi.rating = 0
他这里把豆瓣评分/2了,所以最高是5分
另外还有一段代码:
def set_user_metadata(self, field, metadata):
'''
store custom field metadata for one column into the object. Field is
the key name not the label
'''
if field is not None:
if not field.startswith('#'):
raise AttributeError(
'Custom field name %s must begin with \'#\''%repr(field))
if metadata is None:
traceback.print_stack()
return
m = dict(metadata)
# Copying the elements should not be necessary. The objects referenced
# in the dict should not change. Of course, they can be replaced.
# for k,v in iteritems(metadata):
# m[k] = copy.copy(v)
if '#value#' not in m:
if m['datatype'] == 'text' and m['is_multiple']:
m['#value#'] = []
else:
m['#value#'] = None
_data = object.__getattribute__(self, '_data')
_data['user_metadata'][field] = m
这个应该是设置自定义字段的
于是我试着改了一下,在获取豆瓣评分后面加了两行:
v = {‘#value#’: float(rating[‘average’])}
mi.set_user_metadata(‘#douban_rating’, v)
但执行的时候报错了,说下载数据失败,我不清楚怎么debug这个project,所以不知道是哪里错了,
哪位有空帮我看看怎么回事?多谢
或者指点一下如何setup调试环境,我自己debug也行,我有VS2019和VSCode,都安装了python插件,代码也clone下来了。
--来自微水木3.5.2
--
FROM 61.48.182.4