mirror of
https://github.com/anthonyaxenov/iptv.git
synced 2024-11-25 06:44:25 +00:00
Доделал визуалку (табы, FAQ, адаптив)
This commit is contained in:
parent
ced2c32aa1
commit
efc1324b58
248
index.php
248
index.php
@ -62,7 +62,7 @@ if (array_intersect(array_keys($_GET), array_keys($ini))) {
|
||||
</head>
|
||||
<body class="bg-dark text-light">
|
||||
<div class="col-lg-8 mx-auto p-3 py-md-5">
|
||||
<header class="pb-3 mb-5 border-bottom">
|
||||
<header class="pb-3 mb-3">
|
||||
<a href="/" class="text-light text-decoration-none">
|
||||
<h1>Самообновляемые плейлисты IPTV</h1>
|
||||
</a>
|
||||
@ -74,122 +74,146 @@ if (array_intersect(array_keys($_GET), array_keys($ini))) {
|
||||
</header>
|
||||
|
||||
<main>
|
||||
<div class="container mb-5">
|
||||
<p>
|
||||
На этой странице собраны ссылки на IPTV-плейлисты, которые находятся в открытом доступе.
|
||||
Они бесплатны для использования. Список плейлистов отбирается мной вручную и проверяется здесь автоматически.
|
||||
Поддержкой этих плейлистов занимаются сервисы и ресурсы, указанные как источник.
|
||||
Вопросы работоспособности плейлистов адресуйте тем, кто несёт за них ответственность.
|
||||
</p>
|
||||
<p>Чтобы подключить плейлист, нужно в настройках IPTV-плеера указать ссылку из последней колонки.</p>
|
||||
<p>
|
||||
Я не гарантирую корректность информации, которую ты увидишь здесь.
|
||||
Рекомендую проверять желаемые плейлисты вручную, ибо нет никаких гарантий:
|
||||
</p>
|
||||
<ul>
|
||||
<li>
|
||||
что это вообще плейлисты, а не чьи-то архивы с мокрыми кисками;
|
||||
</li>
|
||||
<li>
|
||||
что плейлисты по разным ссылкам не дублируют друг друга и отличаются каналами хотя бы на четверть;
|
||||
</li>
|
||||
<li>
|
||||
что плейлист работоспособен (каналы работают, корректно названы, имеют аудио, etc.);
|
||||
</li>
|
||||
<li>
|
||||
что подгрузится корректное количество каналов и их список (хотя на это я ещё могу влиять и
|
||||
стараюсь как-то улучшить).
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
<div class="container mb-5">
|
||||
<h2>Статусы проверки плейлистов</h2>
|
||||
<ul>
|
||||
<li>
|
||||
<span class="badge small bg-warning text-dark">?</span> Загрузка данных.
|
||||
</li>
|
||||
<li>
|
||||
<span class="badge small text-dark bg-success">online</span> Плейлист активен. Фактически
|
||||
означает, что удалённый файл успешно скачивается.
|
||||
</li>
|
||||
<li>
|
||||
<span class="badge small text-dark bg-secondary">unknown</span> Состояние неизвестно. Скорее всего, плейлист активен, но получить данные о нём не удалось.
|
||||
</li>
|
||||
<li>
|
||||
<span class="badge small text-dark bg-secondary">timeout</span> Не удалось вовремя проверить плейлист.
|
||||
</li>
|
||||
<li>
|
||||
<span class="badge small text-dark bg-danger">offline</span> Плейлист неактивен.
|
||||
</li>
|
||||
<li>
|
||||
<span class="badge small text-dark bg-danger">error</span> Ошибка при проверке плейлиста.
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
<div class="container my-5">
|
||||
<h2>Список плейлистов</h2>
|
||||
<table class="table table-dark table-hover">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>ID</th>
|
||||
<th>Информация о плейлисте</th>
|
||||
<th>Каналов</th>
|
||||
<th title="Нажми на ссылку, чтобы скопировать её в буфер обмена">Ссылка</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<?php
|
||||
foreach ($ini as $id => $element) {
|
||||
if (empty($element['pls'])) {
|
||||
continue;
|
||||
}
|
||||
?>
|
||||
<tr class="pls" data-playlist-id="<?=$id?>">
|
||||
<td class="text-center id">
|
||||
<strong><?=$id?></strong>
|
||||
</td>
|
||||
<td class="info">
|
||||
<strong><?=$element['name'] ?: "Плейлист #" . $id?></strong>
|
||||
<span class="badge small bg-warning text-dark status">?</span>
|
||||
<div class="small">
|
||||
<a href="<?=$element['pls']?>"
|
||||
target="_blank"
|
||||
rel="noopener nofollow">M3U</a>
|
||||
<?php
|
||||
if (!empty($element['src'])) { ?>
|
||||
| <a href="<?=$element['src']?>"
|
||||
target="_blank"
|
||||
rel="noopener nofollow">Источник</a>
|
||||
<ul class="nav nav-tabs" id="myTab" role="tablist">
|
||||
<li class="nav-item" role="presentation">
|
||||
<button class="nav-link active" id="list-tab" data-bs-toggle="tab" data-bs-target="#list" type="button"
|
||||
role="tab" aria-controls="list" aria-selected="true">Список</button>
|
||||
</li>
|
||||
<li class="nav-item" role="presentation">
|
||||
<button class="nav-link" id="faq-tab" data-bs-toggle="tab" data-bs-target="#faq" type="button"
|
||||
role="tab" aria-controls="faq" aria-selected="false">FAQ</button>
|
||||
</li>
|
||||
</ul>
|
||||
<div class="tab-content" id="myTabContent">
|
||||
<div class="tab-pane fade show active pt-5" id="list" role="tabpanel" aria-labelledby="list-tab">
|
||||
<table class="table table-dark table-hover small">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>ID</th>
|
||||
<th>Информация о плейлисте</th>
|
||||
<th>Каналов</th>
|
||||
<th title="Нажми на ссылку, чтобы скопировать её в буфер обмена">Ссылка</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<?php
|
||||
foreach ($ini as $id => $element) {
|
||||
if (empty($element['pls'])) {
|
||||
continue;
|
||||
}
|
||||
?>
|
||||
<tr class="pls" data-playlist-id="<?=$id?>">
|
||||
<td class="text-center id">
|
||||
<strong><?=$id?></strong>
|
||||
</td>
|
||||
<td class="info">
|
||||
<strong><?=$element['name'] ?: "Плейлист #" . $id?></strong>
|
||||
<span class="badge small bg-warning text-dark status">?</span>
|
||||
<div class="small">
|
||||
<a href="<?=$element['pls']?>"
|
||||
target="_blank"
|
||||
rel="noopener nofollow">M3U</a>
|
||||
<?php
|
||||
} ?>
|
||||
<?php
|
||||
if (!empty($element['desc'])) { ?>
|
||||
<br/><p class="my-1"><?=$element['desc']?></p>
|
||||
if (!empty($element['src'])) { ?>
|
||||
| <a href="<?=$element['src']?>"
|
||||
target="_blank"
|
||||
rel="noopener nofollow">Источник</a>
|
||||
<?php
|
||||
} ?>
|
||||
<?php
|
||||
} ?>
|
||||
</div>
|
||||
</td>
|
||||
<td class="text-center count">
|
||||
<div class="spinner-border text-success" role="status">
|
||||
<span class="visually-hidden">загрузка...</span>
|
||||
</div>
|
||||
</td>
|
||||
<td class="col-3">
|
||||
if (!empty($element['desc'])) { ?>
|
||||
<br/><p class="my-1"><?=$element['desc']?></p>
|
||||
<?php
|
||||
} ?>
|
||||
</div>
|
||||
</td>
|
||||
<td class="text-center count">
|
||||
<div class="spinner-border text-success" role="status">
|
||||
<span class="visually-hidden">загрузка...</span>
|
||||
</div>
|
||||
</td>
|
||||
<td class="col-3">
|
||||
<span onclick="prompt('Скопируй адрес плейлиста', '<?=$my_url?><?=$id?>')"
|
||||
data-bs-toggle="tooltip"
|
||||
data-bs-placement="top"
|
||||
title="Нажми на ссылку, чтобы скопировать её в буфер обмена"
|
||||
class="font-monospace">
|
||||
data-bs-toggle="tooltip"
|
||||
data-bs-placement="top"
|
||||
title="Нажми на ссылку, чтобы скопировать её в буфер обмена"
|
||||
class="font-monospace">
|
||||
<?=$my_url?><?=$id?>
|
||||
</span>
|
||||
</td>
|
||||
</tr>
|
||||
<?php
|
||||
} ?>
|
||||
</tbody>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
<?php
|
||||
} ?>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<div class="tab-pane fade p-3 pt-5" id="faq" role="tabpanel" aria-labelledby="profile-tab">
|
||||
<h2>Что здесь происходит?</h2>
|
||||
<p class="mb-5">
|
||||
На этой странице собраны ссылки на IPTV-плейлисты, которые находятся в открытом доступе.
|
||||
Они отбираются мной вручную и проверяются здесь автоматически.
|
||||
Поддержкой этих плейлистов занимаются администраторы ресурсов, указанные как источник.
|
||||
Вопросы работоспособности плейлистов адресуйте тем, кто несёт за них ответственность.
|
||||
</p>
|
||||
|
||||
<h2>Эти плейлисты бесплатны?</h2>
|
||||
<p class="mb-5">Да, но в любой момент могут перестать таковыми быть.</p>
|
||||
|
||||
<h2>Как подключить плейлист?</h2>
|
||||
<p class="mb-5">
|
||||
<a href="https://www.google.com/search?q=%D0%BA%D0%B0%D0%BA%20%D0%BF%D0%BE%D0%B4%D0%BA%D0%BB%D1%8E%D1%87%D0%B8%D1%82%D1%8C%20iptv%20%D0%BF%D0%BB%D0%B5%D0%B9%D0%BB%D0%B8%D1%81%D1%82%20%D0%BF%D0%BE%20%D1%81%D1%81%D1%8B%D0%BB%D0%BA%D0%B5">
|
||||
Добавить в твой IPTV-плеер</a> ссылку из последней колонки.
|
||||
</p>
|
||||
|
||||
<h2>Что означают статусы плейлистов?</h2>
|
||||
<ul class="mb-5">
|
||||
<li>
|
||||
<span class="badge small bg-warning text-dark">?</span> Загрузка данных.
|
||||
</li>
|
||||
<li>
|
||||
<span class="badge small text-dark bg-success">online</span> Плейлист активен. Фактически
|
||||
означает, что удалённый файл успешно скачивается.
|
||||
</li>
|
||||
<li>
|
||||
<span class="badge small text-dark bg-secondary">unknown</span> Состояние неизвестно. Скорее всего, плейлист активен, но получить данные о нём не удалось.
|
||||
</li>
|
||||
<li>
|
||||
<span class="badge small text-dark bg-secondary">timeout</span> Не удалось вовремя проверить плейлист.
|
||||
</li>
|
||||
<li>
|
||||
<span class="badge small text-dark bg-danger">offline</span> Плейлист неактивен.
|
||||
</li>
|
||||
<li>
|
||||
<span class="badge small text-dark bg-danger">error</span> Ошибка при проверке плейлиста.
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
<h2>Почему нельзя доверять результатам проверки?</h2>
|
||||
<p>
|
||||
Я не гарантирую корректность информации, которую ты увидишь здесь.
|
||||
Рекомендую проверять желаемые плейлисты вручную, ибо нет никаких гарантий:
|
||||
</p>
|
||||
<ul class="mb-5">
|
||||
<li>
|
||||
что это вообще плейлисты, а не чьи-то архивы с мокрыми кисками;
|
||||
</li>
|
||||
<li>
|
||||
что плейлисты по разным ссылкам не дублируют друг друга и отличаются каналами хотя бы на четверть;
|
||||
</li>
|
||||
<li>
|
||||
что плейлист работоспособен (каналы работают, корректно названы, имеют аудио, etc.);
|
||||
</li>
|
||||
<li>
|
||||
что подгрузится корректное количество каналов и их список (хотя на это я ещё могу влиять и
|
||||
стараюсь как-то улучшить).
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
<h2>Как пополнить этот список?</h2>
|
||||
<p class="mb-5">
|
||||
Сделать pull-request в <a href="https://github.com/anthonyaxenov/iptv">репозиторий</a>.
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</main>
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user