tools.html 8.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242
  1. <!DOCTYPE html>
  2. <html lang="zh-cn">
  3. <head>
  4. <meta charset="utf-8">
  5. <title>drpy小工具-{{ver}}</title>
  6. <meta name="description" content="particles.js is a lightweight JavaScript library for creating particles.">
  7. <meta name="author" content="道长"/>
  8. <meta name="viewport"
  9. content="width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=no">
  10. <link rel="stylesheet" media="screen" href="/static/css/admin.css">
  11. <link rel="icon" href="/static/img/logo.png" type="image/x-icon">
  12. <script src="/static/js/jquery.min.js"></script>
  13. <script src="/static/js/common.js"></script>
  14. <script src="/static/js/grey.js"></script>
  15. <link rel="stylesheet" href="/static/plugin/layui/css/layui.css">
  16. <script src="/static/plugin/layui/layui.js"></script>
  17. <script src="/static/js/pinyin-pro.js"></script>
  18. <script src="/static/js/tools.js"></script>
  19. <style>
  20. body {
  21. background-color: #ffffff;
  22. }
  23. .long_text {
  24. width: 100%;
  25. height: 300px;
  26. overflow-x: scroll;
  27. overflow-y: scroll;
  28. }
  29. .hide{
  30. display: none;
  31. }
  32. </style>
  33. </head>
  34. <body>
  35. <script type="text/javascript">
  36. function init() {
  37. var dest = document.getElementById("source");
  38. dest.addEventListener("dragover", function (ev) {
  39. ev.stopPropagation();
  40. ev.preventDefault();
  41. }, false);
  42. dest.addEventListener("dragend", function (ev) {
  43. ev.stopPropagation();
  44. ev.preventDefault();
  45. }, false);
  46. dest.addEventListener("drop", function (ev) {
  47. ev.stopPropagation();
  48. ev.preventDefault();
  49. var file = ev.dataTransfer.files[0];
  50. var reader = new FileReader();
  51. if (file.type.substr(0, 4) != "text") {
  52. dest.innerHTML = "暂不支持此类文件的预览";
  53. dest.style.background = "white";
  54. } else if (file.type.substr(0, 4) == "text") {
  55. reader.readAsText(file);
  56. reader.onload = function (f) {
  57. dest.innerHTML = "<pre>" + this.result + "</pre>";
  58. dest.style.background = "white";
  59. }
  60. } else {
  61. dest.innerHTML = "暂不支持此类文件的预览";
  62. dest.style.background = "white";
  63. }
  64. }, false);
  65. }
  66. //设置页面属性,不执行默认处理(拒绝被拖放)
  67. document.ondragover = function (e) {
  68. e.preventDefault();
  69. }
  70. ;
  71. document.ondrop = function (e) {
  72. e.preventDefault();
  73. }
  74. window.onload = init;
  75. </script>
  76. <script type="text/javascript">
  77. function dl() {
  78. const data = document.getElementById("res").innerHTML.replace(/<br>/g, '\n');
  79. if (data.indexOf("EXTM3U") != -1) {
  80. var tt = "m3u"
  81. } else {
  82. var tt = "txt"
  83. }
  84. const blob = new Blob([data], {
  85. type: "text/plain"
  86. })
  87. const a = document.createElement("a")
  88. a.href = URL.createObjectURL(blob)
  89. a.download = "yourtv." + tt
  90. a.click()
  91. URL.revokeObjectURL(a.href)
  92. a.remove();
  93. }
  94. function copyText() {
  95. var text = document.getElementById("res").innerHTML;
  96. var input = document.createElement('textarea')
  97. input.innerHTML = text.replace(/<br>/g, "\n")
  98. input.setAttribute('readonly', 'readonly')
  99. document.body.appendChild(input)
  100. input.select();
  101. //选中文本
  102. document.execCommand("copy");
  103. document.body.removeChild(input);
  104. layer.msg('复制成功');
  105. }
  106. </script>
  107. <script>
  108. function readSingleFile(e) {
  109. var file = e.target.files[0];
  110. if (!file) {
  111. return;
  112. }
  113. var reader = new FileReader();
  114. reader.onload = function (e) {
  115. var contents = e.target.result;
  116. displayContents(contents);
  117. }
  118. ;
  119. reader.readAsText(file);
  120. }
  121. function displayContents(contents) {
  122. var element = document.getElementById('source');
  123. element.textContent = contents;
  124. }
  125. window.onload = function () {
  126. document.getElementById('file-input').addEventListener('change', readSingleFile, false);
  127. }
  128. </script>
  129. <div class="layui-form layuimini-form layuimini-container layui-form-pane container" lay-filter="scripts">
  130. <div class="layui-tab">
  131. <ul class="layui-tab-title">
  132. <li class="layui-this">直播转换工具</li>
  133. <li>更多</li>
  134. </ul>
  135. <div class="layui-tab-content">
  136. <div class="layui-tab-item layui-show">
  137. <input type="file" id="file-input" class="layui-hide"/>
  138. <fieldset class="layui-elem-field layui-field-title" style="margin-top: 30px;">
  139. <legend>直播类文本文件上传(txt|m3u8|m3u)文件</legend>
  140. <legend id="file_info"></legend>
  141. </fieldset>
  142. <div class="layui-btn-container">
  143. <button type="button" class="layui-btn" id="file_select"><i class="layui-icon"></i>上传文件
  144. </button>
  145. </div>
  146. <div class="layui-form-item">
  147. <label class="layui-form-label" for="action">超级直播格式</label>
  148. <div class="layui-input-block">
  149. <select id="action" name="action" lay-filter="action">
  150. <!-- <option value=""></option>-->
  151. <option>112114-muziling</option>
  152. <option>112114-yuanban</option>
  153. <option>tvming-yuanban</option>
  154. <option>cntv-yuanban</option>
  155. </select>
  156. </div>
  157. </div>
  158. <div class="layui-form-item layui-form-text">
  159. <div class="layui-input-block">
  160. <label class="layui-form-label required" for="source">文本区域</label>
  161. <textarea id="source" name="source" class="layui-textarea"
  162. placeholder="请粘贴文本内容"
  163. rows='16' cols='86'></textarea>
  164. </div>
  165. </div>
  166. <div class="layui-form-item">
  167. <button type="button" class="layui-btn layui-btn-normal" onclick="trans()">超级直播</button>
  168. <button type="button" class="layui-btn layui-btn-normal" onclick="tran2m3u()">m3u格式</button>
  169. <button type="button" class="layui-btn layui-btn-normal" onclick="tran2m3ugroup()">m3u分组</button>
  170. <button type="button" class="layui-btn layui-btn-normal" onclick="m3u2txt()">m3u2txt</button>
  171. </div>
  172. <hr/>
  173. <div class="layui-form-item">
  174. <button class="layui-btn hide" id="copytext" onclick="copyText()">一键复制</button>
  175. <button class="layui-btn hide" id="downtext" onclick="dl()">一键下载</button>
  176. </div>
  177. <div>
  178. <p id="res" name="res" class="long_text"></p>
  179. </div>
  180. </div>
  181. <div class="layui-tab-item">
  182. <h3>更多功能开发中...</h3>
  183. <hr/>
  184. <h3>下方是推荐链接</h3>
  185. <p class="layui-elem-quote"><a href="https://guihet.com/tvlistconvert.html" target="_blank">黑鸟博客转换工具</a></p>
  186. <p class="layui-elem-quote"><a href="https://wwi.lanzoup.com/i3CCw1fxlxla" target="_blank">IPTV Checker</a></p>
  187. <p class="layui-elem-quote"><a href="https://wwi.lanzoup.com/i3GgP1fxqdpe" target="_blank">安卓派大星直播</a></p>
  188. <p class="layui-elem-quote"><a href="https://epg.112114.xyz/" target="_blank">EPG小工具</a></p>
  189. <p class="layui-elem-quote"><a href="http://epg.51zmt.top:8000/" target="_blank">EPG节目信息</a></p>
  190. </div>
  191. </div>
  192. </div>
  193. </div>
  194. <script>
  195. layui.use(['upload', 'element', 'layer'], function () {
  196. var $ = layui.jquery
  197. , upload = layui.upload
  198. , element = layui.element
  199. , layer = layui.layer;
  200. $('#file_select').click(function () {
  201. $('#file-input').click();
  202. });
  203. $('#file-input').change(function () {
  204. //获取选择的文件信息
  205. let file = this.files[0];
  206. //执行上传操作
  207. if (file) {
  208. console.log(file);
  209. $('#file_info').text(`文件名:${file.name},体积:${(file.size / 1024).toFixed(2)}kb`);
  210. } else {
  211. $('#file_info').text('未选择文件');
  212. }
  213. });
  214. });
  215. </script>
  216. </body>
  217. </html>