✨ Support pages
This commit is contained in:
parent
b15e8a5997
commit
3a39e9ecba
2 changed files with 22 additions and 10 deletions
|
@ -16,7 +16,9 @@ class Manager:
|
||||||
def get_info_worker(self):
|
def get_info_worker(self):
|
||||||
while not self.queue.empty():
|
while not self.queue.empty():
|
||||||
video: Video = self.queue.get()
|
video: Video = self.queue.get()
|
||||||
video.get_info()
|
idx = self.video_list.index(video)
|
||||||
|
plist = video.get_info()
|
||||||
|
self.video_list = self.video_list[:idx] + plist + self.video_list[idx + 1 :]
|
||||||
sleep(1)
|
sleep(1)
|
||||||
|
|
||||||
def add_videos_by_number(self, video_numbers: list[str]):
|
def add_videos_by_number(self, video_numbers: list[str]):
|
||||||
|
|
|
@ -1,7 +1,11 @@
|
||||||
from .exceptions import *
|
from copy import deepcopy
|
||||||
from bilibili_api import video, sync
|
|
||||||
from httpx import stream
|
|
||||||
from os import PathLike
|
from os import PathLike
|
||||||
|
from typing import Self
|
||||||
|
|
||||||
|
from bilibili_api import sync, video
|
||||||
|
from httpx import stream
|
||||||
|
|
||||||
|
from .exceptions import *
|
||||||
|
|
||||||
HEADERS = {
|
HEADERS = {
|
||||||
"User-Agent": "Mozilla/5.0 (X11; Linux x86_64; rv:109.0) Gecko/20100101 Firefox/110.0",
|
"User-Agent": "Mozilla/5.0 (X11; Linux x86_64; rv:109.0) Gecko/20100101 Firefox/110.0",
|
||||||
|
@ -10,10 +14,11 @@ HEADERS = {
|
||||||
|
|
||||||
|
|
||||||
class Video:
|
class Video:
|
||||||
def __init__(self, video_number: str):
|
def __init__(self, video_number: str, page: int = 0):
|
||||||
self.title = None
|
self.title = None
|
||||||
self.received_bytes = 0
|
self.received_bytes = 0
|
||||||
self.length = 0
|
self.length = 0
|
||||||
|
self.page = page
|
||||||
video_number = video_number.strip()
|
video_number = video_number.strip()
|
||||||
if len(video_number) <= 2:
|
if len(video_number) <= 2:
|
||||||
raise InvalidVideoNumberException(
|
raise InvalidVideoNumberException(
|
||||||
|
@ -34,17 +39,22 @@ class Video:
|
||||||
self.number = "BV" + video_number[2:]
|
self.number = "BV" + video_number[2:]
|
||||||
self.v = video.Video(bvid=self.number)
|
self.v = video.Video(bvid=self.number)
|
||||||
|
|
||||||
def get_info(self):
|
def get_info(self) -> list[Self]:
|
||||||
try:
|
try:
|
||||||
info = sync(self.v.get_info())
|
info = sync(self.v.get_pages())
|
||||||
print(sync(self.v.get_pages()))
|
|
||||||
except:
|
except:
|
||||||
raise BiliBiliAPIException("Error happens with bilibili-api-python.")
|
raise BiliBiliAPIException("Error happens with bilibili-api-python.")
|
||||||
self.title = info["title"]
|
result = []
|
||||||
|
for i in info:
|
||||||
|
v = deepcopy(self)
|
||||||
|
v.title = i["part"]
|
||||||
|
v.page = i["page"] - 1
|
||||||
|
result.append(v)
|
||||||
|
return result
|
||||||
|
|
||||||
def get_url(self):
|
def get_url(self):
|
||||||
try:
|
try:
|
||||||
download_url_data = sync(self.v.get_download_url(0))
|
download_url_data = sync(self.v.get_download_url(self.page))
|
||||||
detecter = video.VideoDownloadURLDataDetecter(data=download_url_data)
|
detecter = video.VideoDownloadURLDataDetecter(data=download_url_data)
|
||||||
streams = detecter.detect_best_streams()
|
streams = detecter.detect_best_streams()
|
||||||
except:
|
except:
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue