Есть страница созданная для конвертации IPTV Плейлистов. Код установлен с помощью расширения Pages.
Так вот. Код этой страницы ломает стиль поля поиска в шапке и так же выбор стиля. Скрин ниже -
Вот не как не могу понять что именно надо изменить что бы не конфликтовало.
Сам код страницы такой -
Код: Выделить всё
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Конвертер IPTV Плейлистов</title>
<style>
h1 {
color: #333;
}
select, textarea, button {
margin: 10px 0;
padding: 10px;
width: 100%;
font-size: 16px;
}
textarea {
height: 200px;
}
button {
background-color: #32384d;
color: white;
border: none;
cursor: pointer;
}
button:hover {
background-color: #45a049;
}
.buttons {
display: flex;
justify-content: space-between;
}
.buttons button {
width: 48%;
}
li {
color: green;
}
label[for="format"] {
color: #1E90FF; /* Ярко-синий цвет */
}
</style>
<h1>Конвертер IPTV Плейлистов</h1>
<!-- Описание -->
<div class="description">
<p>Этот инструмент предназначен для конвертации IPTV плейлистов из формата M3U в различные другие форматы. Вы можете загрузить свой плейлист в формате M3U и преобразовать его в такие форматы, как XSPF, PLS, Opticum HD, OpenBox X5 HD и другие.</p>
<p>Просто вставьте свой плейлист в текстовое поле, выберите формат вывода и нажмите на кнопку "Конвертировать". Результат можно будет скачать в виде файла с уникальным названием, включающим дату и время конвертации.</p>
</div>
<!-- Инструкция -->
<div class="instruction">
<h2>Как использовать:</h2>
<ul>
<li><strong>Шаг 1:</strong> Вставьте ваш IPTV плейлист в текстовое поле "Плейлист". Плейлист должен быть в формате M3U.</li>
<li><strong>Шаг 2:</strong> Выберите формат, в который вы хотите конвертировать плейлист, используя выпадающий список "Формат". Доступные форматы включают:
<ul>
<li>M3U</li>
<li>Samsung</li>
<li>OpenBox</li>
<li>Enigma2</li>
<li>WMPlayer</li>
<li>MPClassic</li>
<li>VLC</li>
<li>Uppod</li>
<li>LG</li>
<li>Azbox</li>
<li>PLS</li>
<li>Opticum HD</li>
<li>OpenBox X5 HD</li>
</ul>
</li>
<li><strong>Шаг 3:</strong> Нажмите кнопку "Конвертировать", чтобы получить результат в выбранном формате.</li>
<li><strong>Шаг 4:</strong> Нажмите кнопку "Скачать файл", чтобы загрузить преобразованный плейлист на ваш компьютер. Имя файла будет содержать дату и время конвертации.</li>
<li><strong>Шаг 5:</strong> Если вы хотите начать заново, нажмите кнопку "Очистить все поля".</li>
</ul>
</div>
<br>
<br>
<!-- Выбор формата -->
<label for="format">Выберите формат:</label>
<select id="format">
<option value="m3u">M3U</option>
<option value="samsung">Samsung</option>
<option value="openbox">OpenBox</option>
<option value="enigma2">Enigma2</option>
<option value="lg">LG</option>
<option value="wmplayer">WMPlayer</option>
<option value="mpclassic">MPClassic</option>
<option value="uppod">Uppod</option>
<option value="vlc">VLC</option>
<option value="azbox">Azbox</option>
<option value="xspf">XSPF</option>
<option value="pls">PLS</option>
<option value="opticum">Opticum HD</option>
<option value="openbox_x5">OpenBox X5 HD</option>
</select>
<!-- Поле для ввода плейлиста -->
<label for="playlist">Введите ваш плейлист:</label>
<textarea id="playlist" placeholder="Вставьте сюда ваш плейлист"></textarea>
<!-- Кнопки для работы -->
<div class="buttons">
<button onclick="convertPlaylist()">Конвертировать</button>
<button onclick="clearFields()">Очистить</button>
</div>
<!-- Результат -->
<h3>Конвертированный плейлист:</h3>
<textarea id="result" readonly></textarea>
<!-- Кнопка для скачивания -->
<button onclick="downloadFile()">Скачать файл</button>
<script>
function convertPlaylist() {
const format = document.getElementById('format').value;
const playlist = document.getElementById('playlist').value.trim();
let convertedPlaylist = '';
const lines = playlist.split('\n');
let currentChannelName = '';
// M3U формат
if (format === 'm3u') {
convertedPlaylist = '#EXTM3U\n';
lines.forEach(line => {
if (line.trim().startsWith('#EXTINF')) {
// Пытаемся извлечь имя канала из строки #EXTINF
const extinfParts = line.split(',');
currentChannelName = extinfParts.length > 1 ? extinfParts[1].trim() : 'Неизвестный канал';
} else if (line.trim().startsWith('http')) {
convertedPlaylist += '#EXTINF:0,' + currentChannelName + '\n';
convertedPlaylist += line + '\n';
}
});
}
// Samsung (XML) формат
if (format === 'samsung') {
convertedPlaylist = '<?xml version="1.0" encoding="UTF-8"?>\n<items>\n';
lines.forEach(line => {
if (line.trim().startsWith('#EXTINF')) {
const extinfParts = line.split(',');
currentChannelName = extinfParts.length > 1 ? extinfParts[1].trim() : 'Неизвестный канал';
} else if (line.trim().startsWith('http')) {
convertedPlaylist += ' <channel>\n';
convertedPlaylist += ' <title><![CDATA[' + currentChannelName + ']]></title>\n';
convertedPlaylist += ' <description><![CDATA[<img src="https://vip-tv.club/favicon.ico">Вип ТВ]]></description>\n';
convertedPlaylist += ' <stream_url><![CDATA[' + line + ']]></stream_url>\n';
convertedPlaylist += ' </channel>\n';
}
});
convertedPlaylist += '</items>';
}
// OpenBox формат
if (format === 'openbox') {
convertedPlaylist = '[channels]\n';
lines.forEach(line => {
if (line.trim().startsWith('#EXTINF')) {
const extinfParts = line.split(',');
currentChannelName = extinfParts.length > 1 ? extinfParts[1].trim() : 'Неизвестный канал';
} else if (line.trim().startsWith('http')) {
convertedPlaylist += 'channel = "' + currentChannelName + '"\n';
convertedPlaylist += 'url = "' + line + '"\n';
}
});
}
// Enigma2 формат
if (format === 'enigma2') {
convertedPlaylist = '#NAME: Enigma2 Playlist\n';
lines.forEach(line => {
if (line.trim().startsWith('#EXTINF')) {
const extinfParts = line.split(',');
currentChannelName = extinfParts.length > 1 ? extinfParts[1].trim() : 'Неизвестный канал';
} else if (line.trim().startsWith('http')) {
convertedPlaylist += 'URL ' + line + ' ' + currentChannelName + '\n';
}
});
}
// LG формат
if (format === 'lg') {
convertedPlaylist = '[Channels]\n';
lines.forEach(line => {
if (line.trim().startsWith('#EXTINF')) {
const extinfParts = line.split(',');
currentChannelName = extinfParts.length > 1 ? extinfParts[1].trim() : 'Неизвестный канал';
} else if (line.trim().startsWith('http')) {
convertedPlaylist += 'Channel="' + currentChannelName + '"\n';
convertedPlaylist += 'URL="' + line + '"\n';
}
});
}
// WMPlayer формат
if (format === 'wmplayer') {
convertedPlaylist = '[playlist]\n';
lines.forEach(line => {
if (line.trim().startsWith('#EXTINF')) {
const extinfParts = line.split(',');
currentChannelName = extinfParts.length > 1 ? extinfParts[1].trim() : 'Неизвестный канал';
} else if (line.trim().startsWith('http')) {
convertedPlaylist += 'File1=' + currentChannelName + '\n';
convertedPlaylist += line + '\n';
}
});
}
// MPClassic формат
if (format === 'mpclassic') {
convertedPlaylist = '[playlist]\n';
lines.forEach(line => {
if (line.trim().startsWith('#EXTINF')) {
const extinfParts = line.split(',');
currentChannelName = extinfParts.length > 1 ? extinfParts[1].trim() : 'Неизвестный канал';
} else if (line.trim().startsWith('http')) {
convertedPlaylist += 'File1=' + currentChannelName + '\n';
convertedPlaylist += line + '\n';
}
});
}
// Uppod формат
if (format === 'uppod') {
convertedPlaylist = '[Channels]\n';
lines.forEach(line => {
if (line.trim().startsWith('#EXTINF')) {
const extinfParts = line.split(',');
currentChannelName = extinfParts.length > 1 ? extinfParts[1].trim() : 'Неизвестный канал';
} else if (line.trim().startsWith('http')) {
convertedPlaylist += 'url="' + line + '"\n';
convertedPlaylist += 'name="' + currentChannelName + '"\n';
}
});
}
// VLC формат
if (format === 'vlc') {
convertedPlaylist = '#EXTM3U\n';
lines.forEach(line => {
if (line.trim().startsWith('#EXTINF')) {
const extinfParts = line.split(',');
currentChannelName = extinfParts.length > 1 ? extinfParts[1].trim() : 'Неизвестный канал';
} else if (line.trim().startsWith('http')) {
convertedPlaylist += '#EXTINF:-1,' + currentChannelName + '\n';
convertedPlaylist += line + '\n';
}
});
}
// Azbox формат
if (format === 'azbox') {
convertedPlaylist = '[Channels]\n';
lines.forEach(line => {
if (line.trim().startsWith('#EXTINF')) {
const extinfParts = line.split(',');
currentChannelName = extinfParts.length > 1 ? extinfParts[1].trim() : 'Неизвестный канал';
} else if (line.trim().startsWith('http')) {
convertedPlaylist += 'Channel = "' + currentChannelName + '"\n';
convertedPlaylist += 'URL = "' + line + '"\n';
}
});
}
// XSPF формат
if (format === 'xspf') {
convertedPlaylist = '<?xml version="1.0" encoding="UTF-8"?>\n<playlist version="1" xmlns="http://xspf.org/ns/0/">\n<trackList>\n';
lines.forEach(line => {
if (line.trim().startsWith('#EXTINF')) {
const extinfParts = line.split(',');
currentChannelName = extinfParts.length > 1 ? extinfParts[1].trim() : 'Неизвестный канал';
} else if (line.trim().startsWith('http')) {
convertedPlaylist += ' <track>\n';
convertedPlaylist += ' <title>' + currentChannelName + '</title>\n';
convertedPlaylist += ' <location>' + line + '</location>\n';
convertedPlaylist += ' </track>\n';
}
});
convertedPlaylist += '</trackList>\n</playlist>';
}
// PLS формат
if (format === 'pls') {
convertedPlaylist = '[playlist]\n';
lines.forEach(line => {
if (line.trim().startsWith('#EXTINF')) {
const extinfParts = line.split(',');
currentChannelName = extinfParts.length > 1 ? extinfParts[1].trim() : 'Неизвестный канал';
} else if (line.trim().startsWith('http')) {
convertedPlaylist += 'File1=' + currentChannelName + '\n';
convertedPlaylist += line + '\n';
}
});
}
// Opticum HD формат
if (format === 'opticum') {
convertedPlaylist = '[Channels]\n';
lines.forEach(line => {
if (line.trim().startsWith('#EXTINF')) {
const extinfParts = line.split(',');
currentChannelName = extinfParts.length > 1 ? extinfParts[1].trim() : 'Неизвестный канал';
} else if (line.trim().startsWith('http')) {
convertedPlaylist += 'channel="' + currentChannelName + '"\n';
convertedPlaylist += 'url="' + line + '"\n';
}
});
}
// OpenBox X5 HD формат
if (format === 'openbox_x5') {
convertedPlaylist = '[channels]\n';
lines.forEach(line => {
if (line.trim().startsWith('#EXTINF')) {
const extinfParts = line.split(',');
currentChannelName = extinfParts.length > 1 ? extinfParts[1].trim() : 'Неизвестный канал';
} else if (line.trim().startsWith('http')) {
convertedPlaylist += 'channel = "' + currentChannelName + '"\n';
convertedPlaylist += 'url = "' + line + '"\n';
}
});
}
document.getElementById('result').value = convertedPlaylist;
}
// Очистить все поля
function clearFields() {
document.getElementById('playlist').value = '';
document.getElementById('result').value = '';
}
// Скачивание файла
function downloadFile() {
const resultText = document.getElementById('result').value;
const format = document.getElementById('format').value;
// Получаем текущую дату и время в формате: yyyy-MM-dd_HH-mm-ss
const currentDate = new Date();
const dateString = currentDate.getFullYear() + '-'
+ String(currentDate.getMonth() + 1).padStart(2, '0') + '-'
+ String(currentDate.getDate()).padStart(2, '0') + '_'
+ String(currentDate.getHours()).padStart(2, '0') + '-'
+ String(currentDate.getMinutes()).padStart(2, '0') + '-'
+ String(currentDate.getSeconds()).padStart(2, '0');
// Формируем имя файла с датой и временем
const filename = 'pikniktv.info_' + dateString + '.' + format;
const blob = new Blob([resultText], { type: 'text/plain' });
const link = document.createElement('a');
link.href = URL.createObjectURL(blob);
link.download = filename;
link.click();
}
</script>
Помогите кто чем может.
