Commit Graph
754 Commits
Author SHA1 Message Date
Shubham Padkonde 4b035b4558 Fix percent-encoded proxy credentials 2026-10-26 09:44:59 +05:30
Pecaquito 77f617c888 Merge pull request #56360 from L4XB/fix/stream-info-without-frame-rate
fix: read the stream quality from HLS variants without FRAME-RATE or CODECS
2026-10-25 21:21:54 -04:00
L4XB 215ee48311 fix: leave NSFW channels out of the categories and sources playlists
The other public generators drop NSFW streams with isSFW(), as PLAYLISTS.md promises (no NSFW channels since January 30th, 2024), but categories/ and sources/ took every stream, so NSFW channels with a feed were published there. The test fixture's NSFW channel now carries its feed id, so it reaches the generators instead of being dropped as a stream without a feed.
2026-10-25 04:09:46 +01:00
L4XB 63ef5bfd76 fix: read the stream quality from HLS variants without FRAME-RATE or CODECS
getStreamInfo returned a resolution only when the top variant of a master playlist had RESOLUTION, FRAME-RATE and CODECS, although playlist:format and playlist:update use only the height. RFC 8216 makes FRAME-RATE and CODECS optional, so such streams never got a quality. The parsing moves to parseStreamInfo, which tests can call without a network.
2026-10-25 03:31:03 +01:00
L4XB fbd2a5092a fix: keep %20, %2F and %23 encoded when playlist:format normalizes links 2026-10-24 04:44:59 +02:00
Blocket Flex e1c0dff899 Merge pull request #56060 from Dev-next-gen/fix/report-edit-deleted-stream-id
fix: don't flag stream ID removal as invalid in report:create
2026-10-22 14:05:09 -07:00
brokenstream 069f82d503 Merge pull request #55984 from iptv-org/patch-2026.10.1
Patch 2026.10.1
2026-10-22 07:10:41 -05:00
leoca f3cb3c0fee fix: don't flag stream ID removal as invalid in report:create
The edit form tells users to put `~` in a field to delete its value.
report:create split the Stream ID on `@` without checking for that, so
an edit request that removes the stream ID from an existing link was
listed as invalid_channel_id, since there is no channel called `~`.

Skip the channel lookup when the stream ID is marked as deleted, as
issue:validate already does.
2026-10-21 19:10:57 +00:00
Blocket Flex b598dec059 Merge pull request #55266 from Dev-next-gen/fix/mpd-invalid-manifest
fix: don't abort playlist:format on an unparseable .mpd response
2026-10-21 08:00:56 -07:00
Blocket Flex 6dc7c275cc Merge pull request #55677 from Dev-next-gen/fix/edit-keep-titles
fix: keep stream titles when playlist:edit saves the file
2026-10-21 07:58:52 -07:00
freearhey 3a068ae8c7 Create validate.ts 2026-10-21 02:12:14 +03:00
leoca c96d3eea10 fix: keep stream titles when playlist:edit saves the file
playlist:edit saved the playlist without the raw option, so every title
was rebuilt from the API channel name and country instead of being
written back as read. For a stream whose channel is not in the database,
that becomes "undefined (undefined)". playlist:format, playlist:update
and playlist:test already save with { public: false, raw: true }.
2026-10-17 13:40:28 +00:00
leoca 867591f3e2 fix: normalize playlist:validate file arguments
playlist:validate decides which streams belong to the selected files by
comparing the raw command-line arguments with the paths returned by
Storage.list(). A path such as ./streams/us.m3u never matches
streams/us.m3u, so the file's own streams are put in the duplicate buffer
and every link is reported as already being in that same file.

Resolve the arguments with getStoragePath(), as playlist:format does.
2026-10-14 11:05:51 +00:00
leoca 783c4b5d5a fix: don't abort playlist:format on an unparseable .mpd response
getStreamInfo() already ignores .m3u8 responses that hls-parser cannot read, but the .mpd branch let parseManifest() throw. A stream URL ending in .mpd that answers 200 with an HTML page makes mpd-parser throw DASH_INVALID_XML, which rejects inside eachLimit and kills playlist:format before anything is saved. playlist:update hits the same path when adding a stream.
2026-10-14 01:06:34 +00:00
freearhey 9d7cac7bda Update scripts 2026-09-18 11:31:21 +03:00
freearhey 95c15a8011 Update generate.ts 2026-09-08 17:15:24 +03:00
Pecaquito 403d972279 Merge pull request #50558 from iptv-org/patch-2026.09.1
Patch 2026.09.1
2026-09-04 16:52:14 -04:00
Sanaei 994b12fb25 fix: correct Live 24/7 handling and label regressions
- stream.updateWithIssue: 'Live 24/7: Yes' meant the stream IS 24/7, but it
  was assigned straight to isNot247, inverting the label. A 'No' answer was
  also ignored because the guard skipped falsy values.
- dataSet.getBoolean: an unanswered dropdown is stored as '' by
  parseIssueBody, which getBoolean read as false. Treat it as undefined so
  'no answer' means 'leave unchanged' instead of 'Not 24/7'.
- update.addStream: has() is true for an unanswered field, so it produced
  isNot247 = true for issues that left the dropdown blank.
- generate: sortBy got five orders for four iteratees.
- 2_streams_edit.yml: restore the '~' reset option dropped from the quality
  dropdown when the Label field was removed.
- stream.getLabels: use const to satisfy prefer-const.
2026-09-04 18:02:35 +02:00
Sanaei 3448e44b7e Merge branch 'master' into patch-2026.09.1
Resolved conflict in scripts/models/stream.ts: kept the branch's
labels/isNot247/isGeoBlocked handling in fromPlaylistItem while adopting
master's optional-chaining guards for data.tvg / data.http.
2026-09-04 18:01:12 +02:00
Sanaei f527cfd03a fix: harden getStoragePath and keep CRLF endings
- Normalize the returned path to forward slashes so it matches what
  Storage.list() (glob) returns, instead of leaking `\` on Windows.
- Treat the storage root itself as "not inside", so passing a directory
  no longer yields an empty path that Storage.load() would open as a dir.
- Extract the containment check into isInsideDirectory() and drop the
  redundant isAbsolute(filepath) branch (path.resolve already handles it).
- Restore the repository's CRLF line endings in the nested fixture.
2026-09-04 17:47:43 +02:00
Sanaei 2336dbc41f Merge remote-tracking branch 'origin/master' into pr/49871
# Conflicts:
#	tests/commands/playlist/format.test.ts
2026-09-04 17:30:25 +02:00
chen zhihao c5e24196b1 fix: keep malformed URLs during normalization (#49870) 2026-09-04 17:13:08 +02:00
chen zhihao 9652409093 fix: tolerate missing playlist metadata (#49868) 2026-09-04 17:12:25 +02:00
Aleksandr Statciuk 016c6ec540 Merge branch 'master' into patch-2026.09.1 2026-09-04 11:25:51 +03:00
chen zhihao f3ef256bdf Restrict parsed stream quality suffixes (#49869)
* fix: restrict parsed stream quality suffixes

* test: reuse playlist export fixture for quality suffix
2026-09-04 09:28:26 +02:00
chen zhihao 2c21f19496 Return failure status when playlist checks are offline (#49872)
* fix: fail playlist tests when offline

* test: move offline playlist check into test suite
2026-09-03 22:42:56 +02:00
freearhey d4f07c0a4c Update scripts 2026-09-03 14:53:13 +03:00
chen zhihao 5062505330 fix: handle formatter paths relative to workspace 2026-09-01 10:58:12 +08:00
chen zhihao de096ff4a8 fix: address nested playlist review feedback 2026-09-01 10:53:47 +08:00
chen zhihao e7e21e166c fix: reject formatter paths outside storage 2026-08-31 20:52:37 +08:00
chen zhihao 1b6b7db25a fix: preserve nested playlist paths when formatting 2026-08-31 20:52:37 +08:00
freearhey ca5e9e0e0a Update create.ts 2026-08-17 02:16:37 +03:00
freearhey c8811c58ee Update utils.ts 2026-08-17 01:34:43 +03:00
freearhey 4d6660623d Update validate.ts 2026-08-17 01:12:46 +03:00
freearhey fe04aca01d Update validate.ts 2026-08-17 01:05:19 +03:00
freearhey 0542592b50 Update scripts 2026-08-16 22:54:31 +03:00
freearhey 0ded917ccc Update test.ts 2026-08-16 22:18:23 +03:00
freearhey 076654ce60 Update validate.ts 2026-08-16 21:50:39 +03:00
freearhey 45c4e6c041 Update validate.ts 2026-08-16 01:51:01 +03:00
freearhey 34a557a4e5 Update scripts 2026-08-15 03:01:38 +03:00
freearhey 254458135a Update scripts 2026-05-25 13:29:39 +03:00
freearhey 377035b66a Update utils.ts 2026-05-02 13:47:26 +03:00
freearhey 2017199983 Update validate.ts 2026-05-02 13:34:48 +03:00
freearhey 8f7940c8ca wip 2026-05-02 13:29:34 +03:00
freearhey 6826742c6b wip 2026-05-02 12:26:32 +03:00
freearhey 834abac5e4 wip 2026-05-02 12:08:00 +03:00
freearhey 59133e92e8 Update scripts 2026-04-12 08:46:28 +03:00
freearhey 3f20573f74 Update edit.ts 2026-04-11 23:56:38 +03:00
Aleksandr StatciukandCopilot 2604b0824f Update scripts/commands/playlist/edit.ts
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2026-04-11 23:52:59 +03:00
freearhey 2d547ae74b Fix line endings char 2026-04-11 23:45:57 +03:00