diff options
author | Minteck <contact@minteck.org> | 2021-12-23 19:41:25 +0100 |
---|---|---|
committer | Minteck <contact@minteck.org> | 2021-12-23 19:41:25 +0100 |
commit | ed531165841a1de9200782b00b99b174bf2289cd (patch) | |
tree | 576c5c72c1d991491c1a43627f527c110fb31164 /tv/index.php | |
parent | 25ba1e272636dbcda3c755094a7c31c5d67209a6 (diff) | |
download | movies-ed531165841a1de9200782b00b99b174bf2289cd.tar.gz movies-ed531165841a1de9200782b00b99b174bf2289cd.tar.bz2 movies-ed531165841a1de9200782b00b99b174bf2289cd.zip |
Commit
Diffstat (limited to 'tv/index.php')
-rw-r--r-- | tv/index.php | 1442 |
1 files changed, 721 insertions, 721 deletions
diff --git a/tv/index.php b/tv/index.php index ced36c2..0a0c2e4 100644 --- a/tv/index.php +++ b/tv/index.php @@ -1,721 +1,721 @@ -<?php $_TITLE = "Accueil"; require_once $_SERVER['DOCUMENT_ROOT'] . "/includes/header.php"; ?> - -<script> - const FilmsData = { - <?php - - $list = scandir($_SERVER['DOCUMENT_ROOT'] . "/data/films/metadata"); - $films = []; - - foreach ($list as $item) { - if ($item !== "." && $item !== "..") { - $films[substr($item, 0, -5)] = json_decode(file_get_contents($_SERVER['DOCUMENT_ROOT'] . "/data/films/metadata/" . $item), true); - $films[substr($item, 0, -5)]["id"] = substr($item, 0, -5); - } - } - - usort($films, function ($a, $b) { - return $a['date'] <=> $b['date']; - }); - - $films = array_reverse($films); - - ?> - <?php foreach ($films as $film): ?> - "<?= $film["id"] ?>": JSON.parse(atob(`<?= base64_encode(utf8_decode(file_get_contents($_SERVER['DOCUMENT_ROOT'] . "/data/films/metadata/" . $film["id"] . ".json"))) ?>`)), - <?php endforeach; ?> - } - -</script> - -<style> - #intermission-skipper { - backdrop-filter: blur(10px); - } - - #video-item { - background: black; - width: 100%; - height: calc(100vh - 76px); - margin-top: 44px; - } - - #intermission-item { - background: black; - width: 100%; - height: calc(100vh - 76px); - margin-top: 44px; - } - - #selector { - background: #fff; - overflow: auto; - padding: 50px 8px 8px; - } - - #page-title { - float: right; - margin-top: 5px; - margin-right: 10px; - } - - #navigation-bar { - backdrop-filter: blur(10px); - border-bottom: 1px solid #bdbdbd; - padding: 4px 4px 7px 4px; - position: fixed; - top: 32px; - left: 0; - right: 0; - height: 44px; - z-index: 9; - background: rgba(255, 255, 255, 0.5); - } - - #close-btn { - vertical-align: middle; - cursor: pointer; - margin-left: 2px; - } - - #close-btn:hover { - opacity: .75; - } - - #close-btn:active, #close-btn:focus { - opacity: .5; - } - - #debug { - opacity: 0; - float: right; - margin-top: 7px; - margin-right: 15px; - transition: opacity 200ms; - } - - #debug:hover { - opacity: .3; - } -</style> - -<div id="navigation-bar"> - <a href="/" id="logo" style="color: black;text-decoration:none !important;"> - <img src="https://familine.minteck.org/icns/familine-movies.svg" width="36px" style="vertical-align: middle;"> - <span style="vertical-align: middle;"><span><span style="font-size:20px;">Familine Movies<?= isset($_FamilineMoviesPlus) && $_FamilineMoviesPlus ? "+" : "" ?></span></span></span></a> - - <span id="page-title">Accueil</span> - <span id="debug" style="display:none;"> - <span style="border-radius:999px;transition:none !important;background:green;width:16px;height:16px;display:inline-block;text-align:right;" id="seeking-indicator"></span> - <span style="border-radius:999px;transition:none !important;background:orange;width:16px;height:16px;display:inline-block;text-align:right;" id="time-indicator"></span> - <span style="border-radius:999px;transition:none !important;background:cyan;width:16px;height:16px;display:inline-block;text-align:right;" id="health-indicator"></span> - <span style="border-radius:999px;transition:none !important;background:darkred;width:16px;height:16px;display:inline-block;text-align:right;" id="seek-indicator"></span> - </span> -</div> - -<div class="modal fade" id="triggerWarning"> - <div class="modal-dialog modal-lg modal-dialog-centered"> - <div class="modal-content"> - - <div class="modal-header"> - <h4 class="modal-title">Ce contenu n'est peut-être pas pour tout le monde</h4> - </div> - - <div class="modal-body"> - <p>Ce contenu a été marqué comme dangeureux pour certaines personnes par les administrateurs de Familine Movies. En le regardant, vous acceptez être en mesure de consulter ce contenu ; Familine Movies n'est <b>EN AUCUN CAS</b> responsable de toute bléssure physique ou morale à la suite de la consultation de ce contenu.</p> - - <div id="tw_flashing"> - <h2>TW: F — Épilepsie photosensible</h2> - <p>Ce contenu contient des scènes avec des changements de lumière brutaux qui pourraient déclencher des crises d'épilepsie chez certaines personnes.</p> - <p>Si vous êtes épileptique, ou que vous ou un membre de votre famille proche a des antécédents de crises à la suite d'un contenu multimédia, il est conseillé de consulter un médecin avant de regarder ce contenu.</p> - <p>Même si vous n'êtes pas épileptique, il est conseillé de regarder ce contenu dans une pièce suffisamment éclairée, à une grande distance de l'écran, et en adaptant la luminosité de l'écran à celle de la pièce.</p> - </div> - - <div id="tw_suicide"> - <h2>TW: S — Scènes de suicide</h2> - <p>Ce contenu contient des scènes affichant des pratiques de suicide.</p> - <p>Familine Movies ne partage pas le mal des gens, <b>ce contenu <u>N'EST PAS</u> un appel à l'aide</b> ; nous sommes en communication constante avec l'auteur ou les auteurs du contenu et nous vous assurons qu'il(s) est/sont en bonne santé.</p> - <p>Si vous êtes victime ou témoin de toute action ou parole relative au suicide, vous <b>devez</b> prendre contact avec un professionnel <a href="https://www.infosuicide.org/urgences-aide-ressources/lignes-decoute/" target="_blank">par le biais d'une des nombreuses lignes d'écoute disponibles</a>.</p> - </div> - - <div id="tw_violence"> - <h2>TW: V — Actes physiquement ou mentalement violents</h2> - <p>Ce contenu contient des scènes affichant des pratiques de violence physique ou verbale.</p> - <p>Familine ne cautionne en aucun cas ces pratiques de violences, qui ont été effectuées uniquement dans le cadre de la réalisation du contenu, et ne saurai être responsable de violences réelles effectuées à la suite de contenu.</p> - <p>Il est déconseillé aux jeunes enfants de moins de 13 ans de consulter ce contenu, en partie ou en totalité.</p> - </div> - - <div id="tw_sex"> - <h2>TW: S — Contenu sexuellement explicité</h2> - <p>Ce contenu contient des scènes affichant des pratiques pouvant être considérées comme sexuellement explicites.</p> - <p>Vous ne devez regarder ce contenu que si vous en êtes totalement conscient et que vous souhaitez voir du contenu pouvant être sexuellement explicite..</p> - <p>Les mineurs (personnes de moins de 18 ans) ne <b>sont pas</b> autorisés à consulter ce contenu, <u>même avec l'autorisation de leur responsable légal</u>.</p> - </div> - </div> - - <div class="modal-footer"> - <button onclick="home();" class="btn btn-danger" data-modal-close>Quitter</button> - <button onclick="watch(document.getElementById('trigger-dismiss-btn').getAttribute('data-fid'), true);" data-fid="" id="trigger-dismiss-btn" type="button" class="btn btn-success" data-dismiss="modal">Regarder quand même</button> - </div> - - </div> - </div> -</div> - -<style> - #intermission-bar { - height: 4px; - background: #1f1f1f; - position: fixed; - width: 100%; - z-index: 9; - top: 76px; - } - - #intermission-bar-inner { - transition: width 200ms; - height: 4px; - background: #e0971c; - } - - #intermission-skipper { - position: fixed; - background: #212121b0; - top: 80px; - width: 100%; - display: flex; - align-items: center; - justify-content: center; - z-index: 40; - padding: 10px; - cursor: not-allowed; - } - - #intermission-skipper.valid { - cursor: pointer; - } -</style> - -<div id="intermission-bar"> - <div id="intermission-bar-inner" style="width:0;"></div> -</div> - -<div id="intermission-skipper"> - Patientez encore 15 secondes... -</div> - -<div id="intermission-note" style="opacity:0;" class="alert alert-info container"> - <strong>Achetez Familine Movies+</strong> pour regarder vos films sans publicité et soutenir le développement de Familine Movies. <a href="/plus" target="_blank">En savoir plus...</a> -</div> - -<video id="video-item" style="display:none;" controls preload="auto" controlslist="nodownload"> - <source src="about:blank"> -</video> - -<video id="intermission-item" preload="auto" controlslist="nodownload"> - <source src="about:blank"> -</video> - -<div id="details" class="container" style="margin-top:50px;margin-bottom:64px;"> - <h1 id="details-title">Les effets spéciaux, pour les nuls <span class="badge badge-danger" id="4k_badge">4K</span></h1> - <p><i><span id="details-date">2001</span> · <span id="details-producer">Michel Baie</span></i></p> - <p id="details-description">Comme d'habitude, Michel Baie met le paquet sur les effets spéciaux.</p> -</div> - -<div id="selector" style="display:none;"> - <br> - <div class="alert alert-warning container"> - <?= implode("\n", $_CONFIG["Movies"]["schedule"]) ?> - </div> - - <h1 style="text-align:center;margin-top: 50px;margin-bottom: 32px;">Qu'est-ce qu'on regarde ?</h1> - <div class="container"> - - <?php - - $times = json_decode(file_get_contents($_SERVER['DOCUMENT_ROOT'] . "/data/durations.json"), true); - - function id3time($file) { - $fparts = explode("/", $file); - $afile = $fparts[count($fparts) - 1]; - - global $times; - $date = (int)date('U'); - - return $times[$afile]["duration"]; - } - - function cmp_by_date($a, $b) { - return $a["date"] <=> $b["date"]; - } - - $list = scandir($_SERVER['DOCUMENT_ROOT'] . "/data/films/metadata"); - $films = []; - - foreach ($list as $item) { - if ($item !== "." && $item !== "..") { - $films[substr($item, 0, -5)] = json_decode(file_get_contents($_SERVER['DOCUMENT_ROOT'] . "/data/films/metadata/" . $item), true); - $films[substr($item, 0, -5)]["id"] = substr($item, 0, -5); - } - } - - usort($films, function ($a, $b) { - return $a['date'] <=> $b['date']; - }); - - $films = array_reverse($films); - - $seconds = 0; - foreach ($times as $titem => $tdata) { - if ($titem !== "@items") { - $seconds = $seconds + $tdata["seconds"]; - } - } - - $secstr = $seconds . " secondes"; - if ($seconds > 60) { - $secstr = round($seconds / 60) . " minutes"; - if ($seconds > 3600) { - $secstr = round($seconds / 3600) . " heures"; - } - } - - ?> - - <p><i id="counts" data-initial-value="<?= count($films) ?> vidéos, <?= $secstr ?> de contenu"><?= count($films) ?> vidéos, <?= $secstr ?> de contenu</i></p> - - <div id="non-search"> - - <h2>Contenu disponible en 4K <span class="badge badge-secondary">Nouveau</span></h2> - <div class="row"> - <?php foreach ($films as $index => $film): ?> - <?php if (file_exists($_SERVER['DOCUMENT_ROOT'] . "/data/films/video/" . $film['id'] . '@4K.' . $film["file"]) && !$film["partner"]): ?> - <div onclick="watch(`<?= $film["id"] ?>`);" class="col-sm-3 film-card" style="padding-top:15px;padding-bottom:15px;" data-search-filter="<?= str_replace("\"", """, $film["title"]) . " " . str_replace("\"", """, $film["team"]) . " " . str_replace("\"", """, $film["desc"]) . " " . str_replace("\"", """, $film["date"]) ?>"> - <div class="card"> - <img class="card-img-top" src="/cdn/image/?i=<?= $film["id"] ?>" alt="Card image"> - <div class="card-body"> - <?= file_exists($_SERVER['DOCUMENT_ROOT'] . "/data/films/video/" . $film['id'] . '@4K.' . $film["file"]) ? '<span class="badge badge-danger">4K</span>' : '' ?> - <span class="badge badge-secondary"> - <?php - - echo(id3time($_SERVER['DOCUMENT_ROOT'] . "/data/films/video/" . $film["id"] . "." . $film["file"])); - - ?></span> <?= isset($film["soon"]) && $film["soon"] ? '<span class="badge badge-warning badge-pill">Prochainement !</span>' : '' ?> <?= isset($film["partner"]) && $film["partner"] ? '<span class="badge badge-info">Suggestion</span>' : '' ?> <?php - - if (isset($film['trigger']) && $film['trigger']) { - echo('<span class="badge badge-primary">TW: '); - if (isset($film["tw_flashing"]) && $film["tw_flashing"]) { - echo("F"); - } - if (isset($film["tw_suicide"]) && $film["tw_suicide"]) { - echo("S"); - } - if (isset($film["tw_violence"]) && $film["tw_violence"]) { - echo("V"); - } - if (isset($film["tw_sex"]) && $film["tw_sex"]) { - echo("X"); - } - echo("</span>"); - } - - ?><br> - <h4 class="card-title" style="text-overflow: ellipsis;white-space: nowrap;overflow: hidden;"><?= $film["title"] ?></h4> - <p class="card-text"> - <span style="display: block;text-overflow: ellipsis;white-space: nowrap;overflow: hidden;"><?= $film["team"] ?></span> - <span style="display: block;text-overflow: ellipsis;white-space: nowrap;overflow: hidden;"><?= substr($film["date"], 0, 4) ?></span> - </p> - </div> - </div> - </div> - <?php endif; ?> - <?php endforeach; ?> - </div> - - <h2>Les aventures de <?= $_CONFIG["Movies"]["adventures"] ?></h2> - <div class="row"> - <?php foreach ($films as $index => $film): ?> - <?php if (!file_exists($_SERVER['DOCUMENT_ROOT'] . "/data/films/video/" . $film['id'] . '@4K.' . $film["file"]) && (strpos($film["title"], "Les aventures de " . $_CONFIG["Movies"]["adventures"]) !== false || strpos($film["title"], "Vacances de " . $_CONFIG["Movies"]["adventures"]) !== false)): ?> - <div onclick="watch(`<?= $film["id"] ?>`);" class="col-sm-3 film-card" style="padding-top:15px;padding-bottom:15px;" data-search-filter="<?= str_replace("\"", """, $film["title"]) . " " . str_replace("\"", """, $film["team"]) . " " . str_replace("\"", """, $film["desc"]) . " " . str_replace("\"", """, $film["date"]) ?>"> - <div class="card"> - <img class="card-img-top" src="/cdn/image/?i=<?= $film["id"] ?>" alt="Card image"> - <div class="card-body"> - <?= file_exists($_SERVER['DOCUMENT_ROOT'] . "/data/films/video/" . $film['id'] . '@4K.' . $film["file"]) ? '<span class="badge badge-danger">4K</span>' : '' ?> - <span class="badge badge-secondary"> - <?php - - echo(id3time($_SERVER['DOCUMENT_ROOT'] . "/data/films/video/" . $film["id"] . "." . $film["file"])); - - ?></span> <?= isset($film["soon"]) && $film["soon"] ? '<span class="badge badge-warning badge-pill">Prochainement !</span>' : '' ?> <?= isset($film["partner"]) && $film["partner"] ? '<span class="badge badge-info">Suggestion</span>' : '' ?> <?php - - if (isset($film['trigger']) && $film['trigger']) { - echo('<span class="badge badge-primary">TW: '); - if (isset($film["tw_flashing"]) && $film["tw_flashing"]) { - echo("F"); - } - if (isset($film["tw_suicide"]) && $film["tw_suicide"]) { - echo("S"); - } - if (isset($film["tw_violence"]) && $film["tw_violence"]) { - echo("V"); - } - if (isset($film["tw_sex"]) && $film["tw_sex"]) { - echo("X"); - } - echo("</span>"); - } - - ?><br> - <h4 class="card-title" style="text-overflow: ellipsis;white-space: nowrap;overflow: hidden;"><?= $film["title"] ?></h4> - <p class="card-text"> - <span style="display: block;text-overflow: ellipsis;white-space: nowrap;overflow: hidden;"><?= $film["team"] ?></span> - <span style="display: block;text-overflow: ellipsis;white-space: nowrap;overflow: hidden;"><?= substr($film["date"], 0, 4) ?></span> - </p> - </div> - </div> - </div> - <?php endif; ?> - <?php endforeach; ?> - </div> - - <h2>Musiques par YonKaGor</h2> - <div class="row"> - <?php foreach ($films as $index => $film): ?> - <?php if ($film["team"] === "YonKaGor" && $film["partner"]): ?> - <div onclick="watch(`<?= $film["id"] ?>`);" class="col-sm-3 film-card" style="padding-top:15px;padding-bottom:15px;" data-search-filter="<?= str_replace("\"", """, $film["title"]) . " " . str_replace("\"", """, $film["team"]) . " " . str_replace("\"", """, $film["desc"]) . " " . str_replace("\"", """, $film["date"]) ?>"> - <div class="card"> - <img class="card-img-top" src="/cdn/image/?i=<?= $film["id"] ?>" alt="Card image"> - <div class="card-body"> - <?= file_exists($_SERVER['DOCUMENT_ROOT'] . "/data/films/video/" . $film['id'] . '@4K.' . $film["file"]) ? '<span class="badge badge-danger">4K</span>' : '' ?> - <span class="badge badge-secondary"> - <?php - - echo(id3time($_SERVER['DOCUMENT_ROOT'] . "/data/films/video/" . $film["id"] . "." . $film["file"])); - - ?></span> <?= isset($film["soon"]) && $film["soon"] ? '<span class="badge badge-warning badge-pill">Prochainement !</span>' : '' ?> <?= isset($film["partner"]) && $film["partner"] ? '<span class="badge badge-info">Suggestion</span>' : '' ?> <?php - - if (isset($film['trigger']) && $film['trigger']) { - echo('<span class="badge badge-primary">TW: '); - if (isset($film["tw_flashing"]) && $film["tw_flashing"]) { - echo("F"); - } - if (isset($film["tw_suicide"]) && $film["tw_suicide"]) { - echo("S"); - } - if (isset($film["tw_violence"]) && $film["tw_violence"]) { - echo("V"); - } - if (isset($film["tw_sex"]) && $film["tw_sex"]) { - echo("X"); - } - echo("</span>"); - } - - ?><br> - <h4 class="card-title" style="text-overflow: ellipsis;white-space: nowrap;overflow: hidden;"><?= $film["title"] ?></h4> - <p class="card-text"> - <span style="display: block;text-overflow: ellipsis;white-space: nowrap;overflow: hidden;"><?= $film["team"] ?></span> - <span style="display: block;text-overflow: ellipsis;white-space: nowrap;overflow: hidden;"><?= substr($film["date"], 0, 4) ?></span> - </p> - </div> - </div> - </div> - <?php endif; ?> - <?php endforeach; ?> - </div> - - <h2>L'ère <?= $_CONFIG["Movies"]["legacy"] ?> <small>(2011-2017)</small></h2> - <div class="row"> - <?php foreach ($films as $index => $film): ?> - <?php if (!file_exists($_SERVER['DOCUMENT_ROOT'] . "/data/films/video/" . $film['id'] . '@4K.' . $film["file"]) && (int)$film["date"] < 201705 !== false && strpos($film["title"], "Les aventures de " . $_CONFIG["Movies"]["adventures"]) === false && $film["team"] !== "YonKaGor" && strpos($film["title"], "Vacances de " . $_CONFIG["Movies"]["adventures"]) === false): ?> - <div onclick="watch(`<?= $film["id"] ?>`);" class="col-sm-3 film-card" style="padding-top:15px;padding-bottom:15px;" data-search-filter="<?= str_replace("\"", """, $film["title"]) . " " . str_replace("\"", """, $film["team"]) . " " . str_replace("\"", """, $film["desc"]) . " " . str_replace("\"", """, $film["date"]) ?>"> - <div class="card"> - <img class="card-img-top" src="/cdn/image/?i=<?= $film["id"] ?>" alt="Card image"> - <div class="card-body"> - <?= file_exists($_SERVER['DOCUMENT_ROOT'] . "/data/films/video/" . $film['id'] . '@4K.' . $film["file"]) ? '<span class="badge badge-danger">4K</span>' : '' ?> - <span class="badge badge-secondary"> - <?php - - echo(id3time($_SERVER['DOCUMENT_ROOT'] . "/data/films/video/" . $film["id"] . "." . $film["file"])); - - ?></span> <?= isset($film["soon"]) && $film["soon"] ? '<span class="badge badge-warning badge-pill">Prochainement !</span>' : '' ?> <?= isset($film["partner"]) && $film["partner"] ? '<span class="badge badge-info">Suggestion</span>' : '' ?> <?php - - if (isset($film['trigger']) && $film['trigger']) { - echo('<span class="badge badge-primary">TW: '); - if (isset($film["tw_flashing"]) && $film["tw_flashing"]) { - echo("F"); - } - if (isset($film["tw_suicide"]) && $film["tw_suicide"]) { - echo("S"); - } - if (isset($film["tw_violence"]) && $film["tw_violence"]) { - echo("V"); - } - if (isset($film["tw_sex"]) && $film["tw_sex"]) { - echo("X"); - } - echo("</span>"); - } - - ?><br> - <h4 class="card-title" style="text-overflow: ellipsis;white-space: nowrap;overflow: hidden;"><?= $film["title"] ?></h4> - <p class="card-text"> - <span style="display: block;text-overflow: ellipsis;white-space: nowrap;overflow: hidden;"><?= $film["team"] ?></span> - <span style="display: block;text-overflow: ellipsis;white-space: nowrap;overflow: hidden;"><?= substr($film["date"], 0, 4) ?></span> - </p> - </div> - </div> - </div> - <?php endif; ?> - <?php endforeach; ?> - </div> - - <h2>Tout <?= $_CONFIG["Movies"]["current"] ?> à un seul endroit</h2> - <div class="row"> - <?php foreach ($films as $index => $film): ?> - <?php if (!file_exists($_SERVER['DOCUMENT_ROOT'] . "/data/films/video/" . $film['id'] . '@4K.' . $film["file"]) && (int)$film["date"] > 201705 !== false && strpos($film["title"], "Les aventures de " . $_CONFIG["Movies"]["adventures"]) === false && $film["team"] !== "YonKaGor" && strpos($film["title"], "Vacances de " . $_CONFIG["Movies"]["adventures"]) === false): ?> - <div onclick="watch(`<?= $film["id"] ?>`);" class="col-sm-3 film-card" style="padding-top:15px;padding-bottom:15px;" data-search-filter="<?= str_replace("\"", """, $film["title"]) . " " . str_replace("\"", """, $film["team"]) . " " . str_replace("\"", """, $film["desc"]) . " " . str_replace("\"", """, $film["date"]) ?>"> - <div class="card"> - <img class="card-img-top" src="/cdn/image/?i=<?= $film["id"] ?>" alt="Card image"> - <div class="card-body"> - <?= file_exists($_SERVER['DOCUMENT_ROOT'] . "/data/films/video/" . $film['id'] . '@4K.' . $film["file"]) ? '<span class="badge badge-danger">4K</span>' : '' ?> - <span class="badge badge-secondary"> - <?php - - echo(id3time($_SERVER['DOCUMENT_ROOT'] . "/data/films/video/" . $film["id"] . "." . $film["file"])); - - ?></span> <?= isset($film["soon"]) && $film["soon"] ? '<span class="badge badge-warning badge-pill">Prochainement !</span>' : '' ?> <?= isset($film["partner"]) && $film["partner"] ? '<span class="badge badge-info">Suggestion</span>' : '' ?> <?php - - if (isset($film['trigger']) && $film['trigger']) { - echo('<span class="badge badge-primary">TW: '); - if (isset($film["tw_flashing"]) && $film["tw_flashing"]) { - echo("F"); - } - if (isset($film["tw_suicide"]) && $film["tw_suicide"]) { - echo("S"); - } - if (isset($film["tw_violence"]) && $film["tw_violence"]) { - echo("V"); - } - if (isset($film["tw_sex"]) && $film["tw_sex"]) { - echo("X"); - } - echo("</span>"); - } - - ?><br> - <h4 class="card-title" style="text-overflow: ellipsis;white-space: nowrap;overflow: hidden;"><?= $film["title"] ?></h4> - <p class="card-text"> - <span style="display: block;text-overflow: ellipsis;white-space: nowrap;overflow: hidden;"><?= $film["team"] ?></span> - <span style="display: block;text-overflow: ellipsis;white-space: nowrap;overflow: hidden;"><?= substr($film["date"], 0, 4) ?></span> - </p> - </div> - </div> - </div> - <?php endif; ?> - <?php endforeach; ?> - </div> - - </div> - </div> -</div> - -<script> - setInterval(() => { - document.getElementById("intermission-skipper").onclick = document.getElementById('intermission-item').onended = () => { - if (document.getElementById("intermission-skipper").classList.contains("valid")) { - document.getElementById('intermission-item').pause(); - document.getElementById('intermission-item').src = "about:blank"; - document.getElementById('intermission-item').style.display = "none"; - document.getElementById('video-item').style.display = ""; - document.getElementById('intermission-bar').style.display = "none"; - document.getElementById('intermission-skipper').style.display = "none"; - document.getElementById('intermission-note').style.display = "none"; - document.getElementById('video-item').src = "/tv/watch.php?i=" + selectedFilm; - document.getElementById('video-item').play(); - } - } - }, 1000) -</script> - -<script> - function selector(status) { - if (status) { - document.getElementById("selector").style.display = ""; - document.body.style.overflow = ""; - } else { - document.getElementById("selector").style.display = "none"; - document.body.style.overflow = ""; - } - } - - selectedFilm = ""; - function watch(fid, ignoreTrigger) { - document.getElementById('details').style.display = ""; - selectedFilm = fid; - - if (FilmsData[fid].trigger && !ignoreTrigger) { - document.getElementById("tw_flashing").style.display = "none"; - document.getElementById("tw_suicide").style.display = "none"; - document.getElementById("tw_violence").style.display = "none"; - document.getElementById("tw_sex").style.display = "none"; - - if (FilmsData[fid]["tw_flashing"]) document.getElementById("tw_flashing").style.display = ""; - if (FilmsData[fid]["tw_suicide"]) document.getElementById("tw_suicide").style.display = ""; - if (FilmsData[fid]["tw_violence"]) document.getElementById("tw_violence").style.display = ""; - if (FilmsData[fid]["tw_sex"]) document.getElementById("tw_sex").style.display = ""; - - document.getElementById("trigger-dismiss-btn").setAttribute("data-fid", fid); - $("#triggerWarning").modal(); - } else { - document.getElementById("intermission-skipper").classList.remove("valid") - document.getElementById("intermission-bar-inner").style.width = "0"; - document.getElementById('intermission-note').style.display = ""; - document.getElementById("page-title").innerHTML = FilmsData[fid].title + ` <span class="badge badge-secondary">fin à <span id="enddate">--:--</span></span> <img onclick="home();" alt="Quitter" title="Arrêter la vidéo" id="close-btn" src="/close.svg">`; - selector(false); - window.scrollTo(0, 0); - document.title = FilmsData[fid].title + " | Familine Movies<?= isset($_FamilineMoviesPlus) && $_FamilineMoviesPlus ? "+" : "" ?>"; - document.getElementById('intermission-item').src = "/tv/intermission.php"; - document.getElementById('intermission-item').play(); - document.getElementById("debug").style.display = ""; - - document.getElementById('intermission-item').style.display = ""; - document.getElementById('intermission-bar').style.display = ""; - document.getElementById('intermission-skipper').style.display = ""; - document.getElementById('video-item').style.display = "none"; - - document.getElementById("details-title").innerHTML = FilmsData[fid].title; - document.getElementById("details-producer").innerHTML = FilmsData[fid].team; - document.getElementById("details-description").innerHTML = FilmsData[fid].desc; - document.getElementById("details-date").innerHTML = FilmsData[fid].date.toString().substr(0, 4); - - <?php if (isset($_FamilineMoviesPlus) && $_FamilineMoviesPlus): ?> - document.getElementById('intermission-item').pause(); - document.getElementById('intermission-item').src = "about:blank"; - document.getElementById('intermission-item').style.display = "none"; - document.getElementById('video-item').style.display = ""; - document.getElementById('intermission-bar').style.display = "none"; - document.getElementById('intermission-skipper').style.display = "none"; - document.getElementById('intermission-note').style.display = "none"; - document.getElementById('video-item').src = "/tv/watch.php?i=" + selectedFilm; - document.getElementById('video-item').play(); - <?php endif; ?> - } - } - - function home() { - document.getElementById('video-item').pause(); - document.getElementById('video-item').style.display = "none"; - document.getElementById('intermission-item').pause(); - document.getElementById('intermission-item').style.display = "none"; - document.getElementById('intermission-skipper').style.display = "none"; - document.getElementById('intermission-bar').style.display = "none"; - document.getElementById('details').style.display = "none"; - document.getElementById('body').style.overflow = "auto"; - selector(true); - window.scrollTo(0, 0); - document.title = "Accueil | Familine Movies"; - document.getElementById("debug").style.display = "none"; - document.getElementById("page-title").innerHTML = "Accueil"; - document.getElementById('video-item').src = "about:blank"; - document.getElementById('intermission-item').src = "about:blank"; - } - - home(); - selector(true); - - document.getElementById('video-item').addEventListener('progress', () => { - document.getElementById("seeking-indicator").style.background = "black"; - setTimeout(() => { - document.getElementById("seeking-indicator").style.background = "green"; - }, 100) - }) - - document.getElementById('video-item').addEventListener('timeupdate', () => { - document.getElementById("time-indicator").style.background = "black"; - setTimeout(() => { - document.getElementById("time-indicator").style.background = "orange"; - }, 100) - }) - - document.getElementById('video-item').addEventListener('waiting', () => { - document.getElementById("health-indicator").style.background = "black"; - setTimeout(() => { - document.getElementById("health-indicator").style.background = "cyan"; - }, 100) - }) - - document.getElementById('video-item').addEventListener('seeking', () => { - document.getElementById("seek-indicator").style.background = "black"; - setTimeout(() => { - document.getElementById("seek-indicator").style.background = "darkred"; - }, 100) - }) - - document.getElementById('intermission-item').addEventListener('progress', () => { - document.getElementById("seeking-indicator").style.background = "black"; - setTimeout(() => { - document.getElementById("seeking-indicator").style.background = "green"; - }, 100) - }) - - document.getElementById('intermission-item').addEventListener('timeupdate', () => { - document.getElementById("time-indicator").style.background = "black"; - setTimeout(() => { - document.getElementById("time-indicator").style.background = "orange"; - }, 100) - }) - - document.getElementById('intermission-item').addEventListener('waiting', () => { - document.getElementById("health-indicator").style.background = "black"; - setTimeout(() => { - document.getElementById("health-indicator").style.background = "cyan"; - }, 100) - }) - - document.getElementById('intermission-item').addEventListener('seeking', () => { - document.getElementById("seek-indicator").style.background = "black"; - setTimeout(() => { - document.getElementById("seek-indicator").style.background = "darkred"; - }, 100) - }) - - setInterval(() => { - if (document.getElementById('video-item').paused) return; - document.getElementById('video-item').focus(); - - remaining = document.getElementById('video-item').duration - document.getElementById('video-item').currentTime; - remainingm = Math.ceil(remaining/60); - - try { - arr = new Date(new Date().getTime() + (remainingm*(60*1000))).toString().split(" ")[4].split(":"); - arr.pop(); - corr = arr.join(":"); - arr2 = new Date().toString().split(" ")[4].split(":"); - arr2.pop(); - corr2 = arr2.join(":"); - if (corr !== corr2) { - document.getElementById('enddate').innerText = corr; - } else { - document.getElementById('enddate').innerText = "--:--"; - } - } catch (e) {} - }, 50) - - setInterval(() => { - document.getElementById("intermission-bar-inner").style.width = (100 * (document.getElementById("intermission-item").currentTime / document.getElementById("intermission-item").duration)) + "%"; - - if (document.getElementById("intermission-item").currentTime > 15) { - document.getElementById("intermission-skipper").innerText = "Cliquez ici pour ignorer l'annonce"; - document.getElementById("intermission-skipper").classList.add("valid"); - } else { - if (Math.ceil(15 - document.getElementById("intermission-item").currentTime) > 1) { - document.getElementById("intermission-skipper").innerText = "Patientez encore " + Math.ceil(15 - document.getElementById("intermission-item").currentTime) + " secondes..."; - } else { - document.getElementById("intermission-skipper").innerText = "Patientez encore " + Math.ceil(15 - document.getElementById("intermission-item").currentTime) + " seconde..."; - } - } - }, 50) -</script> - -<?php require_once $_SERVER['DOCUMENT_ROOT'] . "/includes/footer.php"; ?> +<?php $_TITLE = "Accueil"; require_once $_SERVER['DOCUMENT_ROOT'] . "/includes/header.php"; ?>
+
+<script>
+ const FilmsData = {
+ <?php
+
+ $list = scandir($_SERVER['DOCUMENT_ROOT'] . "/data/films/metadata");
+ $films = [];
+
+ foreach ($list as $item) {
+ if ($item !== "." && $item !== "..") {
+ $films[substr($item, 0, -5)] = json_decode(file_get_contents($_SERVER['DOCUMENT_ROOT'] . "/data/films/metadata/" . $item), true);
+ $films[substr($item, 0, -5)]["id"] = substr($item, 0, -5);
+ }
+ }
+
+ usort($films, function ($a, $b) {
+ return $a['date'] <=> $b['date'];
+ });
+
+ $films = array_reverse($films);
+
+ ?>
+ <?php foreach ($films as $film): ?>
+ "<?= $film["id"] ?>": JSON.parse(atob(`<?= base64_encode(utf8_decode(file_get_contents($_SERVER['DOCUMENT_ROOT'] . "/data/films/metadata/" . $film["id"] . ".json"))) ?>`)),
+ <?php endforeach; ?>
+ }
+
+</script>
+
+<style>
+ #intermission-skipper {
+ backdrop-filter: blur(10px);
+ }
+
+ #video-item {
+ background: black;
+ width: 100%;
+ height: calc(100vh - 76px);
+ margin-top: 44px;
+ }
+
+ #intermission-item {
+ background: black;
+ width: 100%;
+ height: calc(100vh - 76px);
+ margin-top: 44px;
+ }
+
+ #selector {
+ background: #fff;
+ overflow: auto;
+ padding: 50px 8px 8px;
+ }
+
+ #page-title {
+ float: right;
+ margin-top: 5px;
+ margin-right: 10px;
+ }
+
+ #navigation-bar {
+ backdrop-filter: blur(10px);
+ border-bottom: 1px solid #bdbdbd;
+ padding: 4px 4px 7px 4px;
+ position: fixed;
+ top: 32px;
+ left: 0;
+ right: 0;
+ height: 44px;
+ z-index: 9;
+ background: rgba(255, 255, 255, 0.5);
+ }
+
+ #close-btn {
+ vertical-align: middle;
+ cursor: pointer;
+ margin-left: 2px;
+ }
+
+ #close-btn:hover {
+ opacity: .75;
+ }
+
+ #close-btn:active, #close-btn:focus {
+ opacity: .5;
+ }
+
+ #debug {
+ opacity: 0;
+ float: right;
+ margin-top: 7px;
+ margin-right: 15px;
+ transition: opacity 200ms;
+ }
+
+ #debug:hover {
+ opacity: .3;
+ }
+</style>
+
+<div id="navigation-bar">
+ <a href="/" id="logo" style="color: black;text-decoration:none !important;">
+ <img src="https://familine.minteck.org/icns/familine-movies.svg" width="36px" style="vertical-align: middle;">
+ <span style="vertical-align: middle;"><span><span style="font-size:20px;">Familine Movies<?= isset($_FamilineMoviesPlus) && $_FamilineMoviesPlus ? "+" : "" ?></span></span></span></a>
+
+ <span id="page-title">Accueil</span>
+ <span id="debug" style="display:none;">
+ <span style="border-radius:999px;transition:none !important;background:green;width:16px;height:16px;display:inline-block;text-align:right;" id="seeking-indicator"></span>
+ <span style="border-radius:999px;transition:none !important;background:orange;width:16px;height:16px;display:inline-block;text-align:right;" id="time-indicator"></span>
+ <span style="border-radius:999px;transition:none !important;background:cyan;width:16px;height:16px;display:inline-block;text-align:right;" id="health-indicator"></span>
+ <span style="border-radius:999px;transition:none !important;background:darkred;width:16px;height:16px;display:inline-block;text-align:right;" id="seek-indicator"></span>
+ </span>
+</div>
+
+<div class="modal fade" id="triggerWarning">
+ <div class="modal-dialog modal-lg modal-dialog-centered">
+ <div class="modal-content">
+
+ <div class="modal-header">
+ <h4 class="modal-title">Ce contenu n'est peut-être pas pour tout le monde</h4>
+ </div>
+
+ <div class="modal-body">
+ <p>Ce contenu a été marqué comme dangeureux pour certaines personnes par les administrateurs de Familine Movies. En le regardant, vous acceptez être en mesure de consulter ce contenu ; Familine Movies n'est <b>EN AUCUN CAS</b> responsable de toute bléssure physique ou morale à la suite de la consultation de ce contenu.</p>
+
+ <div id="tw_flashing">
+ <h2>TW: F — Épilepsie photosensible</h2>
+ <p>Ce contenu contient des scènes avec des changements de lumière brutaux qui pourraient déclencher des crises d'épilepsie chez certaines personnes.</p>
+ <p>Si vous êtes épileptique, ou que vous ou un membre de votre famille proche a des antécédents de crises à la suite d'un contenu multimédia, il est conseillé de consulter un médecin avant de regarder ce contenu.</p>
+ <p>Même si vous n'êtes pas épileptique, il est conseillé de regarder ce contenu dans une pièce suffisamment éclairée, à une grande distance de l'écran, et en adaptant la luminosité de l'écran à celle de la pièce.</p>
+ </div>
+
+ <div id="tw_suicide">
+ <h2>TW: S — Scènes de suicide</h2>
+ <p>Ce contenu contient des scènes affichant des pratiques de suicide.</p>
+ <p>Familine Movies ne partage pas le mal des gens, <b>ce contenu <u>N'EST PAS</u> un appel à l'aide</b> ; nous sommes en communication constante avec l'auteur ou les auteurs du contenu et nous vous assurons qu'il(s) est/sont en bonne santé.</p>
+ <p>Si vous êtes victime ou témoin de toute action ou parole relative au suicide, vous <b>devez</b> prendre contact avec un professionnel <a href="https://www.infosuicide.org/urgences-aide-ressources/lignes-decoute/" target="_blank">par le biais d'une des nombreuses lignes d'écoute disponibles</a>.</p>
+ </div>
+
+ <div id="tw_violence">
+ <h2>TW: V — Actes physiquement ou mentalement violents</h2>
+ <p>Ce contenu contient des scènes affichant des pratiques de violence physique ou verbale.</p>
+ <p>Familine ne cautionne en aucun cas ces pratiques de violences, qui ont été effectuées uniquement dans le cadre de la réalisation du contenu, et ne saurai être responsable de violences réelles effectuées à la suite de contenu.</p>
+ <p>Il est déconseillé aux jeunes enfants de moins de 13 ans de consulter ce contenu, en partie ou en totalité.</p>
+ </div>
+
+ <div id="tw_sex">
+ <h2>TW: S — Contenu sexuellement explicité</h2>
+ <p>Ce contenu contient des scènes affichant des pratiques pouvant être considérées comme sexuellement explicites.</p>
+ <p>Vous ne devez regarder ce contenu que si vous en êtes totalement conscient et que vous souhaitez voir du contenu pouvant être sexuellement explicite..</p>
+ <p>Les mineurs (personnes de moins de 18 ans) ne <b>sont pas</b> autorisés à consulter ce contenu, <u>même avec l'autorisation de leur responsable légal</u>.</p>
+ </div>
+ </div>
+
+ <div class="modal-footer">
+ <button onclick="home();" class="btn btn-danger" data-modal-close>Quitter</button>
+ <button onclick="watch(document.getElementById('trigger-dismiss-btn').getAttribute('data-fid'), true);" data-fid="" id="trigger-dismiss-btn" type="button" class="btn btn-success" data-dismiss="modal">Regarder quand même</button>
+ </div>
+
+ </div>
+ </div>
+</div>
+
+<style>
+ #intermission-bar {
+ height: 4px;
+ background: #1f1f1f;
+ position: fixed;
+ width: 100%;
+ z-index: 9;
+ top: 76px;
+ }
+
+ #intermission-bar-inner {
+ transition: width 200ms;
+ height: 4px;
+ background: #e0971c;
+ }
+
+ #intermission-skipper {
+ position: fixed;
+ background: #212121b0;
+ top: 80px;
+ width: 100%;
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ z-index: 40;
+ padding: 10px;
+ cursor: not-allowed;
+ }
+
+ #intermission-skipper.valid {
+ cursor: pointer;
+ }
+</style>
+
+<div id="intermission-bar">
+ <div id="intermission-bar-inner" style="width:0;"></div>
+</div>
+
+<div id="intermission-skipper">
+ Patientez encore 15 secondes...
+</div>
+
+<div id="intermission-note" style="opacity:0;" class="alert alert-info container">
+ <strong>Achetez Familine Movies+</strong> pour regarder vos films sans publicité et soutenir le développement de Familine Movies. <a href="/plus" target="_blank">En savoir plus...</a>
+</div>
+
+<video id="video-item" style="display:none;" controls preload="auto" controlslist="nodownload">
+ <source src="about:blank">
+</video>
+
+<video id="intermission-item" preload="auto" controlslist="nodownload">
+ <source src="about:blank">
+</video>
+
+<div id="details" class="container" style="margin-top:50px;margin-bottom:64px;">
+ <h1 id="details-title">Les effets spéciaux, pour les nuls <span class="badge badge-danger" id="4k_badge">4K</span></h1>
+ <p><i><span id="details-date">2001</span> · <span id="details-producer">Michel Baie</span></i></p>
+ <p id="details-description">Comme d'habitude, Michel Baie met le paquet sur les effets spéciaux.</p>
+</div>
+
+<div id="selector" style="display:none;">
+ <br>
+ <div class="alert alert-warning container">
+ <?= implode("\n", $_CONFIG["Movies"]["schedule"]) ?>
+ </div>
+
+ <h1 style="text-align:center;margin-top: 50px;margin-bottom: 32px;">Qu'est-ce qu'on regarde ?</h1>
+ <div class="container">
+
+ <?php
+
+ $times = json_decode(file_get_contents($_SERVER['DOCUMENT_ROOT'] . "/data/durations.json"), true);
+
+ function id3time($file) {
+ $fparts = explode("/", $file);
+ $afile = $fparts[count($fparts) - 1];
+
+ global $times;
+ $date = (int)date('U');
+
+ return $times[$afile]["duration"];
+ }
+
+ function cmp_by_date($a, $b) {
+ return $a["date"] <=> $b["date"];
+ }
+
+ $list = scandir($_SERVER['DOCUMENT_ROOT'] . "/data/films/metadata");
+ $films = [];
+
+ foreach ($list as $item) {
+ if ($item !== "." && $item !== "..") {
+ $films[substr($item, 0, -5)] = json_decode(file_get_contents($_SERVER['DOCUMENT_ROOT'] . "/data/films/metadata/" . $item), true);
+ $films[substr($item, 0, -5)]["id"] = substr($item, 0, -5);
+ }
+ }
+
+ usort($films, function ($a, $b) {
+ return $a['date'] <=> $b['date'];
+ });
+
+ $films = array_reverse($films);
+
+ $seconds = 0;
+ foreach ($times as $titem => $tdata) {
+ if ($titem !== "@items") {
+ $seconds = $seconds + $tdata["seconds"];
+ }
+ }
+
+ $secstr = $seconds . " secondes";
+ if ($seconds > 60) {
+ $secstr = round($seconds / 60) . " minutes";
+ if ($seconds > 3600) {
+ $secstr = round($seconds / 3600) . " heures";
+ }
+ }
+
+ ?>
+
+ <p><i id="counts" data-initial-value="<?= count($films) ?> vidéos, <?= $secstr ?> de contenu"><?= count($films) ?> vidéos, <?= $secstr ?> de contenu</i></p>
+
+ <div id="non-search">
+
+ <h2>Contenu disponible en 4K <span class="badge badge-secondary">Nouveau</span></h2>
+ <div class="row">
+ <?php foreach ($films as $index => $film): ?>
+ <?php if (file_exists($_SERVER['DOCUMENT_ROOT'] . "/data/films/video/" . $film['id'] . '@4K.' . $film["file"]) && !$film["partner"]): ?>
+ <div onclick="watch(`<?= $film["id"] ?>`);" class="col-sm-3 film-card" style="padding-top:15px;padding-bottom:15px;" data-search-filter="<?= str_replace("\"", """, $film["title"]) . " " . str_replace("\"", """, $film["team"]) . " " . str_replace("\"", """, $film["desc"]) . " " . str_replace("\"", """, $film["date"]) ?>">
+ <div class="card">
+ <img class="card-img-top" src="/cdn/image/?i=<?= $film["id"] ?>" alt="Card image">
+ <div class="card-body">
+ <?= file_exists($_SERVER['DOCUMENT_ROOT'] . "/data/films/video/" . $film['id'] . '@4K.' . $film["file"]) ? '<span class="badge badge-danger">4K</span>' : '' ?>
+ <span class="badge badge-secondary">
+ <?php
+
+ echo(id3time($_SERVER['DOCUMENT_ROOT'] . "/data/films/video/" . $film["id"] . "." . $film["file"]));
+
+ ?></span> <?= isset($film["soon"]) && $film["soon"] ? '<span class="badge badge-warning badge-pill">Prochainement !</span>' : '' ?> <?= isset($film["partner"]) && $film["partner"] ? '<span class="badge badge-info">Suggestion</span>' : '' ?> <?php
+
+ if (isset($film['trigger']) && $film['trigger']) {
+ echo('<span class="badge badge-primary">TW: ');
+ if (isset($film["tw_flashing"]) && $film["tw_flashing"]) {
+ echo("F");
+ }
+ if (isset($film["tw_suicide"]) && $film["tw_suicide"]) {
+ echo("S");
+ }
+ if (isset($film["tw_violence"]) && $film["tw_violence"]) {
+ echo("V");
+ }
+ if (isset($film["tw_sex"]) && $film["tw_sex"]) {
+ echo("X");
+ }
+ echo("</span>");
+ }
+
+ ?><br>
+ <h4 class="card-title" style="text-overflow: ellipsis;white-space: nowrap;overflow: hidden;"><?= $film["title"] ?></h4>
+ <p class="card-text">
+ <span style="display: block;text-overflow: ellipsis;white-space: nowrap;overflow: hidden;"><?= $film["team"] ?></span>
+ <span style="display: block;text-overflow: ellipsis;white-space: nowrap;overflow: hidden;"><?= substr($film["date"], 0, 4) ?></span>
+ </p>
+ </div>
+ </div>
+ </div>
+ <?php endif; ?>
+ <?php endforeach; ?>
+ </div>
+
+ <h2>Les aventures de <?= $_CONFIG["Movies"]["adventures"] ?></h2>
+ <div class="row">
+ <?php foreach ($films as $index => $film): ?>
+ <?php if (!file_exists($_SERVER['DOCUMENT_ROOT'] . "/data/films/video/" . $film['id'] . '@4K.' . $film["file"]) && (strpos($film["title"], "Les aventures de " . $_CONFIG["Movies"]["adventures"]) !== false || strpos($film["title"], "Vacances de " . $_CONFIG["Movies"]["adventures"]) !== false)): ?>
+ <div onclick="watch(`<?= $film["id"] ?>`);" class="col-sm-3 film-card" style="padding-top:15px;padding-bottom:15px;" data-search-filter="<?= str_replace("\"", """, $film["title"]) . " " . str_replace("\"", """, $film["team"]) . " " . str_replace("\"", """, $film["desc"]) . " " . str_replace("\"", """, $film["date"]) ?>">
+ <div class="card">
+ <img class="card-img-top" src="/cdn/image/?i=<?= $film["id"] ?>" alt="Card image">
+ <div class="card-body">
+ <?= file_exists($_SERVER['DOCUMENT_ROOT'] . "/data/films/video/" . $film['id'] . '@4K.' . $film["file"]) ? '<span class="badge badge-danger">4K</span>' : '' ?>
+ <span class="badge badge-secondary">
+ <?php
+
+ echo(id3time($_SERVER['DOCUMENT_ROOT'] . "/data/films/video/" . $film["id"] . "." . $film["file"]));
+
+ ?></span> <?= isset($film["soon"]) && $film["soon"] ? '<span class="badge badge-warning badge-pill">Prochainement !</span>' : '' ?> <?= isset($film["partner"]) && $film["partner"] ? '<span class="badge badge-info">Suggestion</span>' : '' ?> <?php
+
+ if (isset($film['trigger']) && $film['trigger']) {
+ echo('<span class="badge badge-primary">TW: ');
+ if (isset($film["tw_flashing"]) && $film["tw_flashing"]) {
+ echo("F");
+ }
+ if (isset($film["tw_suicide"]) && $film["tw_suicide"]) {
+ echo("S");
+ }
+ if (isset($film["tw_violence"]) && $film["tw_violence"]) {
+ echo("V");
+ }
+ if (isset($film["tw_sex"]) && $film["tw_sex"]) {
+ echo("X");
+ }
+ echo("</span>");
+ }
+
+ ?><br>
+ <h4 class="card-title" style="text-overflow: ellipsis;white-space: nowrap;overflow: hidden;"><?= $film["title"] ?></h4>
+ <p class="card-text">
+ <span style="display: block;text-overflow: ellipsis;white-space: nowrap;overflow: hidden;"><?= $film["team"] ?></span>
+ <span style="display: block;text-overflow: ellipsis;white-space: nowrap;overflow: hidden;"><?= substr($film["date"], 0, 4) ?></span>
+ </p>
+ </div>
+ </div>
+ </div>
+ <?php endif; ?>
+ <?php endforeach; ?>
+ </div>
+
+ <h2>Musiques par YonKaGor</h2>
+ <div class="row">
+ <?php foreach ($films as $index => $film): ?>
+ <?php if ($film["team"] === "YonKaGor" && $film["partner"]): ?>
+ <div onclick="watch(`<?= $film["id"] ?>`);" class="col-sm-3 film-card" style="padding-top:15px;padding-bottom:15px;" data-search-filter="<?= str_replace("\"", """, $film["title"]) . " " . str_replace("\"", """, $film["team"]) . " " . str_replace("\"", """, $film["desc"]) . " " . str_replace("\"", """, $film["date"]) ?>">
+ <div class="card">
+ <img class="card-img-top" src="/cdn/image/?i=<?= $film["id"] ?>" alt="Card image">
+ <div class="card-body">
+ <?= file_exists($_SERVER['DOCUMENT_ROOT'] . "/data/films/video/" . $film['id'] . '@4K.' . $film["file"]) ? '<span class="badge badge-danger">4K</span>' : '' ?>
+ <span class="badge badge-secondary">
+ <?php
+
+ echo(id3time($_SERVER['DOCUMENT_ROOT'] . "/data/films/video/" . $film["id"] . "." . $film["file"]));
+
+ ?></span> <?= isset($film["soon"]) && $film["soon"] ? '<span class="badge badge-warning badge-pill">Prochainement !</span>' : '' ?> <?= isset($film["partner"]) && $film["partner"] ? '<span class="badge badge-info">Suggestion</span>' : '' ?> <?php
+
+ if (isset($film['trigger']) && $film['trigger']) {
+ echo('<span class="badge badge-primary">TW: ');
+ if (isset($film["tw_flashing"]) && $film["tw_flashing"]) {
+ echo("F");
+ }
+ if (isset($film["tw_suicide"]) && $film["tw_suicide"]) {
+ echo("S");
+ }
+ if (isset($film["tw_violence"]) && $film["tw_violence"]) {
+ echo("V");
+ }
+ if (isset($film["tw_sex"]) && $film["tw_sex"]) {
+ echo("X");
+ }
+ echo("</span>");
+ }
+
+ ?><br>
+ <h4 class="card-title" style="text-overflow: ellipsis;white-space: nowrap;overflow: hidden;"><?= $film["title"] ?></h4>
+ <p class="card-text">
+ <span style="display: block;text-overflow: ellipsis;white-space: nowrap;overflow: hidden;"><?= $film["team"] ?></span>
+ <span style="display: block;text-overflow: ellipsis;white-space: nowrap;overflow: hidden;"><?= substr($film["date"], 0, 4) ?></span>
+ </p>
+ </div>
+ </div>
+ </div>
+ <?php endif; ?>
+ <?php endforeach; ?>
+ </div>
+
+ <h2>L'ère <?= $_CONFIG["Movies"]["legacy"] ?> <small>(2011-2017)</small></h2>
+ <div class="row">
+ <?php foreach ($films as $index => $film): ?>
+ <?php if (!file_exists($_SERVER['DOCUMENT_ROOT'] . "/data/films/video/" . $film['id'] . '@4K.' . $film["file"]) && (int)$film["date"] < 201705 !== false && strpos($film["title"], "Les aventures de " . $_CONFIG["Movies"]["adventures"]) === false && $film["team"] !== "YonKaGor" && strpos($film["title"], "Vacances de " . $_CONFIG["Movies"]["adventures"]) === false): ?>
+ <div onclick="watch(`<?= $film["id"] ?>`);" class="col-sm-3 film-card" style="padding-top:15px;padding-bottom:15px;" data-search-filter="<?= str_replace("\"", """, $film["title"]) . " " . str_replace("\"", """, $film["team"]) . " " . str_replace("\"", """, $film["desc"]) . " " . str_replace("\"", """, $film["date"]) ?>">
+ <div class="card">
+ <img class="card-img-top" src="/cdn/image/?i=<?= $film["id"] ?>" alt="Card image">
+ <div class="card-body">
+ <?= file_exists($_SERVER['DOCUMENT_ROOT'] . "/data/films/video/" . $film['id'] . '@4K.' . $film["file"]) ? '<span class="badge badge-danger">4K</span>' : '' ?>
+ <span class="badge badge-secondary">
+ <?php
+
+ echo(id3time($_SERVER['DOCUMENT_ROOT'] . "/data/films/video/" . $film["id"] . "." . $film["file"]));
+
+ ?></span> <?= isset($film["soon"]) && $film["soon"] ? '<span class="badge badge-warning badge-pill">Prochainement !</span>' : '' ?> <?= isset($film["partner"]) && $film["partner"] ? '<span class="badge badge-info">Suggestion</span>' : '' ?> <?php
+
+ if (isset($film['trigger']) && $film['trigger']) {
+ echo('<span class="badge badge-primary">TW: ');
+ if (isset($film["tw_flashing"]) && $film["tw_flashing"]) {
+ echo("F");
+ }
+ if (isset($film["tw_suicide"]) && $film["tw_suicide"]) {
+ echo("S");
+ }
+ if (isset($film["tw_violence"]) && $film["tw_violence"]) {
+ echo("V");
+ }
+ if (isset($film["tw_sex"]) && $film["tw_sex"]) {
+ echo("X");
+ }
+ echo("</span>");
+ }
+
+ ?><br>
+ <h4 class="card-title" style="text-overflow: ellipsis;white-space: nowrap;overflow: hidden;"><?= $film["title"] ?></h4>
+ <p class="card-text">
+ <span style="display: block;text-overflow: ellipsis;white-space: nowrap;overflow: hidden;"><?= $film["team"] ?></span>
+ <span style="display: block;text-overflow: ellipsis;white-space: nowrap;overflow: hidden;"><?= substr($film["date"], 0, 4) ?></span>
+ </p>
+ </div>
+ </div>
+ </div>
+ <?php endif; ?>
+ <?php endforeach; ?>
+ </div>
+
+ <h2>Tout <?= $_CONFIG["Movies"]["current"] ?> à un seul endroit</h2>
+ <div class="row">
+ <?php foreach ($films as $index => $film): ?>
+ <?php if (!file_exists($_SERVER['DOCUMENT_ROOT'] . "/data/films/video/" . $film['id'] . '@4K.' . $film["file"]) && (int)$film["date"] > 201705 !== false && strpos($film["title"], "Les aventures de " . $_CONFIG["Movies"]["adventures"]) === false && $film["team"] !== "YonKaGor" && strpos($film["title"], "Vacances de " . $_CONFIG["Movies"]["adventures"]) === false): ?>
+ <div onclick="watch(`<?= $film["id"] ?>`);" class="col-sm-3 film-card" style="padding-top:15px;padding-bottom:15px;" data-search-filter="<?= str_replace("\"", """, $film["title"]) . " " . str_replace("\"", """, $film["team"]) . " " . str_replace("\"", """, $film["desc"]) . " " . str_replace("\"", """, $film["date"]) ?>">
+ <div class="card">
+ <img class="card-img-top" src="/cdn/image/?i=<?= $film["id"] ?>" alt="Card image">
+ <div class="card-body">
+ <?= file_exists($_SERVER['DOCUMENT_ROOT'] . "/data/films/video/" . $film['id'] . '@4K.' . $film["file"]) ? '<span class="badge badge-danger">4K</span>' : '' ?>
+ <span class="badge badge-secondary">
+ <?php
+
+ echo(id3time($_SERVER['DOCUMENT_ROOT'] . "/data/films/video/" . $film["id"] . "." . $film["file"]));
+
+ ?></span> <?= isset($film["soon"]) && $film["soon"] ? '<span class="badge badge-warning badge-pill">Prochainement !</span>' : '' ?> <?= isset($film["partner"]) && $film["partner"] ? '<span class="badge badge-info">Suggestion</span>' : '' ?> <?php
+
+ if (isset($film['trigger']) && $film['trigger']) {
+ echo('<span class="badge badge-primary">TW: ');
+ if (isset($film["tw_flashing"]) && $film["tw_flashing"]) {
+ echo("F");
+ }
+ if (isset($film["tw_suicide"]) && $film["tw_suicide"]) {
+ echo("S");
+ }
+ if (isset($film["tw_violence"]) && $film["tw_violence"]) {
+ echo("V");
+ }
+ if (isset($film["tw_sex"]) && $film["tw_sex"]) {
+ echo("X");
+ }
+ echo("</span>");
+ }
+
+ ?><br>
+ <h4 class="card-title" style="text-overflow: ellipsis;white-space: nowrap;overflow: hidden;"><?= $film["title"] ?></h4>
+ <p class="card-text">
+ <span style="display: block;text-overflow: ellipsis;white-space: nowrap;overflow: hidden;"><?= $film["team"] ?></span>
+ <span style="display: block;text-overflow: ellipsis;white-space: nowrap;overflow: hidden;"><?= substr($film["date"], 0, 4) ?></span>
+ </p>
+ </div>
+ </div>
+ </div>
+ <?php endif; ?>
+ <?php endforeach; ?>
+ </div>
+
+ </div>
+ </div>
+</div>
+
+<script>
+ setInterval(() => {
+ document.getElementById("intermission-skipper").onclick = document.getElementById('intermission-item').onended = () => {
+ if (document.getElementById("intermission-skipper").classList.contains("valid")) {
+ document.getElementById('intermission-item').pause();
+ document.getElementById('intermission-item').src = "about:blank";
+ document.getElementById('intermission-item').style.display = "none";
+ document.getElementById('video-item').style.display = "";
+ document.getElementById('intermission-bar').style.display = "none";
+ document.getElementById('intermission-skipper').style.display = "none";
+ document.getElementById('intermission-note').style.display = "none";
+ document.getElementById('video-item').src = "/tv/watch.php?i=" + selectedFilm;
+ document.getElementById('video-item').play();
+ }
+ }
+ }, 1000)
+</script>
+
+<script>
+ function selector(status) {
+ if (status) {
+ document.getElementById("selector").style.display = "";
+ document.body.style.overflow = "";
+ } else {
+ document.getElementById("selector").style.display = "none";
+ document.body.style.overflow = "";
+ }
+ }
+
+ selectedFilm = "";
+ function watch(fid, ignoreTrigger) {
+ document.getElementById('details').style.display = "";
+ selectedFilm = fid;
+
+ if (FilmsData[fid].trigger && !ignoreTrigger) {
+ document.getElementById("tw_flashing").style.display = "none";
+ document.getElementById("tw_suicide").style.display = "none";
+ document.getElementById("tw_violence").style.display = "none";
+ document.getElementById("tw_sex").style.display = "none";
+
+ if (FilmsData[fid]["tw_flashing"]) document.getElementById("tw_flashing").style.display = "";
+ if (FilmsData[fid]["tw_suicide"]) document.getElementById("tw_suicide").style.display = "";
+ if (FilmsData[fid]["tw_violence"]) document.getElementById("tw_violence").style.display = "";
+ if (FilmsData[fid]["tw_sex"]) document.getElementById("tw_sex").style.display = "";
+
+ document.getElementById("trigger-dismiss-btn").setAttribute("data-fid", fid);
+ $("#triggerWarning").modal();
+ } else {
+ document.getElementById("intermission-skipper").classList.remove("valid")
+ document.getElementById("intermission-bar-inner").style.width = "0";
+ document.getElementById('intermission-note').style.display = "";
+ document.getElementById("page-title").innerHTML = FilmsData[fid].title + ` <span class="badge badge-secondary">fin à <span id="enddate">--:--</span></span> <img onclick="home();" alt="Quitter" title="Arrêter la vidéo" id="close-btn" src="/close.svg">`;
+ selector(false);
+ window.scrollTo(0, 0);
+ document.title = FilmsData[fid].title + " | Familine Movies<?= isset($_FamilineMoviesPlus) && $_FamilineMoviesPlus ? "+" : "" ?>";
+ document.getElementById('intermission-item').src = "/tv/intermission.php";
+ document.getElementById('intermission-item').play();
+ document.getElementById("debug").style.display = "";
+
+ document.getElementById('intermission-item').style.display = "";
+ document.getElementById('intermission-bar').style.display = "";
+ document.getElementById('intermission-skipper').style.display = "";
+ document.getElementById('video-item').style.display = "none";
+
+ document.getElementById("details-title").innerHTML = FilmsData[fid].title;
+ document.getElementById("details-producer").innerHTML = FilmsData[fid].team;
+ document.getElementById("details-description").innerHTML = FilmsData[fid].desc;
+ document.getElementById("details-date").innerHTML = FilmsData[fid].date.toString().substr(0, 4);
+
+ <?php if (isset($_FamilineMoviesPlus) && $_FamilineMoviesPlus): ?>
+ document.getElementById('intermission-item').pause();
+ document.getElementById('intermission-item').src = "about:blank";
+ document.getElementById('intermission-item').style.display = "none";
+ document.getElementById('video-item').style.display = "";
+ document.getElementById('intermission-bar').style.display = "none";
+ document.getElementById('intermission-skipper').style.display = "none";
+ document.getElementById('intermission-note').style.display = "none";
+ document.getElementById('video-item').src = "/tv/watch.php?i=" + selectedFilm;
+ document.getElementById('video-item').play();
+ <?php endif; ?>
+ }
+ }
+
+ function home() {
+ document.getElementById('video-item').pause();
+ document.getElementById('video-item').style.display = "none";
+ document.getElementById('intermission-item').pause();
+ document.getElementById('intermission-item').style.display = "none";
+ document.getElementById('intermission-skipper').style.display = "none";
+ document.getElementById('intermission-bar').style.display = "none";
+ document.getElementById('details').style.display = "none";
+ document.getElementById('body').style.overflow = "auto";
+ selector(true);
+ window.scrollTo(0, 0);
+ document.title = "Accueil | Familine Movies";
+ document.getElementById("debug").style.display = "none";
+ document.getElementById("page-title").innerHTML = "Accueil";
+ document.getElementById('video-item').src = "about:blank";
+ document.getElementById('intermission-item').src = "about:blank";
+ }
+
+ home();
+ selector(true);
+
+ document.getElementById('video-item').addEventListener('progress', () => {
+ document.getElementById("seeking-indicator").style.background = "black";
+ setTimeout(() => {
+ document.getElementById("seeking-indicator").style.background = "green";
+ }, 100)
+ })
+
+ document.getElementById('video-item').addEventListener('timeupdate', () => {
+ document.getElementById("time-indicator").style.background = "black";
+ setTimeout(() => {
+ document.getElementById("time-indicator").style.background = "orange";
+ }, 100)
+ })
+
+ document.getElementById('video-item').addEventListener('waiting', () => {
+ document.getElementById("health-indicator").style.background = "black";
+ setTimeout(() => {
+ document.getElementById("health-indicator").style.background = "cyan";
+ }, 100)
+ })
+
+ document.getElementById('video-item').addEventListener('seeking', () => {
+ document.getElementById("seek-indicator").style.background = "black";
+ setTimeout(() => {
+ document.getElementById("seek-indicator").style.background = "darkred";
+ }, 100)
+ })
+
+ document.getElementById('intermission-item').addEventListener('progress', () => {
+ document.getElementById("seeking-indicator").style.background = "black";
+ setTimeout(() => {
+ document.getElementById("seeking-indicator").style.background = "green";
+ }, 100)
+ })
+
+ document.getElementById('intermission-item').addEventListener('timeupdate', () => {
+ document.getElementById("time-indicator").style.background = "black";
+ setTimeout(() => {
+ document.getElementById("time-indicator").style.background = "orange";
+ }, 100)
+ })
+
+ document.getElementById('intermission-item').addEventListener('waiting', () => {
+ document.getElementById("health-indicator").style.background = "black";
+ setTimeout(() => {
+ document.getElementById("health-indicator").style.background = "cyan";
+ }, 100)
+ })
+
+ document.getElementById('intermission-item').addEventListener('seeking', () => {
+ document.getElementById("seek-indicator").style.background = "black";
+ setTimeout(() => {
+ document.getElementById("seek-indicator").style.background = "darkred";
+ }, 100)
+ })
+
+ setInterval(() => {
+ if (document.getElementById('video-item').paused) return;
+ document.getElementById('video-item').focus();
+
+ remaining = document.getElementById('video-item').duration - document.getElementById('video-item').currentTime;
+ remainingm = Math.ceil(remaining/60);
+
+ try {
+ arr = new Date(new Date().getTime() + (remainingm*(60*1000))).toString().split(" ")[4].split(":");
+ arr.pop();
+ corr = arr.join(":");
+ arr2 = new Date().toString().split(" ")[4].split(":");
+ arr2.pop();
+ corr2 = arr2.join(":");
+ if (corr !== corr2) {
+ document.getElementById('enddate').innerText = corr;
+ } else {
+ document.getElementById('enddate').innerText = "--:--";
+ }
+ } catch (e) {}
+ }, 50)
+
+ setInterval(() => {
+ document.getElementById("intermission-bar-inner").style.width = (100 * (document.getElementById("intermission-item").currentTime / document.getElementById("intermission-item").duration)) + "%";
+
+ if (document.getElementById("intermission-item").currentTime > 15) {
+ document.getElementById("intermission-skipper").innerText = "Cliquez ici pour ignorer l'annonce";
+ document.getElementById("intermission-skipper").classList.add("valid");
+ } else {
+ if (Math.ceil(15 - document.getElementById("intermission-item").currentTime) > 1) {
+ document.getElementById("intermission-skipper").innerText = "Patientez encore " + Math.ceil(15 - document.getElementById("intermission-item").currentTime) + " secondes...";
+ } else {
+ document.getElementById("intermission-skipper").innerText = "Patientez encore " + Math.ceil(15 - document.getElementById("intermission-item").currentTime) + " seconde...";
+ }
+ }
+ }, 50)
+</script>
+
+<?php require_once $_SERVER['DOCUMENT_ROOT'] . "/includes/footer.php"; ?>
|