Skip to content

plugins.nimotv: restore access for streams - #7111

Merged
bastimeyer merged 3 commits into
streamlink:masterfrom
Mehavoid:plugins/nimotv/fix-and-rewrite
Sep 13, 2026
Merged

plugins.nimotv: restore access for streams#7111
bastimeyer merged 3 commits into
streamlink:masterfrom
Mehavoid:plugins/nimotv/fix-and-rewrite

Conversation

@Mehavoid

Copy link
Copy Markdown
Contributor

Closes: #5870

Headers user-agent and referer required for HLS playlist and segments.
Params needwm and sphd does not affect anything.

It's probably worth adding a simple implementation of a JCE decoder. It would eliminate need for regular expressions and guessing available stream qualities.

$ streamlink -l trace -o/dev/null --stream-segmented-duration 6.7 https://www.nimo.tv/hotbeatstv 720p
[00:33:23.495026][MainThread][session][debug] Loading plugin: nimotv
[00:33:23.710154][MainThread][cli][debug] OS:         Linux-6.18.33.2-microsoft-standard-WSL2-x86_64-with-glibc2.39
[00:33:23.710362][MainThread][cli][debug] Python:     3.12.3
[00:33:23.710442][MainThread][cli][debug] OpenSSL:    OpenSSL 3.0.13 30 Jan 2024
[00:33:23.710525][MainThread][cli][debug] Streamlink: 8.5.0+72.g19157cab
[00:33:23.710603][MainThread][cli][debug] Dependencies:
[00:33:23.713171][MainThread][cli][debug]  certifi: 2026.7.22
[00:33:23.714177][MainThread][cli][debug]  isodate: 0.7.2
[00:33:23.714970][MainThread][cli][debug]  lxml: 6.1.3
[00:33:23.715684][MainThread][cli][debug]  pycountry: 26.2.16
[00:33:23.716844][MainThread][cli][debug]  pycryptodome: 3.23.0
[00:33:23.718040][MainThread][cli][debug]  PySocks: 1.7.1
[00:33:23.719656][MainThread][cli][debug]  requests: 2.34.2
[00:33:23.720966][MainThread][cli][debug]  trio: 0.34.0
[00:33:23.721897][MainThread][cli][debug]  trio-websocket: 0.12.2
[00:33:23.722720][MainThread][cli][debug]  typing-extensions: 4.16.0
[00:33:23.723517][MainThread][cli][debug]  urllib3: 2.7.0
[00:33:23.724487][MainThread][cli][debug]  websocket-client: 1.9.2
[00:33:23.724638][MainThread][cli][debug] Arguments:
[00:33:23.724721][MainThread][cli][debug]  url=https://www.nimo.tv/hotbeatstv
[00:33:23.724796][MainThread][cli][debug]  stream=['720p']
[00:33:23.724878][MainThread][cli][debug]  --loglevel=trace
[00:33:23.724975][MainThread][cli][debug]  --output=/dev/null
[00:33:23.725060][MainThread][cli][debug]  --stream-segmented-duration=6.7
[00:33:23.725244][MainThread][cli][info] Found matching plugin nimotv for URL https://www.nimo.tv/hotbeatstv
[00:33:23.725408][MainThread][cache][trace] Loading cache file: /home/user/.cache/streamlink/plugin-cache.json
[00:33:24.124341][MainThread][plugins.nimotv][debug] URL=https://tx.hls.nimo.tv/live/su2099512210486rdb19c5fbef3abe82f561ec9deb1c824a.m3u8
[00:33:24.124540][MainThread][plugins.nimotv][trace] 240p params={'appid': '81', 'ctype': 'nimo_wap', 'id': 'su2099512210486rdb19c5fbef3abe82f561ec9deb1c824a', 'tp': '1789238431531', 'wsTime': '6aa6ee1f', 't': '110', 'sv': 2411271811, 'wsSecret': 'efe33b561c231d51e5617cb8eb2f3dd8', 'seqid': 1789248804124, 'u': 0, 'ratio': 250}
[00:33:24.124652][MainThread][plugins.nimotv][trace] 360p params={'appid': '81', 'ctype': 'nimo_wap', 'id': 'su2099512210486rdb19c5fbef3abe82f561ec9deb1c824a', 'tp': '1789238431531', 'wsTime': '6aa6ee1f', 't': '110', 'sv': 2411271811, 'wsSecret': 'efe33b561c231d51e5617cb8eb2f3dd8', 'seqid': 1789248804124, 'u': 0, 'ratio': 500}
[00:33:24.124738][MainThread][plugins.nimotv][trace] 480p params={'appid': '81', 'ctype': 'nimo_wap', 'id': 'su2099512210486rdb19c5fbef3abe82f561ec9deb1c824a', 'tp': '1789238431531', 'wsTime': '6aa6ee1f', 't': '110', 'sv': 2411271811, 'wsSecret': 'efe33b561c231d51e5617cb8eb2f3dd8', 'seqid': 1789248804124, 'u': 0, 'ratio': 1000}
[00:33:24.124819][MainThread][plugins.nimotv][trace] 720p params={'appid': '81', 'ctype': 'nimo_wap', 'id': 'su2099512210486rdb19c5fbef3abe82f561ec9deb1c824a', 'tp': '1789238431531', 'wsTime': '6aa6ee1f', 't': '110', 'sv': 2411271811, 'wsSecret': 'efe33b561c231d51e5617cb8eb2f3dd8', 'seqid': 1789248804124, 'u': 0, 'ratio': 2000}
[00:33:24.124899][MainThread][plugins.nimotv][trace] 1080p params={'appid': '81', 'ctype': 'nimo_wap', 'id': 'su2099512210486rdb19c5fbef3abe82f561ec9deb1c824a', 'tp': '1789238431531', 'wsTime': '6aa6ee1f', 't': '110', 'sv': 2411271811, 'wsSecret': 'efe33b561c231d51e5617cb8eb2f3dd8', 'seqid': 1789248804124, 'u': 0, 'ratio': 6000}
[00:33:24.125331][MainThread][cli][info] Available streams: 240p (worst), 360p, 480p, 720p, 1080p (best)
[00:33:24.125441][MainThread][cli][info] Opening stream: 720p (hls)
[00:33:24.125623][MainThread][cli][info] Writing output to
/dev/null
[00:33:24.125703][MainThread][cli][debug] Checking file output
[00:33:24.126466][HLSStreamWorker-0][stream.hls][debug] Reloading playlist
[00:33:24.126585][MainThread][cli][debug] Pre-buffering 8192 bytes
[00:33:25.592530][HLSStreamWorker-0][stream.hls][debug] First Sequence: 1789248765; Last Sequence: 1789248767
[00:33:25.592744][HLSStreamWorker-0][stream.hls][debug] Start offset: -0.0; Duration: 6.7; Start Sequence: 1789248765; End Sequence: None
[00:33:25.592837][HLSStreamWorker-0][stream.segmented][debug] Queuing HLSSegment(num=1789248765, init=False, discontinuity=False, duration=2.000, title=None, key=None, byterange=None, date=None, map=None, fileext='ts')
[00:33:25.594112][HLSStreamWorker-0][stream.segmented][debug] Queuing HLSSegment(num=1789248766, init=False, discontinuity=False, duration=2.000, title=None, key=None, byterange=None, date=None, map=None, fileext='ts')
[00:33:25.594781][HLSStreamWorker-0][stream.segmented][debug] Queuing HLSSegment(num=1789248767, init=False, discontinuity=False, duration=2.000, title=None, key=None, byterange=None, date=None, map=None, fileext='ts')
[00:33:25.875094][HLSStreamWriter-0][stream.hls][debug] Writing segment 1789248765 to output
[00:33:25.876593][HLSStreamWriter-0][stream.hls][debug] Segment 1789248765 complete
[00:33:25.877074][MainThread][cli][debug] Writing stream to output
[00:33:26.038815][HLSStreamWriter-0][stream.hls][debug] Writing segment 1789248766 to output
[00:33:26.040788][HLSStreamWriter-0][stream.hls][debug] Segment 1789248766 complete
[00:33:26.148636][HLSStreamWorker-0][stream.hls][debug] Reloading playlist
[00:33:26.193745][HLSStreamWriter-0][stream.hls][debug] Writing segment 1789248767 to output
[00:33:26.194390][HLSStreamWriter-0][stream.hls][debug] Segment 1789248767 complete
[00:33:27.011582][HLSStreamWorker-0][stream.segmented][debug] Queuing HLSSegment(num=1789248768, init=False, discontinuity=False, duration=2.000, title=None, key=None, byterange=None, date=None, map=None, fileext='ts')
[00:33:27.011903][HLSStreamWorker-0][stream.segmented][info] Stopping stream early after 6.70s
[00:33:27.012887][HLSStreamWorker-0][stream.segmented][debug] Closing worker thread
[00:33:27.219007][HLSStreamWriter-0][stream.hls][debug] Writing segment 1789248768 to output
[00:33:27.219817][HLSStreamWriter-0][stream.hls][debug] Segment 1789248768 complete
[00:33:27.220215][HLSStreamWriter-0][stream.segmented][debug] Closing writer thread
[00:33:27.222536][MainThread][cli][info] Stream ended
[00:33:27.222768][MainThread][cli][info] Closing currently open stream...
[download] Written 2.42 MiB to /dev/null (1s)

@bastimeyer

Copy link
Copy Markdown
Member

Thanks. Seems to be working fine.

My browser didn't execute the getAnticode getter function though where the wsSecret and stuff is added to the query string, so I can't validate the requirements here. The sv value also changes between different UAs for some reason...

Could you please fix the regex of the URL matcher? The username capture group should be [^/?#]+.

JCE

Not worth it unless there's actual demand.

@bastimeyer bastimeyer added the plugin issue A Plugin does not work correctly label Sep 12, 2026
@bastimeyer
bastimeyer merged commit 3f0cdc5 into streamlink:master Sep 13, 2026
34 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

plugin issue A Plugin does not work correctly

Projects

None yet

Development

Successfully merging this pull request may close these issues.

plugins.nimotv: new stream URL format

2 participants