mirror of
https://github.com/NohamR/N_m3u8DL-RE_Command_Generator.git
synced 2025-05-24 00:59:01 +00:00
add <header,key>
This commit is contained in:
parent
1513313445
commit
a49d65d86a
117
generator.html
117
generator.html
@ -4,7 +4,8 @@
|
|||||||
<head>
|
<head>
|
||||||
<meta charset="UTF-8">
|
<meta charset="UTF-8">
|
||||||
<title>Command Generator</title>
|
<title>Command Generator</title>
|
||||||
<link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Poppins:ital,wght@0,300;0,700;1,400&display=swap.css">
|
<link rel="stylesheet"
|
||||||
|
href="https://fonts.googleapis.com/css2?family=Poppins:ital,wght@0,300;0,700;1,400&display=swap.css">
|
||||||
<script src="https://cdnjs.cloudflare.com/ajax/libs/gsap/3.5.1/gsap.min.js"></script>
|
<script src="https://cdnjs.cloudflare.com/ajax/libs/gsap/3.5.1/gsap.min.js"></script>
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||||
</head>
|
</head>
|
||||||
@ -48,126 +49,147 @@
|
|||||||
<input id="input" type="text" placeholder="链接或文件" required>
|
<input id="input" type="text" placeholder="链接或文件" required>
|
||||||
</div>
|
</div>
|
||||||
<div class="input-box">
|
<div class="input-box">
|
||||||
<label for="">save-name</label>
|
<label>save-name</label>
|
||||||
<input id="save-name" type="text" placeholder="设置保存文件名">
|
<input id="save-name" type="text" placeholder="设置保存文件名">
|
||||||
</div>
|
</div>
|
||||||
<div class="input-box">
|
<div class="input-box">
|
||||||
<label for="">base-url</label>
|
<label>base-url</label>
|
||||||
<input id="base-url" type="text" placeholder="设置BaseURL">
|
<input id="base-url" type="text" placeholder="设置BaseURL">
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="column">
|
<div class="column">
|
||||||
<div class="input-box">
|
<div class="input-box">
|
||||||
<label for="">save-dir</label>
|
<label>save-dir</label>
|
||||||
<input id="save-dir" type="text" placeholder="设置输出目录">
|
<input id="save-dir" type="text" placeholder="设置输出目录">
|
||||||
</div>
|
</div>
|
||||||
<div class="input-box">
|
<div class="input-box">
|
||||||
<label for="">tmp-dir</label>
|
<label>tmp-dir</label>
|
||||||
<input id="tmp-dir" type="text" placeholder="设置临时文件存储目录">
|
<input id="tmp-dir" type="text" placeholder="设置临时文件存储目录">
|
||||||
</div>
|
</div>
|
||||||
<div class="input-box">
|
<div class="input-box">
|
||||||
<label for="">mux-import</label>
|
<label>mux-import</label>
|
||||||
<input id="mux-import" type="text" placeholder="混流时引入外部媒体文件">
|
<input id="mux-import" type="text" placeholder="混流时引入外部媒体文件">
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="column">
|
<div class="column">
|
||||||
<div class="input-box">
|
<div class="input-box">
|
||||||
<label for="">thread-count</label>
|
<label>thread-count</label>
|
||||||
<input id="thread-count" type="text" placeholder="设置下载线程数 [default: 8]" defalut="8">
|
<input id="thread-count" type="text" placeholder="设置下载线程数 [default: 8]" defalut="8">
|
||||||
</div>
|
</div>
|
||||||
<div class="input-box">
|
<div class="input-box">
|
||||||
<label for="">download-retry-count</label>
|
<label>download-retry-count</label>
|
||||||
<input id="download-retry-count" type="text" placeholder="每个分片下载异常时的重试次数 [default: 3]" defalut="3">
|
<input id="download-retry-count" type="text" placeholder="每个分片下载异常时的重试次数 [default: 3]" defalut="3">
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="column">
|
<div class="column">
|
||||||
<div class="input-box">
|
<div class="input-box">
|
||||||
<label for="">ffmpeg-binary-path</label>
|
<label>ffmpeg-binary-path</label>
|
||||||
<input id="ffmpeg-binary-path" type="text" placeholder="ffmpeg可执行程序全路径, 例如 C:\Tools\ffmpeg.exe">
|
<input id="ffmpeg-binary-path" type="text" placeholder="ffmpeg可执行程序全路径, 例如 C:\Tools\ffmpeg.exe">
|
||||||
</div>
|
</div>
|
||||||
<div class="input-box">
|
<div class="input-box">
|
||||||
<label for="">urlprocessor-args</label>
|
<label>urlprocessor-args</label>
|
||||||
<input id="urlprocessor-args" type="text" placeholder="此字符串将直接传递给URL Processor">
|
<input id="urlprocessor-args" type="text" placeholder="此字符串将直接传递给URL Processor">
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="input-box">
|
<div class="input-box">
|
||||||
<label for="">key-text-file</label>
|
<label>key-text-file</label>
|
||||||
<input id="key-text-file" type="text" placeholder="设置密钥文件,程序将从文件中按KID搜寻KEY以解密.(不建议使用特大文件)">
|
<input id="key-text-file" type="text" placeholder="设置密钥文件,程序将从文件中按KID搜寻KEY以解密.(不建议使用特大文件)">
|
||||||
</div>
|
</div>
|
||||||
<div class="input-box">
|
<div class="input-box">
|
||||||
<label for="">decryption-binary-path</label>
|
<label>decryption-binary-path</label>
|
||||||
<input id="decryption-binary-path" type="text" placeholder=" MP4解密所用工具的全路径, 例如 C:\Tools\mp4decrypt.exe">
|
<input id="decryption-binary-path" type="text" placeholder=" MP4解密所用工具的全路径, 例如 C:\Tools\mp4decrypt.exe">
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="column">
|
<div class="column">
|
||||||
<div class="input-box">
|
<div class="input-box">
|
||||||
<label for="">mux-after-done</label>
|
<label>mux-after-done</label>
|
||||||
<input id="mux-after-done" type="text" placeholder="所有工作完成时尝试混流分离的音视频">
|
<input id="mux-after-done" type="text" placeholder="所有工作完成时尝试混流分离的音视频">
|
||||||
</div>
|
</div>
|
||||||
<div class="input-box">
|
<div class="input-box">
|
||||||
<label for="">custom-hls-key</label>
|
<label>custom-hls-key</label>
|
||||||
<input id="custom-hls-key" type="text" placeholder="指定HLS解密KEY. 可以是文件, HEX或Base64">
|
<input id="custom-hls-key" type="text" placeholder="指定HLS解密KEY. 可以是文件, HEX或Base64">
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="column">
|
<div class="column">
|
||||||
<div class="input-box">
|
<div class="input-box">
|
||||||
<label for="">custom-hls-iv</label>
|
<label>custom-hls-iv</label>
|
||||||
<input id="custom-hls-iv" type="text" placeholder="指定HLS解密IV. 可以是文件, HEX或Base64">
|
<input id="custom-hls-iv" type="text" placeholder="指定HLS解密IV. 可以是文件, HEX或Base64">
|
||||||
</div>
|
</div>
|
||||||
<div class="input-box">
|
<div class="input-box">
|
||||||
<label for="">custom-proxy</label>
|
<label>custom-proxy</label>
|
||||||
<input id="custom-proxy" type="text" placeholder="设置请求代理, 如 http://127.0.0.1:8888">
|
<input id="custom-proxy" type="text" placeholder="设置请求代理, 如 http://127.0.0.1:8888">
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="column">
|
<div class="column">
|
||||||
|
|
||||||
<div class="input-box">
|
<div class="input-box">
|
||||||
<label for="">custom-range</label>
|
<label>custom-range</label>
|
||||||
<input id="custom-range" type="text" placeholder="仅下载部分分片">
|
<input id="custom-range" type="text" placeholder="仅下载部分分片">
|
||||||
</div>
|
</div>
|
||||||
<div class="input-box">
|
<div class="input-box">
|
||||||
<label for="">task-start-at</label>
|
<label>task-start-at</label>
|
||||||
<input id="task-start-at" type="text" placeholder="格式:<yyyyMMddHHmmss>在此时间之前不会开始执行任务">
|
<input id="task-start-at" type="text" placeholder="格式:<yyyyMMddHHmmss>在此时间之前不会开始执行任务">
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="column">
|
<div class="column">
|
||||||
<div class="input-box">
|
<div class="input-box">
|
||||||
<label for="">live-record-limit</label>
|
<label>live-record-limit</label>
|
||||||
<input id="live-record-limit" type="text" placeholder="录制直播时的录制时长限制,格式: HH:mm:ss">
|
<input id="live-record-limit" type="text" placeholder="录制直播时的录制时长限制,格式: HH:mm:ss">
|
||||||
</div>
|
</div>
|
||||||
<div class="input-box">
|
<div class="input-box">
|
||||||
<label for="">live-wait-time</label>
|
<label>live-wait-time</label>
|
||||||
<input id="live-wait-time" type="text" placeholder="手动设置直播列表刷新间隔, 单位为秒">
|
<input id="live-wait-time" type="text" placeholder="手动设置直播列表刷新间隔, 单位为秒">
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="column">
|
<div class="column">
|
||||||
<div class="input-box">
|
<div class="input-box">
|
||||||
<label for="">select-video</label>
|
<label>select-video</label>
|
||||||
<input id="select-video" type="text" placeholder="通过正则表达式选择符合要求的视频流">
|
<input id="select-video" type="text" placeholder="通过正则表达式选择符合要求的视频流">
|
||||||
</div>
|
</div>
|
||||||
<div class="input-box">
|
<div class="input-box">
|
||||||
<label for="">select-audio</label>
|
<label>select-audio</label>
|
||||||
<input id="select-audio" type="text" placeholder="通过正则表达式选择符合要求的音频流">
|
<input id="select-audio" type="text" placeholder="通过正则表达式选择符合要求的音频流">
|
||||||
</div>
|
</div>
|
||||||
<div class="input-box">
|
<div class="input-box">
|
||||||
<label for="">select-subtitle</label>
|
<label>select-subtitle</label>
|
||||||
<input id="select-subtitle" type="text" placeholder="通过正则表达式选择符合要求的字幕流">
|
<input id="select-subtitle" type="text" placeholder="通过正则表达式选择符合要求的字幕流">
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="column">
|
<div class="column">
|
||||||
<div class="input-box">
|
<div class="input-box">
|
||||||
<label for="">drop-video</label>
|
<label>drop-video</label>
|
||||||
<input id="drop-video" type="text" placeholder="通过正则表达式去除符合要求的视频流">
|
<input id="drop-video" type="text" placeholder="通过正则表达式去除符合要求的视频流">
|
||||||
</div>
|
</div>
|
||||||
<div class="input-box">
|
<div class="input-box">
|
||||||
<label for="">drop-audio</label>
|
<label>drop-audio</label>
|
||||||
<input id="drop-audio" type="text" placeholder="通过正则表达式去除符合要求的音频流">
|
<input id="drop-audio" type="text" placeholder="通过正则表达式去除符合要求的音频流">
|
||||||
</div>
|
</div>
|
||||||
<div class="input-box">
|
<div class="input-box">
|
||||||
<label for="">drop-subtitle</label>
|
<label>drop-subtitle</label>
|
||||||
<input id="drop-subtitle" type="text" placeholder="通过正则表达式去除符合要求的字幕流">
|
<input id="drop-subtitle" type="text" placeholder="通过正则表达式去除符合要求的字幕流">
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
<div class="column">
|
||||||
|
<div id="header" class="input-box ">
|
||||||
|
<div class="row">
|
||||||
|
<label>header</label>
|
||||||
|
<label class="button" onclick="insert('#header','header','为HTTP请求设置特定的请求头, 例如: -H "Cookie: mycookie" -H "User-Agent: iOS"')">+</label>
|
||||||
|
<label class="button" onclick="removeLast('#header')">-</label>
|
||||||
|
<input type="text" id="header" placeholder="为HTTP请求设置特定的请求头, 例如: -H "Cookie: mycookie" -H "User-Agent: iOS"">
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="column">
|
||||||
|
<div id="key" class="input-box ">
|
||||||
|
<div class="row">
|
||||||
|
<label>key</label>
|
||||||
|
<label class="button"
|
||||||
|
onclick="insert('#key','key','设置解密密钥, 程序调用mp4decrpyt/shaka-packager进行解密. 格式: --key KID1:KEY1 --key KID2:KEY2')">+</label>
|
||||||
|
<label class="button" onclick="removeLast('#key')">-</label>
|
||||||
|
<input type="text" id="key" placeholder="设置解密密钥, 程序调用mp4decrpyt/shaka-packager进行解密. 格式: --key KID1:KEY1 --key KID2:KEY2">
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
<div class="column">
|
<div class="column">
|
||||||
<div class="input-box">
|
<div class="input-box">
|
||||||
<label for="log-level">log-level</label>
|
<label for="log-level">log-level</label>
|
||||||
@ -368,6 +390,22 @@
|
|||||||
toggle = !toggle;
|
toggle = !toggle;
|
||||||
changeColor()
|
changeColor()
|
||||||
});
|
});
|
||||||
|
|
||||||
|
function insert(pos, id, placeholder) {
|
||||||
|
let input = document.createElement('input')
|
||||||
|
input.type = 'text'
|
||||||
|
input.id = id
|
||||||
|
input.placeholder = placeholder
|
||||||
|
input.oninput = () => { generate('generator_body') }
|
||||||
|
document.querySelector(pos).appendChild(input)
|
||||||
|
}
|
||||||
|
function removeLast(pos) {
|
||||||
|
console.log(document.querySelector(pos).lastChild.tagName);
|
||||||
|
if (document.querySelector(pos).lastChild.tagName != 'INPUT') {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
document.querySelector(pos).removeChild(document.querySelector(pos).lastChild)
|
||||||
|
}
|
||||||
function generate(params) {
|
function generate(params) {
|
||||||
let form = document.getElementById(params)
|
let form = document.getElementById(params)
|
||||||
// console.log(form)
|
// console.log(form)
|
||||||
@ -383,7 +421,6 @@
|
|||||||
|
|
||||||
} else {
|
} else {
|
||||||
finalArgs.push('"' + element.value + '"')
|
finalArgs.push('"' + element.value + '"')
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
@ -542,6 +579,7 @@
|
|||||||
|
|
||||||
.form label {
|
.form label {
|
||||||
color: var(--main-text-color);
|
color: var(--main-text-color);
|
||||||
|
user-select: none;
|
||||||
font-size: 1.2rem;
|
font-size: 1.2rem;
|
||||||
font-weight: 500;
|
font-weight: 500;
|
||||||
}
|
}
|
||||||
@ -601,6 +639,7 @@
|
|||||||
.select-box select {
|
.select-box select {
|
||||||
width: 100%;
|
width: 100%;
|
||||||
height: 100%;
|
height: 100%;
|
||||||
|
padding: 0px 0px;
|
||||||
outline: none;
|
outline: none;
|
||||||
border: none;
|
border: none;
|
||||||
color: var(--main-text-color);
|
color: var(--main-text-color);
|
||||||
@ -670,6 +709,30 @@
|
|||||||
display: none;
|
display: none;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
label.button {
|
||||||
|
z-index: 0;
|
||||||
|
padding: 0 8px;
|
||||||
|
width: 20px;
|
||||||
|
height: 20px;
|
||||||
|
background-color: var(--accent-color);
|
||||||
|
border-radius: 40px;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/* ***** Colors - Start ***** */
|
/* ***** Colors - Start ***** */
|
||||||
/* ***** Colors - End ***** */
|
/* ***** Colors - End ***** */
|
||||||
/* ***** Global Styles - Start ***** */
|
/* ***** Global Styles - Start ***** */
|
||||||
|
Loading…
x
Reference in New Issue
Block a user