Tesatt


SUBMITTED BY: BLINDER

DATE: May 12, 2024, 2:27 p.m.

UPDATED: May 12, 2024, 4:12 p.m.

FORMAT: Text only

SIZE: 4.0 kB

HITS: 362

  1. <!DOCTYPE html>
  2. <html lang="pt">
  3. <head>
  4. <meta charset="UTF-8">
  5. <meta name="viewport" content="width=device-width, initial-scale=1.0">
  6. <title>Player IPTV com Logos</title>
  7. <!-- Inclua o CSS do Plyr -->
  8. <link rel="stylesheet" href="https://cdn.plyr.io/3.6.2/plyr.css" />
  9. <!-- Inclua o JavaScript do Plyr -->
  10. <script src="https://cdn.plyr.io/3.6.2/plyr.polyfilled.js"></script>
  11. <!-- Inclua o jQuery para facilitar o processamento da lista IPTV -->
  12. <script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
  13. <style>
  14. /* Estilos para os canais */
  15. .canal {
  16. display: inline-block; /* Exibe os canais lado a lado */
  17. text-align: center; /* Centraliza o texto e a imagem */
  18. margin: 10px; /* Espaçamento ao redor dos canais */
  19. }
  20. .canal img {
  21. width: 100px; /* Largura da logo */
  22. height: auto; /* Altura automática para manter a proporção */
  23. cursor: pointer; /* Muda o cursor para indicar que é clicável */
  24. }
  25. /* Estilos para o nome do canal */
  26. .nome-canal {
  27. display: block; /* Exibe o nome em uma nova linha */
  28. margin-top: 5px; /* Espaçamento acima do nome */
  29. }
  30. /* Estilos para o contêiner fixo do player */
  31. #player-container {
  32. position: fixed; /* Fixa o contêiner na tela */
  33. top: 10px; /* Distância do topo da tela */
  34. left: 0; /* Alinha o contêiner à esquerda da tela */
  35. right: 0; /* Alinha o contêiner à direita da tela */
  36. z-index: 1000; /* Garante que o contêiner fique acima de outros elementos */
  37. }
  38. /* Estilos para o player dentro do contêiner */
  39. #player {
  40. width: 100%; /* O player preenche a largura do contêiner */
  41. height: auto; /* Altura automática para manter a proporção */
  42. }
  43. /* Estilos para o nome do canal */
  44. .nome-canal {
  45. display: block; /* Exibe o nome em uma nova linha */
  46. margin-top: 5px; /* Espaçamento acima do nome */
  47. word-wrap: break-word; /* Quebra a linha se o nome do canal for muito longo */
  48. max-width: 100px; /* Define a largura máxima para o nome do canal */
  49. }
  50. /* Estilos para a lista de canais */
  51. #lista-canais {
  52. margin-top: 220px; /* Ajuste este valor conforme necessário para criar espaço suficiente abaixo do player */
  53. }
  54. </style>
  55. </head>
  56. <body>
  57. <!-- Contêiner fixo para o player -->
  58. <div id="player-container">
  59. <video id="player" controls playsinline></video>
  60. </div>
  61. <!-- Lista de canais -->
  62. <div id="lista-canais"></div>
  63. <script>
  64. // Substitua 'url_da_sua_lista.m3u' pela URL da sua lista IPTV
  65. const urlDaListaIPTV = 'https://i.mjh.nz/PlutoTV/br.m3u8';
  66. // Inicialize o Plyr
  67. const player = new Plyr('#player');
  68. // Função para processar a lista IPTV e criar os elementos HTML para cada canal
  69. function processarListaIPTV(data) {
  70. const linhas = data.split('\n');
  71. let htmlCanais = '';
  72. for (let i = 0; i < linhas.length; i++) {
  73. if (linhas[i].startsWith('#EXTINF:-1')) {
  74. const partes = linhas[i].split(',');
  75. const nomeCanal = partes[1];
  76. const logoMatch = /tvg-logo="([^"]+)"/.exec(linhas[i]);
  77. const logo = logoMatch ? logoMatch[1] : 'https://i.ibb.co/ScwxfB6/Picsart-24-05-06-14-47-55-394.png'; // Substitua 'logo_padrao.png' pelo caminho do seu logo padrão
  78. const urlCanal = linhas[i + 1].trim();
  79. htmlCanais += `
  80. <div class="canal" onclick="reproduzirCanal('${urlCanal}')">
  81. <img src="${logo}" alt="${nomeCanal}" />
  82. <span class="nome-canal">${nomeCanal}</span>
  83. </div>
  84. `;
  85. }
  86. }
  87. $('#lista-canais').html(htmlCanais);
  88. }
  89. // Função para reproduzir o canal selecionado
  90. function reproduzirCanal(urlCanal) {
  91. player.source = {
  92. type: 'video',
  93. sources: [
  94. {
  95. src: urlCanal,
  96. type: 'application/x-mpegURL'
  97. },
  98. ],
  99. };
  100. player.play();
  101. }
  102. // Carrega a lista IPTV e processa
  103. $.get(urlDaListaIPTV, processarListaIPTV);
  104. </script>
  105. </body>
  106. </html>

comments powered by Disqus