mirror of
https://github.com/saveweb/biliarchiver.git
synced 2024-09-19 11:05:28 -07:00
feat: 如果 bvids 文件不存在,则将其作为单个 bvid 下载
This commit is contained in:
parent
f1b8019216
commit
2db8aec7e6
@ -1,21 +1,21 @@
|
||||
import asyncio
|
||||
from io import TextIOWrapper
|
||||
import os
|
||||
from pathlib import Path
|
||||
from typing import List, Optional, Union
|
||||
|
||||
from biliarchiver.archive_bvid import archive_bvid
|
||||
from biliarchiver.config import config
|
||||
from bilix.sites.bilibili.downloader import DownloaderBilibili
|
||||
from httpx import AsyncClient, Client, TransportError
|
||||
from rich.traceback import install
|
||||
|
||||
from biliarchiver.archive_bvid import archive_bvid
|
||||
from biliarchiver.config import config
|
||||
from biliarchiver.config import BILIBILI_IDENTIFIER_PERFIX
|
||||
from biliarchiver.utils.http_patch import HttpOnlyCookie_Handler
|
||||
from biliarchiver.utils.version_check import check_outdated_version
|
||||
from biliarchiver.utils.storage import get_free_space
|
||||
from biliarchiver.version import BILI_ARCHIVER_VERSION
|
||||
from biliarchiver.config import BILIBILI_IDENTIFIER_PERFIX
|
||||
from biliarchiver.utils.identifier import human_readable_upper_part_map
|
||||
from biliarchiver.utils.identifier import human_readable_upper_part_map, is_bvid
|
||||
from biliarchiver.utils.ffmpeg import check_ffmpeg
|
||||
from biliarchiver.version import BILI_ARCHIVER_VERSION
|
||||
|
||||
install()
|
||||
|
||||
@ -69,7 +69,26 @@ def _down(
|
||||
):
|
||||
assert check_ffmpeg() is True, "ffmpeg 未安装"
|
||||
|
||||
bvids_from_file = bvids.read().splitlines()
|
||||
bvids_list = None
|
||||
|
||||
if isinstance(bvids, str):
|
||||
bvids = Path(bvids)
|
||||
if isinstance(bvids, list):
|
||||
bvids_list = bvids
|
||||
elif not bvids.exists() and bvids.name.startswith("BV"):
|
||||
if is_bvid(bvids.name):
|
||||
print("你输入的 bvids 不是文件,貌似是单个的 bvid,将直接下载...")
|
||||
bvids_list = [bvids.name]
|
||||
else:
|
||||
raise ValueError(f"你输入的 bvids 不是文件,貌似是单个的 bvid,但是不是合法的 bvid: {bvids.name}")
|
||||
else:
|
||||
with open(bvids, "r", encoding="utf-8") as f:
|
||||
bvids_list = f.read().splitlines()
|
||||
|
||||
assert bvids_list is not None and len(bvids_list) > 0, "bvids 为空"
|
||||
del bvids
|
||||
for bvid in bvids_list:
|
||||
assert is_bvid(bvid), f"bvid {bvid} 不合法"
|
||||
|
||||
check_outdated_version(
|
||||
pypi_project="biliarchiver", self_version=BILI_ARCHIVER_VERSION
|
||||
@ -127,9 +146,9 @@ def _down(
|
||||
task.cancel()
|
||||
raise RuntimeError(f"剩余空间不足 {min_free_space_gb} GiB")
|
||||
|
||||
for index, bvid in enumerate(bvids_from_file):
|
||||
for index, bvid in enumerate(bvids_list):
|
||||
if index < skip_to:
|
||||
print(f"跳过 {bvid} ({index+1}/{len(bvids_from_file)})", end="\r")
|
||||
print(f"跳过 {bvid} ({index+1}/{len(bvids_list)})", end="\r")
|
||||
continue
|
||||
tasks_check()
|
||||
if not skip_ia_check:
|
||||
@ -154,7 +173,7 @@ def _down(
|
||||
)
|
||||
tasks_check()
|
||||
|
||||
print(f"=== {bvid} ({index+1}/{len(bvids_from_file)}) ===")
|
||||
print(f"=== {bvid} ({index+1}/{len(bvids_list)}) ===")
|
||||
|
||||
task = loop.create_task(
|
||||
archive_bvid(d, bvid, logined=logined, semaphore=sem),
|
||||
|
@ -3,7 +3,7 @@ from rich.console import Console
|
||||
|
||||
|
||||
@click.command(help=click.style("从哔哩哔哩下载", fg="cyan"))
|
||||
@click.option("--bvids", type=click.File(), required=True, help="bvids 列表的文件路径")
|
||||
@click.option("--bvids", type=click.Path(exists=False), required=True, help="bvids 列表的文件路径")
|
||||
@click.option(
|
||||
"--skip-ia-check",
|
||||
"-s",
|
||||
|
Loading…
Reference in New Issue
Block a user