mirror of
https://github.com/JoeanAmier/XHS-Downloader.git
synced 2026-03-22 06:57:16 +08:00
@@ -66,6 +66,7 @@ class XHS:
|
||||
LINK = compile(r"https?://www\.xiaohongshu\.com/explore/\S+")
|
||||
SHARE = compile(r"https?://www\.xiaohongshu\.com/discovery/item/\S+")
|
||||
SHORT = compile(r"https?://xhslink\.com/\S+")
|
||||
ID = compile(r"(?:explore|item)/(\S+)?\?")
|
||||
__INSTANCE = None
|
||||
CLEANER = Cleaner()
|
||||
|
||||
@@ -191,7 +192,7 @@ class XHS:
|
||||
data=True,
|
||||
) -> list[dict]:
|
||||
# return # 调试代码
|
||||
urls = await self.__extract_links(url, log)
|
||||
urls = await self.extract_links(url, log)
|
||||
if not urls:
|
||||
logging(log, _("提取小红书作品链接失败"), WARNING)
|
||||
else:
|
||||
@@ -209,13 +210,13 @@ class XHS:
|
||||
bar=None,
|
||||
data=False,
|
||||
) -> None:
|
||||
url = await self.__extract_links(url, log)
|
||||
url = await self.extract_links(url, log)
|
||||
if not url:
|
||||
logging(log, _("提取小红书作品链接失败"), WARNING)
|
||||
else:
|
||||
await self.__deal_extract(url[0], download, index, log, bar, data, )
|
||||
|
||||
async def __extract_links(self, url: str, log) -> list:
|
||||
async def extract_links(self, url: str, log) -> list:
|
||||
urls = []
|
||||
for i in url.split():
|
||||
if u := self.SHORT.search(i):
|
||||
@@ -230,6 +231,13 @@ class XHS:
|
||||
urls.append(u.group())
|
||||
return urls
|
||||
|
||||
def extract_id(self, links: list[str]) -> list[str]:
|
||||
ids = []
|
||||
for i in links:
|
||||
if j := self.ID.search(i):
|
||||
ids.append(j.group(1))
|
||||
return ids
|
||||
|
||||
async def __deal_extract(
|
||||
self,
|
||||
url: str,
|
||||
@@ -335,7 +343,7 @@ class XHS:
|
||||
self.stop_monitor()
|
||||
elif t != self.clipboard_cache:
|
||||
self.clipboard_cache = t
|
||||
[await self.queue.put(i) for i in await self.__extract_links(t, None)]
|
||||
[await self.queue.put(i) for i in await self.extract_links(t, None)]
|
||||
await sleep(delay)
|
||||
|
||||
async def __receive_link(self, delay: int, *args, **kwargs):
|
||||
@@ -439,7 +447,7 @@ class XHS:
|
||||
|
||||
@self.server.post("/xhs/", response_model=ExtractData, )
|
||||
async def handle(extract: ExtractParams):
|
||||
url = await self.__extract_links(extract.url, None)
|
||||
url = await self.extract_links(extract.url, None)
|
||||
if not url:
|
||||
msg = _("提取小红书作品链接失败")
|
||||
data = None
|
||||
|
||||
Reference in New Issue
Block a user