Compare commits

..

No commits in common. "fc02d37afe8511380f407e6b15eabb38436d6004" and "596dd38cc036d8190c276d74ffd69abc224a1f29" have entirely different histories.

View file

@ -12,7 +12,6 @@ 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
@ -47,13 +46,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: #0e0e14;
--surface: #16161e;
--border: #2a2a3a;
--bg: #0a0a0f;
--surface: #12121a;
--border: #1e1e2e;
--accent: #e8421a;
--accent2: #ff7043;
--text: #f0f0f5;
--muted: #9999b0;
--text: #e8e8f0;
--muted: #6b6b8a;
--urgent: #ff3d3d;
--kino: #4caf92;
--tv: #5a7fa8;
@ -62,9 +61,8 @@ HTML = r"""<!DOCTYPE html>
body {
background: var(--bg);
color: var(--text);
font-family: system-ui, -apple-system, sans-serif;
font-size: 16px;
line-height: 1.6;
font-family: 'JetBrains Mono', monospace;
font-size: 13px;
min-height: 100vh;
}
header {
@ -81,11 +79,11 @@ HTML = r"""<!DOCTYPE html>
.logo {
font-family: 'Syne', sans-serif;
font-weight: 800;
font-size: 24px;
font-size: 20px;
letter-spacing: -0.5px;
}
.logo span { color: var(--accent); }
.stats { color: var(--muted); font-size: 14px; }
.stats { color: var(--muted); font-size: 12px; }
main { max-width: 1100px; margin: 0 auto; padding: 28px 20px; }
.section-header {
display: flex;
@ -94,15 +92,15 @@ HTML = r"""<!DOCTYPE html>
margin: 32px 0 14px;
font-family: 'Syne', sans-serif;
font-weight: 700;
font-size: 17px;
font-size: 15px;
text-transform: uppercase;
letter-spacing: 1.5px;
}
.badge {
padding: 3px 10px;
padding: 2px 8px;
border-radius: 3px;
font-size: 13px;
font-family: system-ui, sans-serif;
font-size: 11px;
font-family: 'JetBrains Mono', monospace;
font-weight: 600;
}
.badge-urgent { background: var(--urgent); color: #fff; }
@ -117,7 +115,7 @@ HTML = r"""<!DOCTYPE html>
background: var(--surface);
border: 1px solid var(--border);
border-radius: 6px;
padding: 18px 20px;
padding: 14px 16px;
cursor: pointer;
transition: border-color .15s, background .15s;
position: relative;
@ -134,22 +132,22 @@ HTML = r"""<!DOCTYPE html>
.film-title {
font-family: 'Syne', sans-serif;
font-weight: 700;
font-size: 17px;
line-height: 1.4;
margin-bottom: 8px;
font-size: 14px;
line-height: 1.3;
margin-bottom: 6px;
}
.film-meta {
color: var(--muted);
font-size: 14px;
font-size: 11px;
display: flex;
gap: 10px;
flex-wrap: wrap;
align-items: center;
}
.days-badge {
font-size: 12px;
font-size: 10px;
font-weight: 600;
padding: 3px 8px;
padding: 1px 6px;
border-radius: 2px;
margin-left: auto;
}
@ -165,8 +163,8 @@ HTML = r"""<!DOCTYPE html>
position: absolute;
top: 12px;
right: 12px;
width: 22px;
height: 22px;
width: 18px;
height: 18px;
border: 2px solid var(--border);
border-radius: 3px;
display: flex;
@ -194,7 +192,7 @@ HTML = r"""<!DOCTYPE html>
.selected-count {
font-family: 'Syne', sans-serif;
font-weight: 700;
font-size: 17px;
font-size: 15px;
}
.selected-count span { color: var(--accent); }
.btn {
@ -203,7 +201,7 @@ HTML = r"""<!DOCTYPE html>
border-radius: 4px;
font-family: 'Syne', sans-serif;
font-weight: 700;
font-size: 15px;
font-size: 13px;
cursor: pointer;
transition: opacity .15s;
text-transform: uppercase;
@ -262,8 +260,8 @@ HTML = r"""<!DOCTYPE html>
background: transparent;
color: var(--muted);
cursor: pointer;
font-family: system-ui, sans-serif;
font-size: 14px;
font-family: 'JetBrains Mono', monospace;
font-size: 11px;
transition: all .15s;
}
.filter-btn.active { border-color: var(--accent); color: var(--text); background: #1a0d0a; }
@ -273,15 +271,15 @@ HTML = r"""<!DOCTYPE html>
border: 1px solid var(--border);
color: var(--text);
border-radius: 3px;
font-family: system-ui, sans-serif;
font-size: 15px;
font-family: 'JetBrains Mono', monospace;
font-size: 12px;
outline: none;
width: 220px;
transition: border-color .15s;
}
.search-input:focus { border-color: var(--accent); }
.dl-status {
font-size: 14px;
font-size: 11px;
color: #ffa726;
margin-top: 4px;
}
@ -587,12 +585,5 @@ 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)