Compare commits
2 commits
596dd38cc0
...
fc02d37afe
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
fc02d37afe | ||
|
|
99d7ab7387 |
1 changed files with 38 additions and 29 deletions
|
|
@ -12,6 +12,7 @@ from datetime import datetime
|
|||
from pathlib import Path
|
||||
|
||||
sys.path.insert(0, os.path.dirname(__file__))
|
||||
sys.path.insert(0, '/opt')
|
||||
|
||||
from flask import Flask, jsonify, render_template_string, request
|
||||
from tools import savetv
|
||||
|
|
@ -46,13 +47,13 @@ HTML = r"""<!DOCTYPE html>
|
|||
<style>
|
||||
@import url('https://fonts.googleapis.com/css2?family=Syne:wght@400;700;800&family=JetBrains+Mono:wght@400;600&display=swap');
|
||||
:root {
|
||||
--bg: #0a0a0f;
|
||||
--surface: #12121a;
|
||||
--border: #1e1e2e;
|
||||
--bg: #0e0e14;
|
||||
--surface: #16161e;
|
||||
--border: #2a2a3a;
|
||||
--accent: #e8421a;
|
||||
--accent2: #ff7043;
|
||||
--text: #e8e8f0;
|
||||
--muted: #6b6b8a;
|
||||
--text: #f0f0f5;
|
||||
--muted: #9999b0;
|
||||
--urgent: #ff3d3d;
|
||||
--kino: #4caf92;
|
||||
--tv: #5a7fa8;
|
||||
|
|
@ -61,8 +62,9 @@ HTML = r"""<!DOCTYPE html>
|
|||
body {
|
||||
background: var(--bg);
|
||||
color: var(--text);
|
||||
font-family: 'JetBrains Mono', monospace;
|
||||
font-size: 13px;
|
||||
font-family: system-ui, -apple-system, sans-serif;
|
||||
font-size: 16px;
|
||||
line-height: 1.6;
|
||||
min-height: 100vh;
|
||||
}
|
||||
header {
|
||||
|
|
@ -79,11 +81,11 @@ HTML = r"""<!DOCTYPE html>
|
|||
.logo {
|
||||
font-family: 'Syne', sans-serif;
|
||||
font-weight: 800;
|
||||
font-size: 20px;
|
||||
font-size: 24px;
|
||||
letter-spacing: -0.5px;
|
||||
}
|
||||
.logo span { color: var(--accent); }
|
||||
.stats { color: var(--muted); font-size: 12px; }
|
||||
.stats { color: var(--muted); font-size: 14px; }
|
||||
main { max-width: 1100px; margin: 0 auto; padding: 28px 20px; }
|
||||
.section-header {
|
||||
display: flex;
|
||||
|
|
@ -92,15 +94,15 @@ HTML = r"""<!DOCTYPE html>
|
|||
margin: 32px 0 14px;
|
||||
font-family: 'Syne', sans-serif;
|
||||
font-weight: 700;
|
||||
font-size: 15px;
|
||||
font-size: 17px;
|
||||
text-transform: uppercase;
|
||||
letter-spacing: 1.5px;
|
||||
}
|
||||
.badge {
|
||||
padding: 2px 8px;
|
||||
padding: 3px 10px;
|
||||
border-radius: 3px;
|
||||
font-size: 11px;
|
||||
font-family: 'JetBrains Mono', monospace;
|
||||
font-size: 13px;
|
||||
font-family: system-ui, sans-serif;
|
||||
font-weight: 600;
|
||||
}
|
||||
.badge-urgent { background: var(--urgent); color: #fff; }
|
||||
|
|
@ -115,7 +117,7 @@ HTML = r"""<!DOCTYPE html>
|
|||
background: var(--surface);
|
||||
border: 1px solid var(--border);
|
||||
border-radius: 6px;
|
||||
padding: 14px 16px;
|
||||
padding: 18px 20px;
|
||||
cursor: pointer;
|
||||
transition: border-color .15s, background .15s;
|
||||
position: relative;
|
||||
|
|
@ -132,22 +134,22 @@ HTML = r"""<!DOCTYPE html>
|
|||
.film-title {
|
||||
font-family: 'Syne', sans-serif;
|
||||
font-weight: 700;
|
||||
font-size: 14px;
|
||||
line-height: 1.3;
|
||||
margin-bottom: 6px;
|
||||
font-size: 17px;
|
||||
line-height: 1.4;
|
||||
margin-bottom: 8px;
|
||||
}
|
||||
.film-meta {
|
||||
color: var(--muted);
|
||||
font-size: 11px;
|
||||
font-size: 14px;
|
||||
display: flex;
|
||||
gap: 10px;
|
||||
flex-wrap: wrap;
|
||||
align-items: center;
|
||||
}
|
||||
.days-badge {
|
||||
font-size: 10px;
|
||||
font-size: 12px;
|
||||
font-weight: 600;
|
||||
padding: 1px 6px;
|
||||
padding: 3px 8px;
|
||||
border-radius: 2px;
|
||||
margin-left: auto;
|
||||
}
|
||||
|
|
@ -163,8 +165,8 @@ HTML = r"""<!DOCTYPE html>
|
|||
position: absolute;
|
||||
top: 12px;
|
||||
right: 12px;
|
||||
width: 18px;
|
||||
height: 18px;
|
||||
width: 22px;
|
||||
height: 22px;
|
||||
border: 2px solid var(--border);
|
||||
border-radius: 3px;
|
||||
display: flex;
|
||||
|
|
@ -192,7 +194,7 @@ HTML = r"""<!DOCTYPE html>
|
|||
.selected-count {
|
||||
font-family: 'Syne', sans-serif;
|
||||
font-weight: 700;
|
||||
font-size: 15px;
|
||||
font-size: 17px;
|
||||
}
|
||||
.selected-count span { color: var(--accent); }
|
||||
.btn {
|
||||
|
|
@ -201,7 +203,7 @@ HTML = r"""<!DOCTYPE html>
|
|||
border-radius: 4px;
|
||||
font-family: 'Syne', sans-serif;
|
||||
font-weight: 700;
|
||||
font-size: 13px;
|
||||
font-size: 15px;
|
||||
cursor: pointer;
|
||||
transition: opacity .15s;
|
||||
text-transform: uppercase;
|
||||
|
|
@ -260,8 +262,8 @@ HTML = r"""<!DOCTYPE html>
|
|||
background: transparent;
|
||||
color: var(--muted);
|
||||
cursor: pointer;
|
||||
font-family: 'JetBrains Mono', monospace;
|
||||
font-size: 11px;
|
||||
font-family: system-ui, sans-serif;
|
||||
font-size: 14px;
|
||||
transition: all .15s;
|
||||
}
|
||||
.filter-btn.active { border-color: var(--accent); color: var(--text); background: #1a0d0a; }
|
||||
|
|
@ -271,15 +273,15 @@ HTML = r"""<!DOCTYPE html>
|
|||
border: 1px solid var(--border);
|
||||
color: var(--text);
|
||||
border-radius: 3px;
|
||||
font-family: 'JetBrains Mono', monospace;
|
||||
font-size: 12px;
|
||||
font-family: system-ui, sans-serif;
|
||||
font-size: 15px;
|
||||
outline: none;
|
||||
width: 220px;
|
||||
transition: border-color .15s;
|
||||
}
|
||||
.search-input:focus { border-color: var(--accent); }
|
||||
.dl-status {
|
||||
font-size: 11px;
|
||||
font-size: 14px;
|
||||
color: #ffa726;
|
||||
margin-top: 4px;
|
||||
}
|
||||
|
|
@ -585,5 +587,12 @@ def api_download():
|
|||
return jsonify({"results": results})
|
||||
|
||||
|
||||
# Extra-Routes (Downloads, Status, Health) - lokal in /opt/savetv_extra_routes.py
|
||||
try:
|
||||
from savetv_extra_routes import register_extra_routes
|
||||
register_extra_routes(app)
|
||||
except ImportError:
|
||||
pass
|
||||
|
||||
if __name__ == "__main__":
|
||||
app.run(host="0.0.0.0", port=8765, debug=False)
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue