Compare commits

..

9 Commits

Author SHA1 Message Date
9779d82ad7 video hls url quality 누락시 720p 고정 2022-04-14 23:06:34 +09:00
1bebd593f7 IndexError 2022-04-13 15:19:20 +09:00
62356738bb IndexError 2022-04-13 15:18:08 +09:00
4da03ab7ff blueprint add static_folder 2022-04-12 23:58:58 +09:00
0ad6c9c59a blueprint add static_folder 2022-04-12 23:57:13 +09:00
bfb7436b07 linkkf-yommi 기능 추가및 버그 픽스 3.
infinite 루틴 에러 수정
2022-04-10 20:56:42 +09:00
c091ce916a linkkf-yommi 기능 추가및 버그 픽스 2.
infinite 루틴 에러 수정
2022-04-10 19:58:05 +09:00
602b39d9bf linkkf-yommi 기능 추가및 버그 픽스
infinite 루틴 에러 수정
2022-04-10 15:28:07 +09:00
88d0a8ff05 anime-downloader bug fix 21.
add search routine
check download fix
2022-04-10 14:24:49 +09:00
6 changed files with 153 additions and 37 deletions

View File

@@ -130,11 +130,14 @@ class LogicOhli24(LogicModuleBase):
if sub == "analysis":
# code = req.form['code']
code = request.form["code"]
wr_id = request.form.get("wr_id", None)
bo_table = request.form.get("bo_table", None)
data = []
# print(code)
# logger.info("code::: %s", code)
P.ModelSetting.set("ohli24_current_code", code)
data = self.get_series_info(code)
data = self.get_series_info(code, wr_id, bo_table)
self.current_data = data
return jsonify({"ret": "success", "data": data, "code": code})
elif sub == "anime_list":
@@ -142,6 +145,18 @@ class LogicOhli24(LogicModuleBase):
cate = request.form["type"]
page = request.form["page"]
data = self.get_anime_info(cate, page)
# self.current_data = data
return jsonify(
{"ret": "success", "cate": cate, "page": page, "data": data}
)
elif sub == "complete_list":
data = []
cate = request.form["type"]
logger.debug("cate", cate)
page = request.form["page"]
data = self.get_anime_info(cate, page)
# self.current_data = data
return jsonify(
@@ -208,9 +223,9 @@ class LogicOhli24(LogicModuleBase):
P.ModelSetting.get_int("ohli24_max_ffmpeg_process_count")
)
def get_series_info(self, code):
def get_series_info(self, code, wr_id, bo_table):
code_type = "c"
# _code = None
try:
if (
self.current_data is not None
@@ -242,7 +257,22 @@ class LogicOhli24(LogicModuleBase):
url = P.ModelSetting.get("ohli24_url") + "/e/" + code
else:
url = P.ModelSetting.get("ohli24_url") + "/e/" + code
if wr_id is not None:
# print(len(wr_id))
if len(wr_id) > 0:
url = (
P.ModelSetting.get("ohli24_url")
+ "/bbs/board.php?bo_table="
+ bo_table
+ "&wr_id="
+ wr_id
)
else:
pass
logger.debug("url:::> %s", url)
# self.current_headers = { 'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7)
# AppleWebKit/537.36 (KHTML, like Gecko) ' 'Chrome/96.0.4664.110 Whale/3.12.129.46 Safari/537.36',
# 'Referer': url }
@@ -265,6 +295,7 @@ class LogicOhli24(LogicModuleBase):
"_grade",
"_total_chapter",
"_show_time",
"_release_year",
]
description_dict = {
"원제": "_otit",
@@ -281,6 +312,7 @@ class LogicOhli24(LogicModuleBase):
"등급": "_grade",
"총화수": "_total_chapter",
"상영시간": "_show_time",
"개봉년도": "_release_year",
}
list_body_li = tree.xpath('//ul[@class="list-body"]/li')
@@ -320,7 +352,10 @@ class LogicOhli24(LogicModuleBase):
span = item.xpath(".//span//text()")
logger.info(span)
key = description_dict[span[0]]
des[key] = item.xpath(".//span/text()")[1]
try:
des[key] = item.xpath(".//span/text()")[1]
except IndexError:
des[key] = ""
logger.info(f"des::>> {des}")
image = image.replace("..", P.ModelSetting.get("ohli24_url"))
@@ -391,7 +426,9 @@ class LogicOhli24(LogicModuleBase):
entity = {}
entity["link"] = item.xpath(".//a/@href")[0]
entity["code"] = entity["link"].split("/")[-1]
entity["title"] = item.xpath(".//div[@class='post-title']/text()")[0]
entity["title"] = item.xpath(".//div[@class='post-title']/text()")[
0
].strip()
entity["image_link"] = item.xpath(".//div[@class='img-item']/img/@src")[
0
].replace("..", P.ModelSetting.get("ohli24_url"))
@@ -623,7 +660,7 @@ class Ohli24QueueEntity(FfmpegQueueEntity):
# logger.info('match groups:: %s', match.groups())
# logger.info('match group3:: %s', match.group(3))
# print('packed_script==>', packed_script)
logger.debug(unpack_script)
# logger.debug(unpack_script)
p1 = re.compile(r"(\"tracks\".*\])\,\"captions\"", re.MULTILINE | re.DOTALL)
m2 = re.search(
@@ -685,8 +722,10 @@ class Ohli24QueueEntity(FfmpegQueueEntity):
self.url = stream_info[1].strip()
match = re.compile(r'NAME="(?P<quality>.*?)"').search(stream_info[0])
self.quality = match.group("quality")
logger.info(self.quality)
self.quality = "720P"
if match is not None:
self.quality = match.group("quality")
logger.info(self.quality)
match = re.compile(
r"(?P<title>.*?)\s*((?P<season>\d+)%s)?\s*((?P<epi_no>\d+)%s)"

View File

@@ -6,8 +6,10 @@
# @Software: PyCharm
import os, traceback
# third-party
from flask import Blueprint
# sjva 공용
from framework.logger import get_logger
from framework import app, path_data
@@ -17,56 +19,71 @@ from plugin import get_model_setting, Logic, default_route, PluginUtil
#######################################################################
class P(object):
package_name = __name__.split('.')[0]
package_name = __name__.split(".")[0]
logger = get_logger(package_name)
blueprint = Blueprint(package_name, package_name, url_prefix='/%s' % package_name,
template_folder=os.path.join(os.path.dirname(__file__), 'templates'))
blueprint = Blueprint(
package_name,
package_name,
url_prefix="/%s" % package_name,
template_folder=os.path.join(os.path.dirname(__file__), "templates"),
static_folder="static",
)
menu = {
'main': [package_name, u'애니 다운로드'],
'sub': [
['ohli24', u'OHLI24'], ['linkkf', u'LINKKF'], ['log', u'로그']
],
'category': 'vod',
'sub2': {
'ohli24': [
['setting', u'설정'], ['request', u'요청'], ['queue', u''], ['category', u'분류'], ['list', u'목록']
"main": [package_name, "애니 다운로드"],
"sub": [["ohli24", "OHLI24"], ["linkkf", "LINKKF"], ["log", "로그"]],
"category": "vod",
"sub2": {
"ohli24": [
["setting", "설정"],
["request", "요청"],
["queue", ""],
["category", "분류"],
["list", "목록"],
],
'linkkf': [
['setting', u'설정'], ['request', u'요청'], ['queue', u''], ['list', u'목록']
"linkkf": [
["setting", "설정"],
["request", "요청"],
["queue", ""],
["list", "목록"],
],
}
},
}
plugin_info = {
'version': '0.1.1.0',
'name': 'anime_downloader',
'category_name': 'vod',
'icon': '',
'developer': 'soju6jan && projectdx',
'description': u'비디오 다운로드',
'home': 'http://yommi.duckdns.org:20080/projectdx/anime-downloader',
'more': '',
"version": "0.1.1.0",
"name": "anime_downloader",
"category_name": "vod",
"icon": "",
"developer": "soju6jan && projectdx",
"description": "비디오 다운로드",
"home": "http://yommi.duckdns.org:20080/projectdx/anime-downloader",
"more": "",
}
ModelSetting = get_model_setting(package_name, logger)
logic = None
module_list = None
home_module = 'ohli24'
home_module = "ohli24"
# 초기화 함수
def initialize():
try:
app.config['SQLALCHEMY_BINDS'][P.package_name] = 'sqlite:///%s' % (
os.path.join(path_data, 'db', '{package_name}.db'.format(package_name=P.package_name)))
app.config["SQLALCHEMY_BINDS"][P.package_name] = "sqlite:///%s" % (
os.path.join(
path_data, "db", "{package_name}.db".format(package_name=P.package_name)
)
)
PluginUtil.make_info_json(P.plugin_info, __file__)
from .logic_ohli24 import LogicOhli24
from .logic_linkkf import LogicLinkkf
# P.module_list = [LogicOhli24(P), LogicLinkkf(P)]
P.module_list = [LogicOhli24(P)]
P.logic = Logic(P)
default_route(P)
except Exception as e:
P.logger.error('Exception:%s', e)
P.logger.error("Exception:%s", e)
P.logger.error(traceback.format_exc())

View File

@@ -0,0 +1,23 @@
<?xml version="1.0" encoding="utf-8"?>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" style="margin: auto; background: rgb(241, 242, 243); display: block; shape-rendering: auto;" width="200px" height="200px" viewBox="0 0 100 100" preserveAspectRatio="xMidYMid">
<g transform="translate(27.166666666666664,27.166666666666664)">
<rect x="-18.5" y="-18.5" width="37" height="37" fill="#85a2b6">
<animateTransform attributeName="transform" type="scale" repeatCount="indefinite" dur="1s" keyTimes="0;1" values="1.1;1" begin="-0.3s"></animateTransform>
</rect>
</g>
<g transform="translate(72.83333333333333,27.166666666666664)">
<rect x="-18.5" y="-18.5" width="37" height="37" fill="#bbcedd">
<animateTransform attributeName="transform" type="scale" repeatCount="indefinite" dur="1s" keyTimes="0;1" values="1.1;1" begin="-0.2s"></animateTransform>
</rect>
</g>
<g transform="translate(27.166666666666664,72.83333333333333)">
<rect x="-18.5" y="-18.5" width="37" height="37" fill="#dce4eb">
<animateTransform attributeName="transform" type="scale" repeatCount="indefinite" dur="1s" keyTimes="0;1" values="1.1;1" begin="0s"></animateTransform>
</rect>
</g>
<g transform="translate(72.83333333333333,72.83333333333333)">
<rect x="-18.5" y="-18.5" width="37" height="37" fill="#fdfdfd">
<animateTransform attributeName="transform" type="scale" repeatCount="indefinite" dur="1s" keyTimes="0;1" values="1.1;1" begin="-0.1s"></animateTransform>
</rect>
</g>
<!-- [ldio] generated by https://loading.io/ --></svg>

After

Width:  |  Height:  |  Size: 1.5 KiB

View File

@@ -0,0 +1,23 @@
<?xml version="1.0" encoding="utf-8"?>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" style="margin: auto; background: rgb(241, 242, 243); display: block; shape-rendering: auto;" width="200px" height="200px" viewBox="0 0 100 100" preserveAspectRatio="xMidYMid">
<g transform="translate(27.166666666666664,27.166666666666664)">
<rect x="-18.5" y="-18.5" width="37" height="37" fill="#85a2b6">
<animateTransform attributeName="transform" type="scale" repeatCount="indefinite" dur="1s" keyTimes="0;1" values="1.1;1" begin="-0.3s"></animateTransform>
</rect>
</g>
<g transform="translate(72.83333333333333,27.166666666666664)">
<rect x="-18.5" y="-18.5" width="37" height="37" fill="#bbcedd">
<animateTransform attributeName="transform" type="scale" repeatCount="indefinite" dur="1s" keyTimes="0;1" values="1.1;1" begin="-0.2s"></animateTransform>
</rect>
</g>
<g transform="translate(27.166666666666664,72.83333333333333)">
<rect x="-18.5" y="-18.5" width="37" height="37" fill="#dce4eb">
<animateTransform attributeName="transform" type="scale" repeatCount="indefinite" dur="1s" keyTimes="0;1" values="1.1;1" begin="0s"></animateTransform>
</rect>
</g>
<g transform="translate(72.83333333333333,72.83333333333333)">
<rect x="-18.5" y="-18.5" width="37" height="37" fill="#fdfdfd">
<animateTransform attributeName="transform" type="scale" repeatCount="indefinite" dur="1s" keyTimes="0;1" values="1.1;1" begin="-0.1s"></animateTransform>
</rect>
</g>
<!-- [ldio] generated by https://loading.io/ --></svg>

After

Width:  |  Height:  |  Size: 1.5 KiB

View File

@@ -48,6 +48,7 @@
type="text/javascript"
src="https://cdn.jsdelivr.net/npm/lozad/dist/lozad.min.js"
></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery.lazyload/1.9.1/jquery.lazyload.min.js" integrity="sha512-jNDtFf7qgU0eH/+Z42FG4fw3w7DM/9zbgNPe3wfJlCylVDTT3IgKW5r92Vy9IHa6U50vyMz5gRByIu4YIXFtaQ==" crossorigin="anonymous" referrerpolicy="no-referrer"></script>
<script type="text/javascript">
const package_name = "{{arg['package_name'] }}";
const sub = "{{arg['sub'] }}";
@@ -134,9 +135,10 @@
tmp = '<div class="col-6 col-sm-4 col-md-3">';
tmp += '<div class="card">';
tmp += '<img class="lozad" data-src="' + data.anime_list[i].image_link + '" />';
// tmp += '<img class="lozad" data-src="' + data.anime_list[i].image_link + '" />';
tmp += '<img class="lazyload" src="../static/img_loader_x200.svg" data-original="' + data.anime_list[i].image_link + '" />';
tmp += '<div class="card-body">'
{#tmp += '<button id="code_button" data-code="' + data.episode[i].code + '" type="button" class="btn btn-primary code-button bootstrap-tooltip" data-toggle="button" data-tooltip="true" aria-pressed="true" autocomplete="off" data-placement="top">' +#}
// {#tmp += '<button id="code_button" data-code="' + data.episode[i].code + '" type="button" class="btn btn-primary code-button bootstrap-tooltip" data-toggle="button" data-tooltip="true" aria-pressed="true" autocomplete="off" data-placement="top">' +#}
// {# '<span data-tooltip-text="'+data.episode[i].title+'">' + data.episode[i].code + '</span></button></div>';#}
tmp += '<h5 class="card-title">' + data.anime_list[i].title + '</h5>';
tmp += '<p class="card-text">' + data.anime_list[i].code + '</p>';
@@ -165,6 +167,11 @@
}
$("img.lazyload").lazyload({
threshold : 10,
effect : "fadeIn",
});
}
function make_search_result_list(data, page) {
@@ -261,6 +268,11 @@
document.getElementById("screen_movie_list").innerHTML = str;
}
$("img.lazyload").lazyload({
threshold : 10,
effect : "fadeIn",
});
}
@@ -444,6 +456,7 @@
console.log("return page:::> ", response.page);
// {#page = response.page#}
make_screen_movie_list(response.data, response.page);
page++;
next_page++;
})

View File

@@ -210,6 +210,7 @@
data: {data:JSON.stringify(data)},
dataType: "json",
success: function (data) {
console.log('#add_queue_btn::data >>', data)
if (data.ret == 'enqueue_db_append' || data.ret == 'enqueue_db_exist') {
$.notify('<strong>다운로드 작업을 추가 하였습니다.</strong>', {type: 'success'});
} else if (data.ret == 'queue_exist') {