FABLESLIP commited on
Commit
1b8fd89
·
verified ·
1 Parent(s): af3c71a

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +20 -3
app.py CHANGED
@@ -1038,6 +1038,16 @@ HTML_TEMPLATE = r"""
1038
  const serverVid = "__VID__";
1039
  const serverMsg = "__MSG__";
1040
  document.getElementById('msg').textContent = serverMsg;
 
 
 
 
 
 
 
 
 
 
1041
 
1042
  // Références DOM globales pour l’éditeur (nécessaires à tout le code en dessous)
1043
  const statusEl = document.getElementById('status');
@@ -1459,6 +1469,7 @@ function fileStem(name){ const i = name.lastIndexOf('.'); return i>0 ? name.slic
1459
  let vidStem = '';
1460
  let bustToken = Date.now();
1461
  let fps = 30, frames = 0;
 
1462
  let currentIdx = 0;
1463
  let mode = 'view';
1464
 
@@ -1846,8 +1857,9 @@ async function loadVideoAndMeta() {
1846
  player.load();
1847
  fitCanvas();
1848
  statusEl.textContent = 'Chargement vidéo…';
1849
- try{
1850
- const r=await fetch('/meta/'+encodeURIComponent(vidName));
 
1851
  if(r.ok){
1852
  const m=await r.json();
1853
  fps=m.fps||30; frames=m.frames||0;
@@ -1868,7 +1880,12 @@ async function loadVideoAndMeta() {
1868
  player.addEventListener('loadedmetadata', async ()=>{
1869
  fitCanvas();
1870
  if(!frames || frames<=0){
1871
- try{ const r=await fetch('/meta/'+encodeURIComponent(vidName)); if(r.ok){ const m=await r.json(); fps=m.fps||30; frames=m.frames||0; } }catch{}
 
 
 
 
 
1872
  }
1873
  currentIdx=0; goFrame.value=1; draw();
1874
  });
 
1038
  const serverVid = "__VID__";
1039
  const serverMsg = "__MSG__";
1040
  document.getElementById('msg').textContent = serverMsg;
1041
+ // Après affichage du message, on retire ?msg=... de l'URL pour éviter qu'il persiste au refresh.
1042
+ try {
1043
+ const u = new URL(location.href);
1044
+ if (u.searchParams.has('msg')) {
1045
+ u.searchParams.delete('msg');
1046
+ const q = u.searchParams.toString();
1047
+ history.replaceState({}, '', u.pathname + (q ? ('?' + q) : ''));
1048
+ }
1049
+ } catch (_) {}
1050
+
1051
 
1052
  // Références DOM globales pour l’éditeur (nécessaires à tout le code en dessous)
1053
  const statusEl = document.getElementById('status');
 
1469
  let vidStem = '';
1470
  let bustToken = Date.now();
1471
  let fps = 30, frames = 0;
1472
+ let metaPromise = null; // évite les doubles requêtes /meta
1473
  let currentIdx = 0;
1474
  let mode = 'view';
1475
 
 
1857
  player.load();
1858
  fitCanvas();
1859
  statusEl.textContent = 'Chargement vidéo…';
1860
+ try{
1861
+ metaPromise = fetch('/meta/'+encodeURICompnent(vidName));
1862
+ const r = await metaPromise;
1863
  if(r.ok){
1864
  const m=await r.json();
1865
  fps=m.fps||30; frames=m.frames||0;
 
1880
  player.addEventListener('loadedmetadata', async ()=>{
1881
  fitCanvas();
1882
  if(!frames || frames<=0){
1883
+ try{
1884
+ if (metaPromise) {
1885
+ const r = await metaPromise;
1886
+ if (r.ok) { const m = await r.json(); fps = m.fps||30; frames = m.frames||0; }
1887
+ }
1888
+ }catch{}
1889
  }
1890
  currentIdx=0; goFrame.value=1; draw();
1891
  });