bastimeyer · GitHub

@goodryb

bastimeyer

requested changes Jun 18, 2026

@bastimeyer bastimeyer changed the title plugins: add douyu.com live streaming plugin plugins.douyutv: restore plugin with new implementation

Jun 18, 2026
- Return all stream qualities instead of single rate parameter
- Remove @pluginargument, implement stream_weight() with QUALITY_WEIGHTS
- URL matcher: remove dyshid query param, use parse_qsd instead
- Delete _get_real_rid (all room IDs are numeric)
- Remove all superfluous comments
- Extract constants as class attributes (HEVC, FA, IVE)
- Add validate.url(scheme='https') for rtmp_url
- Replace NoStreamsError with return
- Fix betard API schema: cate_name can be null
- Fix offline room: API returns empty string for data
- Add  declarations (id, author, category, title)
- Test: remove generic non-matching URLs and dyshid test cases

bastimeyer

@bastimeyer bastimeyer changed the title plugins.douyutv: restore plugin with new implementation plugins.douyu: restore plugin with new implementation

Jun 20, 2026
Some CDN nodes (e.g., edgesrv.com:8443) are not compatible with
OpenSSL 3.0's default security level (SECLEVEL=2), causing SSL
handshake failures when downloading streams in --player mode.
Mount TLSSecLevel1Adapter (SECLEVEL=1) for the CDN domain after
obtaining the stream URL, similar to the approach used by the
filmon plugin.

@goodryb

Previously, the auth token was computed with one timestamp, but the
POST request to getH5PlayV1 used a different (newer) timestamp for
the tt field. This mismatch caused the API to reject requests as
invalid, resulting in intermittent 403 Forbidden errors.
Restructure _request_stream to be self-contained: each call now
fetches fresh encryption parameters, computes the auth token, and
sends the POST request within the same method, ensuring enc_data,
auth, and tt are always consistent.

@bastimeyer bastimeyer changed the title plugins.douyu: restore plugin with new implementation plugins.douyu: re-introduce plugin with new implementation

Jun 20, 2026

@bastimeyer

Closed

5 tasks

Read the original on github.com ↗