242 Commits
Author SHA1 Message Date
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 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
freearhey a22cf5960e Update tests/__data__ 2026-10-21 02:12:00 +03: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
freearhey d7f1cdf2c1 Update tests/__data__ 2026-09-18 11:30:24 +03:00
freearhey bfba3e5f1f Update tests/__data__ 2026-09-08 17:15:21 +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 b700995496 Update tests/__data__ 2026-09-03 14:52:31 +03:00
chen zhihao de096ff4a8 fix: address nested playlist review feedback 2026-09-01 10:53:47 +08:00
chen zhihao 1b6b7db25a fix: preserve nested playlist paths when formatting 2026-08-31 20:52:37 +08:00
freearhey 831558717b Update streams_edit.txt 2026-08-17 01:12:38 +03:00
freearhey 309f940192 Update tests/__data__ 2026-08-17 00:59:47 +03:00
freearhey f963642bed Update tests/__data__ 2026-08-16 22:54:08 +03:00
freearhey 99eeb487a7 Update tests/__data__ 2026-08-16 22:18:21 +03:00
freearhey 6f17304a94 Update tests/__data__ 2026-08-16 01:50:54 +03:00
freearhey 5c435c4751 Update tests/__data__ 2026-08-15 03:00:56 +03:00
freearhey b7cd2a1d5a Update tests/__data__ 2026-05-25 13:25:19 +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 e18bdc87ab Create discussions.js 2026-04-12 08:45:53 +03:00
freearhey 82bbdd86f2 Update streams.json 2026-03-29 10:59:45 +03:00
freearhey aa5125890a Update tests/__data__ 2026-03-25 12:15:22 +03:00
freearhey aafd79f242 Update tests/__data__ 2026-03-23 17:12:23 +03:00
freearhey f4058b5a56 Update tests/__data__ 2026-03-11 07:07:59 +03:00
freearhey fe7284359a Update tests/__data__ 2026-03-01 17:31:46 +03:00
freearhey 451be80e77 Update tests/__data__ 2026-02-11 04:55:20 +03:00
freearhey 55836ade7b Update tests/__data__ 2025-12-23 07:14:03 +03:00
freearhey b100d93124 Update ag.m3u 2025-12-13 01:35:09 +03:00
freearhey ce5191db90 Update tests/__data__ 2025-12-13 01:07:03 +03:00
freearhey 028ecc7046 Update tests/__data__ 2025-12-09 04:18:54 +03:00
freearhey 963e4a88c4 Update tests/__data__ 2025-12-04 18:31:54 +03:00
freearhey 60fde4cc8c Replace LF with CRLF 2025-10-09 03:20:46 +03:00
freearhey 4861c60b74 Update tests/__data__ 2025-10-08 23:29:04 +03:00
freearhey c7d9e78be5 Update 4_channel-search.yml 2025-10-08 23:07:27 +03:00
freearhey b65f39e8ca Update tests/__data__ 2025-10-08 20:40:42 +03:00
freearhey eac29a0f1a Replace LF with CRLF 2025-10-08 20:40:22 +03:00
freearhey 5397ab25b0 Update tests/__data__ 2025-09-02 01:36:18 +03:00