diff --git a/public/js/app_control.js b/public/js/app_control.js
index 947f26e..f8e511e 100644
--- a/public/js/app_control.js
+++ b/public/js/app_control.js
@@ -98,6 +98,8 @@ window.onload = async function () {
const saveMovieChangesBtn = document.getElementById('save-movie-changes');
const editMovieIdEl = document.getElementById('edit_movie_id');
+ const editMovieIdLabelEl = document.getElementById('edit_movie_id_label');
+ const copyMovieIdBtn = document.getElementById('copy-movie-id');
const editImdbIdEl = document.getElementById('edit_imdb_id');
const editYearEl = document.getElementById('edit_year');
const editCategoryEl = document.getElementById('edit_category');
@@ -145,6 +147,17 @@ window.onload = async function () {
.replace(/'/g, ''');
}
+ async function copyToClipboard(text) {
+ const t = String(text || '').trim();
+ if (!t) return false;
+ try {
+ await navigator.clipboard.writeText(t);
+ return true;
+ } catch (_) {
+ return false;
+ }
+ }
+
function sanitizeHtml(raw) {
const html = String(raw || '');
const withoutScripts = html.replace(/
diff --git a/python_video_server/README.md b/python_video_server/README.md
new file mode 100644
index 0000000..20990cf
--- /dev/null
+++ b/python_video_server/README.md
@@ -0,0 +1,29 @@
+# Python video server (Range streaming + JWT + Mongo)
+
+This is a small standalone server that mirrors the app’s `/api/video/:id` behavior:
+
+- Looks up `movies._id == :id` in MongoDB and reads the `video_file` field
+- Streams the file from `VIDEO_FILES_DIR` with **HTTP Range** support (seeking works)
+- Auth via the same JWT (`Authorization: Bearer ...`), plus a `video_auth` cookie for `