letterboxd: import imdb only items

This commit is contained in:
Your Name 2024-01-12 18:38:09 -05:00 committed by Henri Dickson
parent 6d3d240750
commit ab4bceb1c3
10 changed files with 26 additions and 17 deletions

View file

@ -12,6 +12,7 @@
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>{{ site_name }} - {% trans '无效请求' %}</title>
<meta name="robots" content="noindex">
{% include "common_libs.html" %}
</head>
<body>

View file

@ -12,6 +12,7 @@
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>{{ site_name }} - {% trans '权限不符' %}</title>
<meta name="robots" content="noindex">
{% include "common_libs.html" %}
</head>
<body>

View file

@ -12,6 +12,7 @@
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>{{ site_name }} - {% trans '未找到' %}</title>
<meta name="robots" content="noindex">
{% include "common_libs.html" %}
</head>
<body>

View file

@ -12,6 +12,7 @@
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>{{ site_name }} - {% trans '系统错误' %}</title>
<meta name="robots" content="noindex">
{% include "common_libs.html" %}
</head>
<body>

View file

@ -37,11 +37,13 @@ class LetterboxdImporter(Task):
try:
h = BasicDownloader(url).download().html()
tu = h.xpath("//a[@data-track-action='TMDb']/@href")
iu = h.xpath("//a[@data-track-action='IMDb']/@href")
if not tu:
i = h.xpath('//span[@class="film-title-wrapper"]/a/@href')
u2 = "https://letterboxd.com" + i[0] # type:ignore
h = BasicDownloader(u2).download().html()
tu = h.xpath("//a[@data-track-action='TMDb']/@href")
iu = h.xpath("//a[@data-track-action='IMDb']/@href")
if not tu:
logger.error(f"Unknown TMDB for {url}")
return None
@ -52,11 +54,21 @@ class LetterboxdImporter(Task):
site = SiteManager.get_site_by_url(f"{site.url}/season/1")
if not site:
return None
site.get_resource_ready()
item = site.get_item()
return item
try:
site.get_resource_ready()
return site.get_item()
except:
imdb_url = str(iu[0]) # type:ignore
logger.warning(
f"Fetching {url}: TMDB {site.url} failed, try IMDB {imdb_url}"
)
site = SiteManager.get_site_by_url(imdb_url)
if not site:
return None
site.get_resource_ready()
return site.get_item()
except Exception as e:
logger.error(f"Unable to parse {url} {e}")
logger.error(f"Fetching {url}: error {e}")
def mark(self, url, shelf_type, date, rating=None, text=None, tags=None):
item = self.get_item_by_url(url)

View file

@ -173,7 +173,7 @@ def import_douban(request):
int(request.POST.get("import_mode", 0)),
)
if importer.import_from_file(request.FILES["file"]):
messages.add_message(request, messages.INFO, _("文件上传成功,等待后台导入。"))
messages.add_message(request, messages.INFO, _("文件上传,等待后台导入。"))
else:
messages.add_message(request, messages.ERROR, _("无法识别文件。"))
return redirect(reverse("users:data"))
@ -196,7 +196,7 @@ def import_letterboxd(request):
visibility=int(request.POST.get("visibility", 0)),
file=f,
)
messages.add_message(request, messages.INFO, _("文件上传成功,等待后台导入。"))
messages.add_message(request, messages.INFO, _("文件上传,等待后台导入。"))
return redirect(reverse("users:data"))
@ -209,7 +209,7 @@ def import_opml(request):
int(request.POST.get("import_mode", 0)),
)
if importer.import_from_file(request.FILES["file"]):
messages.add_message(request, messages.INFO, _("文件上传成功,等待后台导入。"))
messages.add_message(request, messages.INFO, _("文件上传,等待后台导入。"))
else:
messages.add_message(request, messages.ERROR, _("无法识别文件。"))
return redirect(reverse("users:data"))

View file

@ -1,6 +1,4 @@
import pprint
from datetime import timedelta
from time import sleep
from django.utils import timezone
from loguru import logger

View file

@ -1,4 +1,3 @@
import hashlib
import re
from datetime import timedelta
from functools import cached_property
@ -10,7 +9,6 @@ from django.core.exceptions import ValidationError
from django.db import models
from django.db.models import F, Manager, Q, Value
from django.db.models.functions import Concat, Lower
from django.templatetags.static import static
from django.urls import reverse
from django.utils import timezone
from django.utils.deconstruct import deconstructible

View file

@ -1,9 +1,4 @@
from datetime import timedelta
from django.conf import settings
from django.utils import timezone
from loguru import logger
from tqdm import tqdm
from .models import User

View file

@ -147,13 +147,15 @@
</p>
<input type="submit" value="{% trans '导入' %}" />
<small>
导入时仅更新正向变化(未标->想看->已看)标记不足360字符的评论会作为短评。
导入时仅更新正向变化(未标->想看->已看)标记不足360字符的评论会作为短评添加
{% if letterboxd_task %}
<br>
最近导入于{{ letterboxd_task.created_time }},状态:{{ letterboxd_task.get_state_display }}。
<br>
{{ letterboxd_task.message }}
{% if letterboxd_task.metadata.failed_urls %}
导入失败的链接通常由于Letterboxd的信息错误请手工添加标记
<br>
<textarea readonly>{% for url in letterboxd_task.metadata.failed_urls %}{{url}}&#10;{% endfor %}</textarea>
{% endif %}
{% endif %}