mirror of
https://github.com/NohamR/dashdrm-mp4ff.git
synced 2026-07-11 22:42:01 +00:00
Initial commit: dashdrm-mp4ff plugin
Add a Streamlink plugin (plugin/dashdrm_mp4ff.py) to support DRM-protected MPEG-DASH streams with optional mp4ff-decrypt integration. Include README with usage and installation notes, an interactive helper (gen.py) that reads vault.json and prints Streamlink commands, a vault.json example, pyproject.toml (declares inquirerpy dependency), .python-version, and .gitignore. This provides the plugin, packaging metadata, and tooling needed to run and test DASH-DRM streams locally.
This commit is contained in:
46
gen.py
Normal file
46
gen.py
Normal file
@@ -0,0 +1,46 @@
|
||||
import json
|
||||
from InquirerPy import prompt
|
||||
from InquirerPy.base.control import Choice
|
||||
|
||||
VAULT_FILE = "vault.json"
|
||||
|
||||
def load_vault():
|
||||
try:
|
||||
with open(VAULT_FILE, "r") as f:
|
||||
return json.load(f)["channels"]
|
||||
except FileNotFoundError:
|
||||
return []
|
||||
|
||||
def main():
|
||||
channels = load_vault()
|
||||
|
||||
if not channels:
|
||||
print("No channels found in vault.json")
|
||||
return
|
||||
|
||||
choices = [
|
||||
Choice(value=channel, name=f"{channel.get('number', '?')} - {channel.get('name', 'Unknown')}")
|
||||
for channel in channels
|
||||
]
|
||||
|
||||
questions = [
|
||||
{
|
||||
"type": "list",
|
||||
"name": "channel",
|
||||
"message": "Select a channel to generate the streamlink command for:",
|
||||
"choices": choices,
|
||||
}
|
||||
]
|
||||
|
||||
result = prompt(questions)
|
||||
selected_channel = result.get("channel")
|
||||
|
||||
if selected_channel:
|
||||
mpd_url = selected_channel.get("mpd_url", "")
|
||||
keys_list = selected_channel.get("keys", [])
|
||||
keys_str = ",".join(keys_list)
|
||||
command = f'streamlink -l debug --plugin-dirs "./plugin" --dashdrm-mp4ff-use-mp4ff --dashdrm-mp4ff-decryption-key "{keys_str}" "dashdrm://{mpd_url}" best'
|
||||
print(command)
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
||||
Reference in New Issue
Block a user