anime-downloader bug fix 20.

add search routine
check download fix
This commit is contained in:
2022-04-09 19:37:36 +09:00
parent a797423576
commit 1d9bbbf922
2 changed files with 476 additions and 332 deletions

View File

@@ -15,6 +15,7 @@ import hashlib
import requests
from lxml import html
from urllib import parse
import urllib
# third-party
from flask import request, render_template, jsonify
@@ -146,6 +147,15 @@ class LogicOhli24(LogicModuleBase):
return jsonify(
{"ret": "success", "cate": cate, "page": page, "data": data}
)
elif sub == "search":
data = []
# cate = request.form["type"]
# page = request.form["page"]
query = request.form["query"]
data = self.get_search_result(query)
# self.current_data = data
return jsonify({"ret": "success", "query": query, "data": data})
elif sub == "add_queue":
ret = {}
@@ -394,6 +404,48 @@ class LogicOhli24(LogicModuleBase):
P.logger.error(traceback.format_exc())
return {"ret": "exception", "log": str(e)}
# @staticmethod
def get_search_result(self, query):
try:
_query = urllib.parse.quote(query)
url = (
P.ModelSetting.get("ohli24_url")
+ "/bbs/search.php?srows=24&gr_id=&sfl=wr_subject&stx="
+ _query
)
logger.info("url:::> %s", url)
data = {}
response_data = LogicOhli24.get_html(url, timeout=10)
tree = html.fromstring(response_data)
tmp_items = tree.xpath('//div[@class="list-row"]')
data["anime_count"] = len(tmp_items)
data["anime_list"] = []
for item in tmp_items:
entity = {}
entity["link"] = item.xpath(".//a/@href")[0]
# entity["code"] = entity["link"].split("/")[-1]
entity["wr_id"] = entity["link"].split("=")[-1]
# logger.debug(item.xpath(".//div[@class='post-title']/text()").join())
entity["title"] = "".join(
item.xpath(".//div[@class='post-title']/text()")
).strip()
entity["image_link"] = item.xpath(".//div[@class='img-item']/img/@src")[
0
].replace("..", P.ModelSetting.get("ohli24_url"))
entity["code"] = item.xpath(".//div[@class='img-item']/img/@alt")[0]
data["ret"] = "success"
data["anime_list"].append(entity)
return data
except Exception as e:
P.logger.error("Exception:%s", e)
P.logger.error(traceback.format_exc())
return {"ret": "exception", "log": str(e)}
# @staticmethod
def plugin_load(self):
try: