fix import douban review for games and performances

This commit is contained in:
Your Name 2025-01-01 10:05:33 -05:00 committed by Henri Dickson
parent 4b9eeabfd7
commit e6292a350a
3 changed files with 16 additions and 6 deletions

View file

@ -11,6 +11,7 @@ from markdownify import markdownify as md
from catalog.common import *
from catalog.common.downloaders import *
from catalog.models import *
from catalog.sites import DoubanBook, DoubanDrama, DoubanGame, DoubanMovie, DoubanMusic
from catalog.sites.douban import DoubanDownloader
from common.utils import GenerateDateUUIDMediaFilePath
from journal.models import *
@ -160,9 +161,7 @@ class DoubanImporter(Task):
self.import_review_sheet(self.review_data[name], name)
self.message = f"豆瓣标记和评论导入完成,共处理{self.metadata['total']}篇,已存在{self.metadata['skipped']}篇,新增{self.metadata['imported']}篇。"
if len(self.metadata["failed_urls"]) > 0:
self.message += (
f'导入时未能处理以下网址:\n{" , ".join(self.metadata["failed_urls"])}'
)
self.message += f'导入时未能处理{len(self.metadata["failed_urls"])}个网址。'
self.save()
def import_mark_sheet(self, worksheet, shelf_type, sheet_name):
@ -298,6 +297,17 @@ class DoubanImporter(Task):
self.metadata["failed_urls"].append(str(url))
return item
def is_douban_item_url(self, url):
for cls in [
DoubanBook,
DoubanDrama,
DoubanMovie,
DoubanMusic,
DoubanGame,
]:
if cls.url_to_id(url):
return True
def import_review(self, entity_title, rating, title, review_url, content, time):
"""
Import one review: return 1: done / 2: skipped / None: failed
@ -310,7 +320,7 @@ class DoubanImporter(Task):
h = DoubanDownloader(review_url).download().html()
urls = h.xpath("//header[@class='main-hd']/a/@href")
for u in urls: # type:ignore
if ".douban.com/subject/" in u:
if self.is_douban_item_url(u):
url = u
if not url:
logger.warning(

View file

@ -174,7 +174,7 @@
<br>
{{ letterboxd_task.message }}
{% if letterboxd_task.metadata.failed_urls %}
{% trans 'Failed links, likely due to Letterboxd error, you may have to mark them manually' %}
{% trans 'Failed links, likely due to Letterboxd error, you may have to mark them manually' %}:
<br>
<textarea readonly>{% for url in letterboxd_task.metadata.failed_urls %}{{url}}&#10;{% endfor %}</textarea>
{% endif %}

View file

@ -8,7 +8,7 @@
共{{ import_task.metadata.total }}篇,已处理{{ import_task.metadata.processed }}篇,其中已存在{{ import_task.metadata.skipped }}篇,新增{{ import_task.metadata.imported }}篇
<br>
{% if import_task.metadata.failed_urls %}
{% trans 'Failed links, you may have to mark them manually' %}
{% trans 'Failed links, you may have to mark them manually' %}:
<br>
<textarea readonly>{% for url in import_task.metadata.failed_urls %}{{url}}&#10;{% endfor %}</textarea>
{% endif %}