Update: Ohli24 Queue fixes & Zendriver Daemon stability improvement
This commit is contained in:
@@ -3,7 +3,7 @@
|
||||
<link rel="stylesheet" href="{{ url_for('.static', filename='css/' ~ arg['sub'] ~ '.css') }}"/>
|
||||
|
||||
<!--<div id="preloader"></div>-->
|
||||
<div id="anime_downloader_wrapper" class="content-cloak">
|
||||
<div id="linkkf_search_wrapper" class="container-fluid mt-4 mx-auto content-cloak" style="max-width: 100%; padding-left: 5px; padding-right: 5px;">
|
||||
<div id="preloader" class="loader">
|
||||
<div class="loader-inner">
|
||||
<div class="loader-line-wrap">
|
||||
@@ -1147,46 +1147,8 @@
|
||||
color: #fff;
|
||||
}
|
||||
|
||||
/* Navigation Menu Override */
|
||||
ul.nav.nav-pills.bg-light {
|
||||
background-color: rgba(30, 41, 59, 0.6) !important;
|
||||
backdrop-filter: blur(10px);
|
||||
border: 1px solid rgba(255, 255, 255, 0.08);
|
||||
border-radius: 50rem !important;
|
||||
padding: 6px !important;
|
||||
box-shadow: 0 4px 20px rgba(0, 0, 0, 0.2) !important;
|
||||
display: inline-flex !important;
|
||||
flex-wrap: wrap;
|
||||
justify-content: center;
|
||||
width: auto !important;
|
||||
margin-bottom: 20px;
|
||||
}
|
||||
|
||||
ul.nav.nav-pills .nav-item {
|
||||
margin: 0 2px;
|
||||
}
|
||||
|
||||
ul.nav.nav-pills .nav-link {
|
||||
border-radius: 50rem !important;
|
||||
padding: 8px 20px !important;
|
||||
color: #94a3b8 !important;
|
||||
font-weight: 600;
|
||||
transition: all 0.3s ease;
|
||||
}
|
||||
|
||||
ul.nav.nav-pills .nav-link:hover {
|
||||
background-color: rgba(255, 255, 255, 0.1);
|
||||
color: #fff !important;
|
||||
transform: translateY(-1px);
|
||||
}
|
||||
|
||||
ul.nav.nav-pills .nav-link.active {
|
||||
background: linear-gradient(135deg, #3b82f6 0%, #2563eb 100%) !important;
|
||||
color: #fff !important;
|
||||
box-shadow: 0 4px 12px rgba(37, 99, 235, 0.4);
|
||||
}
|
||||
</style>
|
||||
<link href="{{ url_for('.static', filename='css/bootstrap.min.css') }}" type="text/css" rel="stylesheet" />
|
||||
<!-- Removing redundant bootstrap load to prevent navbar height/color overrides -->
|
||||
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap-icons@1.7.1/font/bootstrap-icons.css" />
|
||||
|
||||
<style>
|
||||
@@ -1213,46 +1175,6 @@
|
||||
opacity: 1;
|
||||
transition-delay: 300ms;
|
||||
}
|
||||
|
||||
/* Navigation Menu Override (Top Sub-menu) */
|
||||
ul.nav.nav-pills.bg-light {
|
||||
background-color: rgba(6, 78, 59, 0.6) !important;
|
||||
backdrop-filter: blur(10px);
|
||||
border: 1px solid rgba(16, 185, 129, 0.08);
|
||||
border-radius: 50rem !important;
|
||||
padding: 6px !important;
|
||||
box-shadow: 0 4px 20px rgba(0, 0, 0, 0.2) !important;
|
||||
display: inline-flex !important;
|
||||
flex-wrap: wrap;
|
||||
justify-content: center;
|
||||
width: auto !important;
|
||||
margin-bottom: 20px;
|
||||
}
|
||||
|
||||
ul.nav.nav-pills .nav-item { margin: 0 2px; }
|
||||
ul.nav.nav-pills .nav-link {
|
||||
border-radius: 50rem !important;
|
||||
padding: 8px 20px !important;
|
||||
color: #6ee7b7 !important;
|
||||
font-weight: 600;
|
||||
transition: all 0.3s ease;
|
||||
}
|
||||
ul.nav.nav-pills .nav-link:hover {
|
||||
background-color: rgba(16, 185, 129, 0.1);
|
||||
color: #fff !important;
|
||||
transform: translateY(-1px);
|
||||
}
|
||||
ul.nav.nav-pills .nav-link.active {
|
||||
background: linear-gradient(135deg, #10b981 0%, #059669 100%) !important;
|
||||
color: #fff !important;
|
||||
box-shadow: 0 4px 12px rgba(16, 185, 129, 0.4);
|
||||
}
|
||||
</style>
|
||||
|
||||
<style>
|
||||
/* Smooth Load */
|
||||
.content-cloak, #menu_module_div, #menu_page_div { opacity: 0; transition: opacity 0.5s ease-out; }
|
||||
.content-cloak.visible, #menu_module_div.visible, #menu_page_div.visible { opacity: 1; }
|
||||
</style>
|
||||
|
||||
<script type="text/javascript">
|
||||
|
||||
@@ -276,14 +276,33 @@
|
||||
data: {},
|
||||
dataType: "json",
|
||||
success: function (data) {
|
||||
// 목록 길이 변경 시 전체 다시 그리기
|
||||
if (data.length !== current_list_length) {
|
||||
current_list_length = data.length;
|
||||
make_download_list(data);
|
||||
} else {
|
||||
// 진행률만 업데이트 (전체 다시 그리기 없이)
|
||||
for (var i = 0; i < data.length; i++) {
|
||||
var item = data[i];
|
||||
var progressBar = document.getElementById("progress_" + item.entity_id);
|
||||
if (progressBar) {
|
||||
progressBar.style.width = item.ffmpeg_percent + '%';
|
||||
var label = item.ffmpeg_status_kor;
|
||||
if (item.ffmpeg_percent != 0) label += " (" + item.ffmpeg_percent + "%)";
|
||||
if (item.current_speed) label += " " + item.current_speed;
|
||||
var labelEl = document.getElementById("progress_" + item.entity_id + "_label");
|
||||
if (labelEl) labelEl.innerHTML = label;
|
||||
|
||||
// 상태 클래스 업데이트
|
||||
var statusClass = getStatusClass(item.ffmpeg_status_kor);
|
||||
$(progressBar).removeClass('status-waiting status-downloading status-completed status-failed').addClass(statusClass);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
var hasActive = false;
|
||||
for (var i = 0; i < data.length; i++) {
|
||||
if (data[i].ffmpeg_status_kor === '다운로드중' || data[i].ffmpeg_status_kor === '대기중') {
|
||||
if (data[i].ffmpeg_status_kor === '다운로드중' || data[i].ffmpeg_status_kor === '대기중' || data[i].ffmpeg_status_kor === '추출중') {
|
||||
hasActive = true;
|
||||
break;
|
||||
}
|
||||
@@ -294,7 +313,7 @@
|
||||
refreshIntervalId = null;
|
||||
}
|
||||
if (hasActive && !refreshIntervalId) {
|
||||
refreshIntervalId = setInterval(silentRefresh, 3000);
|
||||
refreshIntervalId = setInterval(silentRefresh, 2000);
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
@@ -396,7 +396,7 @@
|
||||
dataType: "json",
|
||||
success: function (data) {
|
||||
// // console.log('#add_queue_btn::data >>', data)
|
||||
if (data.ret == 'enqueue_db_append' || data.ret == 'enqueue_db_exist') {
|
||||
if (data.ret == 'enqueue_db_append' || data.ret == 'enqueue_db_exist' || data.ret == 'enqueue_gdm_success') {
|
||||
$.notify('<strong>다운로드 작업을 추가 하였습니다.</strong>', {type: 'success'});
|
||||
} else if (data.ret == 'queue_exist') {
|
||||
$.notify('<strong>이미 큐에 있습니다. 삭제 후 추가하세요.</strong>', {type: 'warning'});
|
||||
|
||||
@@ -17,7 +17,7 @@
|
||||
<div id="ajax_loader" class="ajax-loader-container" style="display: none;">
|
||||
<div class="ajax-spinner"></div>
|
||||
</div>
|
||||
<div id="ohli24_search_wrapper" class="ohli24-common-wrapper container-fluid mt-4 content-cloak ohli24-search-page">
|
||||
<div id="ohli24_search_wrapper" class="ohli24-common-wrapper container-fluid content-cloak ohli24-search-page">
|
||||
<!-- Search Section -->
|
||||
<div class="glass-card p-4 mb-4">
|
||||
<div class="ohli24-header">
|
||||
@@ -546,14 +546,14 @@
|
||||
data: {data: JSON.stringify(data)},
|
||||
dataType: "json",
|
||||
success: function (data) {
|
||||
if (data.ret == 'enqueue_db_append' || data.ret == 'enqueue_db_exist') {
|
||||
if (data.ret == 'enqueue_db_append' || data.ret == 'enqueue_db_exist' || data.ret == 'enqueue_gdm_success') {
|
||||
$.notify('<strong>다운로드 작업을 추가 하였습니다.</strong>', {type: 'success'});
|
||||
} else if (data.ret == 'queue_exist') {
|
||||
$.notify('<strong>이미 큐에 있습니다. 삭제 후 추가하세요.</strong>', {type: 'warning'});
|
||||
} else if (data.ret == 'db_completed') {
|
||||
$.notify('<strong>DB에 완료 기록이 있습니다.</strong>', {type: 'warning'});
|
||||
} else {
|
||||
$.notify('<strong>추가 실패</strong><br>' + ret.log, {type: 'warning'});
|
||||
$.notify('<strong>추가 실패</strong><br>' + data.log, {type: 'warning'});
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
@@ -72,6 +72,7 @@
|
||||
{{ macros.setting_checkbox('ohli24_auto_make_season_folder', '시즌 폴더 생성', value=arg['ohli24_auto_make_season_folder'], desc=['On : Season 번호 폴더를 만듭니다.']) }}
|
||||
</div>
|
||||
{{ macros.setting_checkbox('ohli24_uncompleted_auto_enqueue', '자동으로 다시 받기', value=arg['ohli24_uncompleted_auto_enqueue'], desc=['On : 플러그인 로딩시 미완료인 항목은 자동으로 다시 받습니다.']) }}
|
||||
{{ macros.setting_select('ohli24_cache_minutes', 'HTML 캐시 시간', [['0', '캐시 없음'], ['5', '5분'], ['10', '10분'], ['15', '15분'], ['30', '30분'], ['60', '1시간']], value=arg.get('ohli24_cache_minutes', '5'), desc=['브라우징(요청, 검색) 페이지의 HTML을 캐시합니다.', '0으로 설정하면 캐시를 사용하지 않습니다.', '다운로드 루틴은 캐시를 사용하지 않습니다.']) }}
|
||||
{{ macros.m_tab_content_end() }}
|
||||
|
||||
{{ macros.m_tab_content_start('auto', false) }}
|
||||
|
||||
Reference in New Issue
Block a user