{"id":24026653,"url":"https://github.com/nsmy/stream-downloader-util","last_synced_at":"2026-05-17T14:36:11.416Z","repository":{"id":172114673,"uuid":"567115551","full_name":"NSMY/Stream-Downloader-Util","owner":"NSMY","description":"Python CLI Compiled script to download Files via Streamlink, Muxing Via FFMPEG and Audio/Video Channels extraction.","archived":false,"fork":false,"pushed_at":"2024-04-06T05:45:14.000Z","size":1177,"stargazers_count":3,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"main","last_synced_at":"2024-04-06T12:38:00.514Z","etag":null,"topics":["audio-extractor","downloader","extraction","ffmpeg","ffprobe","helper-tool","learning-by-doing","newbie","not-stand-alone","program","python-script","script","streamlink","twitch","video","youtube-dl","youtube-downloader"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/NSMY.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null}},"created_at":"2022-11-17T05:11:53.000Z","updated_at":"2024-04-15T09:47:50.913Z","dependencies_parsed_at":null,"dependency_job_id":"b7b390a6-f92e-4bd9-8ec7-2d5d61106c14","html_url":"https://github.com/NSMY/Stream-Downloader-Util","commit_stats":null,"previous_names":["nsmy/stream-downloader-util"],"tags_count":11,"template":false,"template_full_name":null,"purl":"pkg:github/NSMY/Stream-Downloader-Util","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/NSMY%2FStream-Downloader-Util","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/NSMY%2FStream-Downloader-Util/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/NSMY%2FStream-Downloader-Util/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/NSMY%2FStream-Downloader-Util/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/NSMY","download_url":"https://codeload.github.com/NSMY/Stream-Downloader-Util/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/NSMY%2FStream-Downloader-Util/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33142379,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-17T09:28:26.183Z","status":"ssl_error","status_checked_at":"2026-05-17T09:27:52.702Z","response_time":107,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["audio-extractor","downloader","extraction","ffmpeg","ffprobe","helper-tool","learning-by-doing","newbie","not-stand-alone","program","python-script","script","streamlink","twitch","video","youtube-dl","youtube-downloader"],"created_at":"2025-01-08T16:35:31.029Z","updated_at":"2026-05-17T14:36:11.390Z","avatar_url":"https://github.com/NSMY.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"README.md\n\n\u003cp align=\"left\"\u003e\n  \u003cimg src=\"./media/SDU.ico\" alt=\"Starter Image\" width=\"100\"/\u003e\n\u003c/p\u003e\n\n#  **Stream Downloader Util is a Compiled CLI (Onefile) that provides easier Streamlink (Twitch) usage.**\n\n## [Streamlink][streamlink-website] **DEPENDENT** Downloader ([*FFMPEG*][ffmpeg] \u0026 [*FFPROBE*][ffmpeg])\n\n**Main Features**\n* Easier Streamlink Download use without need of remembering Streamlink flags/args, or knowing how to use cmd utils.\n* [Muxing](https://forum.videohelp.com/threads/29900-what-is-muxing-and-demuxing) of video files with ffmpeg\n* Extraction of Audio \u0026 Video Channel/s ([DeMuxing](https://forum.videohelp.com/threads/29900-what-is-muxing-and-demuxing)) from File to separate files\n    * Multi channel Files\n    * Desire Audio-Video Separated (useful for OBS Multi-Channel Captures)\n\n\n---\n![New UI](./media/New_UI_17-04-24.png)\n\n\n## DOWNLOAD\n\n**STREAMLINK Dependent**\n\n* This python script downloads Media URLs via [Streamlink][streamlink-website]\n    * fetches your [clipboard(URL)] OR from user created list (Twitch Streamers Vods)\n    * checks if [dependencies] are available \u0026 Present, if not, it will ask to download them or provide [links]. \n\n![Vod UI 14-1-24](./media/Vod_UI_14-1-24.png)\n\n* It will then retrieve [available] resolutions to download, provides the [fileddialog] (Browser popup) to set save Location/Name.\n\n* Asks what size desired to download with inquirer (Scrollable Arrow keys List).\n\n* Streamlink Flag Twitch-skip-ads and Twitch Auth-Token are avaiable.\n    * \u003csub/\u003e Skips [ads] on vods if enabled (trims out the ad time).\u003csub/\u003e\n    * \u003csub/\u003e if subscribed can record add free Via a [Auth] Token, also enables access to Sub-Only mode Vods.\u003csub/\u003e\n\n* (Twitch Vods) Gets Estimated File size of Vod after Resolution Choosen.\n\n* Optional [terminate] Download early without Crashing the CLI \n\n* Downloads File Via [Streamlink][streamlink-website]\n\n* Asks if [Mux-ing] is Desired (Combines Chunks files for smooth playback with FFMPEG).\n\n\n---\n## MUX-ING\n\n**FFMPEG Dependent**\n\n* This is available after Download And Separate From the main downloading option, can be used as a standalone \n\n* Re Mux's (Copies) the File specified in the Clipboard (File path) or [fileddialog][fileddialog2] (Browser popup Finder) \n\n* Sends the old file to the Recycle bin and saves a new file into a separate new Folder inside the CWD, then opens the folder.\n\n\n---\n## EXTRACTION\n\n**FFPROBE Dependent**\n\nChecks if FFPROBE is Available on your C Drive, if not found will be Downloaded From [FFMPEG Website][links],\nFFPROBE is needed to check the amount of Channels in the file.\n\nWill Probe the File specified in the Clipboard (File path) or [fileddialog][fileddialog2] (Browser popup Finder) for the amount of audio channels and will return a list of them.\n\nA specific Channel or all channels can be selected. Again will create a Folder within CWD to save files to.\n\nVideo can be selected to also Separated form Audio\n\n\u003e VP9/Opus (YouTube Video) is available but will stay in VP9/Opus Codec when extracted, otherwise Re-encoding would be required.\n\n\u003e ***if the file has not been muxed (or standard file) may result in misread of Audio channels***\n\n---\n## Twitch Vod Lists\n\n* Saves a json list of X Vods (in your appdata) to help keep track Downloaded status and to cut out a trip to the Browser.\n  * Intended to help for archiving of vods (to say YT etc) but without needing to do all/large chunks of vods at once/mass.\n* If fully downloaded (the total Len == specified start - total time OR the original Vod Length) from the File List option the script will change status of \"Downloaded\" within file to the chosen Resolution.\n    * Will count as fully downloaded if you set a specific time to start download form (2hrs into a vod thats 6hrs long the file will be 4hrs, But counts as Fully downloaded) can be changed manually in the Vod UI)\n    * If Chosen X Vod from Browser using URL and want to update file Status, can be done manually in the Vod List Opt\n       OR Via the 'Cross-Check Vods to Json Data' Opt (File Name Format dependant as Follows:\n       StreamerUserName - YYYY-MM-DD StreamVodTitle_Stream Category.mp4/mov/mkv)\n\n* ***Youtube Uploading NOT YET IMPLEMENTED*** \u003csub/\u003ewould like to implement\u003csub/\u003e\n\n\n### Cross-Check Vods to Json Data\n* Checks Media Files from chosen Dir/path if any Files  match any Vods in any Json Streamer File\n (File Name Format dependant as Follows: StreamerUserName - YYYY-MM-DD StreamVodTitle_Stream Category.mp4/mov/mkv)\n\n---\n## DEPENDENCIES\n\n- [Streamlink][streamlink-website] Streamlink must be installed or (portable) within the C: Drive, to work properly\n    - [FFmpeg][ffmpeg] A Version comes with Streamlink\n- [FFprobe][ffmpeg]\n\n### **WHY?**\n\nMade this because i was sick of manually entering a string i had saved into Cmd, Then change for every occasion. All other variations are Pure **CLI** automatable, So i made this CLI lite to combine personal frequently used features.\n\n\u003e ***All streamlink limitations are still enabled***\n\n\u003e (***1st multi file script ever made***)\n\n# Transparency\nI have made everything i interact with purposely transparent i print nearly everything major i do, when the script deletes anything i specifically send Everything to **RECYCLE BIN** so the user can decide what to do with it (besides the settings when new settings are needed because i cant recycle files that are in use so they get os deleted).\n\nThe only time This script (not streamlink) needs to interact with the internet is\n- If you don't have either ffmpeg or ffprobe installed, i show the links its using to download (if chosen) and even sends the (zipped) files to the Trash like previously stated.\n- To retrieve Estimated file sizes before download (it pings the x m3u8 url to retrieve details)\n- To make the json streamer vod list (if used) querys twitch api for details\n\n[streamlink-website]: https://github.com/streamlink/streamlink\n[clipboard(URL)]: https://github.com/NSMY/Stream-Downloader-Util/blob/d683041b21d277261a08d3cbba19f119bdab22cc/Main.py#L34\n[dependencies]: https://github.com/NSMY/Stream-Downloader-Util/blob/d683041b21d277261a08d3cbba19f119bdab22cc/Main.py#L43\n[links]: https://github.com/NSMY/Stream-Downloader-Util/blob/Future-Dev-Features/download_Links.txt\n[available]: https://github.com/NSMY/Stream-Downloader-Util/blob/d683041b21d277261a08d3cbba19f119bdab22cc/Main.py#L76\n[fileddialog]: https://github.com/NSMY/Stream-Downloader-Util/blob/d683041b21d277261a08d3cbba19f119bdab22cc/funcs.py#L181\n[fileddialog2]: https://github.com/NSMY/Stream-Downloader-Util/blob/d683041b21d277261a08d3cbba19f119bdab22cc/funcs.py#L148\n[Mux-ing]: https://github.com/NSMY/Stream-Downloader-Util/blob/3a2866f282599293e1ff0aebb8722204713cbf85/mux_vid.py#L57\n[ffmpeg]: https://github.com/ffbinaries/ffbinaries-prebuilt/releases/tag/v4.4.1\n[terminate]: https://github.com/NSMY/Stream-Downloader-Util/blob/d683041b21d277261a08d3cbba19f119bdab22cc/Main.py#L132\n[Auth]: https://streamlink.github.io/cli/plugins/twitch.html#authentication\n[ads]: https://streamlink.github.io/cli.html#cmdoption-twitch-disable-ads\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnsmy%2Fstream-downloader-util","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fnsmy%2Fstream-downloader-util","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnsmy%2Fstream-downloader-util/lists"}