Commit graph

928 commits

Author SHA1 Message Date
WebStreamr
aa4c672594
chore(fetcher): persist and use FlareSolverr cookie and user agent
doesn't seem to work, but this is best practice anyway..
2025-06-04 18:29:02 +00:00
WebStreamr
0d3a5b8919
chore(fetcher): use queue limit of 10 again :)
queuing too long results in a bad experience. and often there are other
non-blocked sources too, so people can choose those. or self-host.
2025-06-04 16:18:03 +00:00
webstreamr
a9ebe9946a
chore(release): release v0.23.1 (#107) 2025-06-04 15:24:36 +00:00
WebStreamr
7387aef764
chore(fetcher): use FlareSolverr also for other 403 Cloudflare responses 2025-06-04 15:23:15 +00:00
WebStreamr
e6aa95f875
chore(fetcher): increase queue limit to 30 2025-06-04 15:22:59 +00:00
WebStreamr
2c9faebcdc
fix(fetcher): improve Flaresolverr fetching
- use queued fetching to not mix sessions
- log issue responses
2025-06-04 14:59:12 +00:00
webstreamr
7c45c78788
chore(release): release v0.23.0 (#105) 2025-06-04 16:20:24 +02:00
WebStreamr
af65ed0094
feat(fetcher): add FlareSolverr support 2025-06-04 14:18:50 +00:00
WebStreamr
1b8f75f00e
fix(extractor): do not mutate URLs to avoid cache misses 2025-06-04 13:23:54 +00:00
WebStreamr
fef59dd03b
fix: never cache result errors 2025-06-04 12:05:59 +00:00
WebStreamr
7ec7219ed4
chore: do not log headers for known blocking reasons 2025-06-04 12:05:09 +00:00
webstreamr
a156e98831
chore(release): release v0.22.10 (#104) 2025-06-04 12:59:20 +02:00
WebStreamr
422f7d014c
chore(fetcher): hard-code user-agent again for debugging purposes 2025-06-04 10:54:16 +00:00
WebStreamr
77fc20cfff
refactor: extract env access into helpers 2025-06-04 10:29:50 +00:00
webstreamr
64823685cc
chore(release): release v0.22.9 (#103) 2025-06-04 10:07:13 +00:00
WebStreamr
b69c9cde03
chore: cache successful results as long as we safely can 2025-06-04 10:06:24 +00:00
WebStreamr
d78dca3345
chore: log response headers for blocks 2025-06-04 08:45:08 +00:00
webstreamr
c5cc955d91
chore(release): release v0.22.8 (#99) 2025-06-04 00:47:28 +02:00
WebStreamr
f0817a3dd6
chore: implement queued fetching 2025-06-03 22:44:57 +00:00
WebStreamr
ef2c45e2cb
chore: add more error infos to results 2025-06-03 21:56:19 +00:00
webstreamr
ed501a7ee9
chore(release): release v0.22.7 (#96) 2025-06-03 17:04:57 +02:00
WebStreamr
9d17f5340a
chore: catch handler blocked errors and report the and report themm 2025-06-03 15:02:56 +00:00
WebStreamr
f6967da5cc
chore: try to log error causes 2025-06-03 14:54:05 +00:00
WebStreamr
0b9cf21fae
fix(handler): use new frembed domain (again) 2025-06-03 14:21:18 +00:00
WebStreamr
ae6fdfe726
chore: add language name to config in manifest as well 2025-06-02 15:45:16 +00:00
webstreamr
9291a377d3
chore(release): release v0.22.6 (#95) 2025-06-02 15:33:11 +00:00
WebStreamr
e4dd16e9d1
chore: improve results format and refactor name/title generation 2025-06-02 15:31:15 +00:00
webstreamr
120fb2896f
chore(release): release v0.22.5 (#94) 2025-06-02 11:43:57 +02:00
WebStreamr
e86b5c3454
fix(handler): use new frembed domain 2025-06-02 09:42:26 +00:00
WebStreamr
12d91ba0b4
test: fix mocked Fetcher real calls by using same headers 2025-06-02 09:42:26 +00:00
webstreamr
d271b2c337
chore(release): release v0.22.4 (#91) 2025-06-01 19:38:06 +00:00
WebStreamr
cd8ff60508
fix(handler): disable Eurostreaming as long as it doesn't work 2025-06-01 19:37:03 +00:00
WebStreamr
c3a2f9fdc6
fix(fetcher): use "node" as user agent explicitly
no idea why, but this avoids challenges so far..
2025-06-01 19:31:25 +00:00
WebStreamr
2eb09fc65a
chore: generalize forbidden/blocked handling 2025-06-01 19:31:11 +00:00
webstreamr
f3cbc92286
chore(release): release v0.22.3 (#88) 2025-06-01 13:42:44 +00:00
WebStreamr
424ed78b93
chore(fetcher): hardcode user-agent for now to avoid using "node" 2025-06-01 13:40:59 +00:00
webstreamr
ba9f33230f
chore(release): release v0.22.2 (#87) 2025-06-01 13:21:25 +00:00
WebStreamr
717019e04e
chore(fetcher): add response header info to non-expected errors 2025-06-01 13:19:38 +00:00
WebStreamr
ca981220c9
chore(fetcher): remove Origin header
more is not always better I guess :)

not breaking anything, but that header is not used for normal HTTP GET
requests
2025-06-01 13:08:52 +00:00
webstreamr
a85a483732
chore(release): release v0.22.1 (#86) 2025-05-31 21:15:58 +00:00
WebStreamr
fbc1aa994c
fix: switch back to fetch and do not generate user agents
seems to be causing less cloudflare challenges
2025-05-31 21:13:52 +00:00
webstreamr
0f19b4b7a7
chore(release): release v0.22.0 (#80) 2025-05-29 21:25:43 +02:00
WebStreamr
799ca975ac
feat: make external URL exclusion configurable 2025-05-29 19:17:21 +00:00
WebStreamr
5bfe2f800b
chore(fetcher): reduce timeout to 5s 2025-05-29 18:32:06 +00:00
WebStreamr
07ddaab7fb
chore(fetcher): set more headers to mimick browser requests 2025-05-29 17:55:20 +00:00
WebStreamr
f2a7da21e0
test: remove duplicated Fetcher test parts 2025-05-29 17:43:51 +00:00
WebStreamr
862d3bb5f2
refactor(handler): remove not needed 404 special handling 2025-05-29 17:40:48 +00:00
WebStreamr
02b73b41d7
chore(fetcher): use more realistic referer/origin header values 2025-05-29 17:36:43 +00:00
WebStreamr
0638ce0a8c
fix: detect and report Cloudflare challenge blocks 2025-05-29 17:17:17 +00:00
webstreamr
fbc35550b9
chore(release): release v0.21.0 (#76) 2025-05-25 20:48:23 +02:00
WebStreamr
d4e402e5c9
feat: add title to meta, restructure result name 2025-05-25 18:46:55 +00:00
WebStreamr
f27fc6c38a
refactor: introduce type for CountryCode 2025-05-25 19:32:16 +02:00
WebStreamr
979dddd20c
refactor: move bytes, height and countryCode into meta object
and pass that to the extractors instead. this is a preparation to
support more meta like e.g. title
2025-05-25 19:25:39 +02:00
WebStreamr
faa6eb6ed7
test: update fetch fixtures only when requested
avoids automagic http requests in tests
2025-05-25 19:12:36 +02:00
WebStreamr
f3beb72f17
bug(extractor): handle not found case properly for DoodStream 2025-05-25 19:04:12 +02:00
WebStreamr
6b5c9a4ce7
feat(extractor): cache not found results too 2025-05-25 18:58:00 +02:00
webstreamr
9b0d416393
chore(release): release v0.20.1 (#74) 2025-05-23 13:47:32 +02:00
WebStreamr
5c51abbd46
chore: log IP in stream request 2025-05-23 10:53:09 +00:00
WebStreamr
b313c4eb8d
chore(fetcher): set Origin header and add back proxy headers 2025-05-23 10:52:49 +00:00
WebStreamr
8e791bbe24
chore: better handle not found streams/links 2025-05-23 10:40:59 +00:00
WebStreamr
1e9ebd5905
test: do not reset but only clear mocks 2025-05-23 10:37:13 +00:00
WebStreamr
f4a0b03246
fix(handler): do not ignore main link in Eurostreaming 2025-05-23 09:20:20 +00:00
WebStreamr
1447adad1b
chore: reduce axios retries to 1 again, avoid risky retries 2025-05-23 09:08:20 +00:00
WebStreamr
0a99f1e501
chore(extractor): use HEAD instead of GET to check external URLs 2025-05-22 16:36:28 +00:00
webstreamr
7be71c965f
chore(release): release v0.20.0 (#71) 2025-05-21 22:41:51 +02:00
WebStreamr
e90c89af89
test: use snapshots, also use fixtures for axios errors 2025-05-21 20:37:35 +00:00
WebStreamr
23445c143b
feat(extractor): add external URL support
This could still be a useful fallback on some devices since it indicates
that we found a potential embed URL but could not extract the video URL.
2025-05-21 19:22:32 +00:00
webstreamr
3f64ba0f9b
chore(release): release v0.19.4 (#69) 2025-05-21 15:46:15 +00:00
WebStreamr
ac8dd43662
fix(handler): return only results for configured country/language in CineHDPlus 2025-05-21 15:45:15 +00:00
webstreamr
8367b7d6e1
chore(release): release v0.19.3 (#65) 2025-05-20 19:23:17 +00:00
webstreamr
8daabf1f5a
chore(fetcher): increase timeout to 15s (#64) 2025-05-20 19:22:08 +00:00
webstreamr
e6980e5676
chore(release): release v0.19.2 (#63) 2025-05-19 12:06:03 +02:00
WebStreamr
c2c5331861
chore(fetcher): remove proxy headers, add default timeout
The proxy headers are not improving anything and only cause issues with
another extractor that using IP-locking.
2025-05-19 08:47:52 +00:00
webstreamr
1197b9aba3
chore(release): release v0.19.1 (#60) 2025-05-18 23:04:59 +02:00
WebStreamr
57799a777a
revert: "feat(extractor): implement UQLoad"
This reverts commit fb61d39225.

UQLoad is IP-locked.
2025-05-18 22:50:31 +02:00
webstreamr
6a166b29a9
chore(release): release v0.19.0 (#59) 2025-05-18 22:26:30 +02:00
WebStreamr
b5c45d806e
refactor(extractor): manipulate URL instead of creating new one 2025-05-18 21:48:17 +02:00
WebStreamr
fb61d39225
feat(extractor): implement UQLoad 2025-05-18 21:20:48 +02:00
WebStreamr
d8a19d4916
refactor(handler): switch Frembed to TMDB search which is more reliable 2025-05-18 21:19:58 +02:00
WebStreamr
03cb05e2a3
feat: implement IMDb -> TMDB ID conversion helper 2025-05-18 21:16:47 +02:00
webstreamr
91eb1de1c4
chore(release): release v0.18.0 (#58) 2025-05-17 22:10:13 +00:00
WebStreamr
ac4ded4614
chore(manifest): add stremio-addons.net signature 2025-05-18 00:09:17 +02:00
WebStreamr
5b389ada9e
feat: configure languages instead of handlers
just feels more natural and helps maintainence. handlers should be an
internal thing.
2025-05-18 00:00:10 +02:00
webstreamr
d368b3a9de
chore(release): release v0.17.0 (#56) 2025-05-17 21:41:29 +02:00
WebStreamr
f2fb4821e3
refactor: use template literal consistently 2025-05-17 21:10:40 +02:00
WebStreamr
f635d6c233
chore: create ID per request for logging and error response 2025-05-17 21:06:51 +02:00
WebStreamr
4a705ce088
refactor: cleanup url and extractorRegistry variable/prop names 2025-05-17 20:25:51 +02:00
WebStreamr
8b82215c32
feat(handler): limited Frembed support 2025-05-17 20:20:19 +02:00
webstreamr
b331dc66ac
chore(release): release v0.16.1 (#54) 2025-05-17 01:06:50 +02:00
WebStreamr
bb395f0375
revert: "feat(extractor): implement Mixdrop"
This reverts commit 4c53161e98.

Mixdrop seems to be IP-locked.
2025-05-17 01:05:40 +02:00
webstreamr
2c4cccab66
chore(release): release v0.16.0 (#53) 2025-05-16 22:37:17 +02:00
WebStreamr
63a79f8758
fix(extractor): do not throw for broken/outdated link 2025-05-16 22:36:20 +02:00
WebStreamr
b790cc7954
refactor: use url.href instead of url.toString() 2025-05-16 22:34:19 +02:00
WebStreamr
4c53161e98
feat(extractor): implement Mixdrop 2025-05-16 22:34:19 +02:00
WebStreamr
24f1107df8
refactor(extractor): improve DoodStream comment about no match case 2025-05-16 18:51:32 +00:00
WebStreamr
07ffe444f3
chore: return stream.behaviorHints.videoSize when possible 2025-05-16 20:48:31 +02:00
WebStreamr
e06b8a2d95
chore: rename behaviourHints to behaviorHints 🤦
This fixes DoodStream by fixing the Referer header usage hint.
2025-05-16 20:36:33 +02:00
webstreamr
7698757865
chore(release): release v0.15.2 (#48) 2025-05-16 15:33:12 +00:00
WebStreamr
e13ab0c70f
chore: compare by label if both height and bytes are the same 2025-05-16 15:31:54 +00:00
webstreamr
269a05499d
chore(release): release v0.15.1 (#47) 2025-05-16 17:24:05 +02:00
WebStreamr
241e6b0b77
fix: rename behaviourHints.group to behaviourHints.bingeGroup
as stated in 3950d57076/docs/api/responses/stream.md
TS types seem to be quite outdated...
2025-05-16 15:22:39 +00:00
webstreamr
4857bc0494
chore(release): release v0.15.0 (#46) 2025-05-16 17:12:11 +02:00
WebStreamr
87ec328a66
refactor(extractor): remove embed part from extractor 2025-05-16 15:07:03 +00:00
WebStreamr
8740979a80
feat(extractor): try to semi-blindly implement DoodStream support 2025-05-16 15:03:57 +00:00
WebStreamr
938f6cb2c3
refactor(fetcher): use origin for the referrer 2025-05-16 12:27:48 +00:00
webstreamr
7d465c0229
chore(release): release v0.14.1 (#45) 2025-05-15 16:55:00 +02:00
WebStreamr
c1da2d5552
fix: add back cache-control headers
but keep them super short, mostly to reduce traffic via external cache infra
2025-05-15 14:52:02 +00:00
WebStreamr
91a6935a91
chore: add missing dot after GitHub link 2025-05-15 14:37:24 +00:00
WebStreamr
e8ed101176
fix(fetcher): do not overwrite config 2025-05-15 14:25:34 +00:00
webstreamr
5206aa2c4a
chore(release): release v0.14.0 (#43) 2025-05-14 13:12:40 +00:00
WebStreamr
728bc7ecba
feat(fetcher): retry all 4xx requests too 2025-05-14 13:11:37 +00:00
WebStreamr
956ba68550
refactor(handler): also pass content type to handle() 2025-05-14 12:00:58 +00:00
WebStreamr
281cba8da1
chore(fetcher): always set same URL host as referer 2025-05-14 11:51:48 +00:00
webstreamr
c5112124f5
chore(release): release v0.13.0 (#42) 2025-05-14 12:14:37 +02:00
WebStreamr
c6d9bfb01b
feat(handler): add Eurostream (it series) 2025-05-14 10:12:57 +00:00
WebStreamr
7f26047250
feat(handler): add CineHDPlus (es/mx series) 2025-05-14 09:13:14 +00:00
webstreamr
1fb59bcb6d
chore(release): release v0.12.0 (#41) 2025-05-13 18:32:57 +00:00
WebStreamr
1c1ffcd19b
feat(fetcher): add retry capability using axios-retry 2025-05-13 18:31:34 +00:00
WebStreamr
349c26c9b5
chore(extractor): log more infos 2025-05-13 18:19:36 +00:00
webstreamr
1454d21e4d
chore(release): release v0.11.2 (#40) 2025-05-13 16:06:43 +00:00
WebStreamr
41d2f23812
refactor(fetcher): switch to axios for hopefully better errors 2025-05-13 16:05:27 +00:00
webstreamr
739ded0aa2
chore(release): release v0.11.1 (#39) 2025-05-13 14:52:22 +02:00
WebStreamr
1be75645d3
chore: add link to GitHub on configure page, improve content type info 2025-05-13 12:50:53 +00:00
webstreamr
f0a8ab540a
chore(release): release v0.11.0 (#38) 2025-05-13 14:43:36 +02:00
WebStreamr
5665c6a6ff
refactor: extract stream resolving and add tests 2025-05-13 12:42:10 +00:00
WebStreamr
d4db80789a
feat(handler): return handler issues as streams for better visibility 2025-05-13 11:58:49 +00:00
WebStreamr
68a7a41606
refactor: simplify embed extractor handling and hide away internals 2025-05-13 11:48:31 +00:00
WebStreamr
15a53de504
refactor(routes): use router via controllers 2025-05-13 08:36:44 +00:00
WebStreamr
ce6aca5c77
chore(manifest): don't show language codes next to flags 2025-05-13 08:18:51 +00:00
webstreamr
7271b1c100
chore(release): release v0.10.1 (#36) 2025-05-12 15:31:59 +00:00
WebStreamr
4da2567ab2
fix: remove cache-control headers
There is some flakyness going on from time to time and we don't want to
cache that. Good thing is that internal fetches are cached already.
2025-05-12 15:29:24 +00:00
webstreamr
cc429acbc3
chore(release): release v0.10.0 (#35) 2025-05-12 15:16:53 +00:00
WebStreamr
44e140c696
feat(handler): add VerHdLink 2025-05-12 15:15:47 +00:00
WebStreamr
3d4129fbd9
fix: add language to sourceId for better grouping / binge watching 2025-05-12 15:14:43 +00:00
WebStreamr
8ba6fdb5df
refactor: rename language to countryCode to avoid confusion 2025-05-12 14:48:06 +00:00
WebStreamr
9145e9c3f6
test(handler): use correct name in describe block 2025-05-12 14:26:39 +00:00
webstreamr
9c9a8e410b
chore(release): release v0.9.0 (#34) 2025-05-12 16:15:20 +02:00
WebStreamr
02c9ae3b1b
feat(handler): add MostraGuarda 2025-05-12 14:12:05 +00:00
WebStreamr
23eb87e9db
feat(manifest): show supported content types for each config/handler 2025-05-12 14:07:34 +00:00
webstreamr
12b31835cb
chore(release): release v0.8.0 (#33) 2025-05-12 15:23:17 +02:00
WebStreamr
9e74bd747b
feat(handler): add FrenchCloud 2025-05-12 13:20:46 +00:00
WebStreamr
4cde8607cd
refactor(handler): remove unnecessary Promise.resolve() usage 2025-05-12 12:58:48 +00:00
WebStreamr
072ec4ac0a
feat(fetcher): work only with URL objects, set 2 more proxy headers 2025-05-12 12:16:55 +00:00
WebStreamr
13520aa194
chore(logging): simplify format definition, do nothing in test 2025-05-12 12:16:32 +00:00
webstreamr
3c76e182ed
chore(release): release v0.7.1 (#32) 2025-05-12 09:46:07 +00:00
WebStreamr
fc024209a7
refactor: drop logging helper in favor of winston using DI 2025-05-12 09:44:52 +00:00
WebStreamr
8d003dd174
refactor: simplify resolving of promises 2025-05-12 09:25:17 +00:00
WebStreamr
89e5bb1978
refactor: use country-emoji library instead of custom helper 2025-05-12 09:14:23 +00:00
WebStreamr
09ee685d22
refactor: make cache ttl configurable per embed extractor 2025-05-12 09:05:46 +00:00
webstreamr
f2389f428b
chore(release): release v0.7.0 (#29) 2025-05-12 09:04:05 +02:00
WebStreamr
1654c0b920
chore: limit to 5 concurrent fetch sockets
just to be on the safe side
2025-05-12 06:54:52 +00:00
WebStreamr
b7a8fc4e76
feat: send also X-Real-IP next to X-Forwarded-For 2025-05-12 06:49:20 +00:00
WebStreamr
0a57114c7d
refactor: better names for the cache properties 2025-05-11 21:39:36 +00:00
webstreamr
3b00036ff2
chore(release): release v0.6.0 (#28) 2025-05-11 23:32:54 +02:00
WebStreamr
8226d0755a
feat: cache extractor results for 15 minutes 2025-05-11 21:31:43 +00:00
WebStreamr
477c3d1ff9
fix: improve height and bytes types 2025-05-11 20:59:29 +00:00
WebStreamr
ee0efa5409
feat: introduce custom UrlResult which will be transformed to Stream 2025-05-11 20:39:57 +00:00
WebStreamr
b114ac11b7
feat: use randomized user agent for fetch 2025-05-11 20:05:31 +00:00
WebStreamr
efef039cde
feat: introduce Context and use it to set X-Forwarded-For in requests 2025-05-11 19:44:19 +00:00
WebStreamr
4787a1323d
refactor: use URL instead of string where possible 2025-05-11 19:22:28 +00:00
WebStreamr
96dde8a634
refactor: DI for handlers, extractors and fetcher 2025-05-11 19:11:14 +00:00
webstreamr
d7bfe5fee9
chore(release): release v0.5.0 (#27) 2025-05-11 01:28:14 +02:00
WebStreamr
f62fa944bb
feat: extract embed handling 2025-05-10 22:59:12 +00:00
WebStreamr
05c0163874
test: improve fetch fixture handling 2025-05-10 22:09:52 +00:00
webstreamr
d7422746ce
chore(release): release v0.4.1 (#26) 2025-05-09 22:09:08 +02:00
webstreamr
66a70dc22d
feat: drop stremio-addon-sdk (#24) 2025-05-09 21:59:36 +02:00
webstreamr
34fc1f7b43
chore(release): release v0.3.0 (#23) 2025-05-09 09:18:20 +02:00
WebStreamr
193f81593a
feat: add support for configuring manifest description via env var 2025-05-09 07:12:52 +00:00
webstreamr
d7f3cc11a6
chore(release): release v0.2.1 (#22) 2025-05-08 23:02:59 +02:00
webstreamr
639f9452ab
build(docker): clean-up needed env vars, use sane defaults (#21) 2025-05-08 23:02:29 +02:00
webstreamr
24e9898be2
chore(release): release v0.2.0 (#20) 2025-05-08 22:44:01 +02:00
WebStreamr
26b19b01b5
chore: configure Release Please 2025-05-08 20:43:07 +00:00
webstreamr
3078e02b4b
feat: introduce MANIFEST_VERSION env var (#7) 2025-05-08 20:54:09 +02:00
WebStreamr
3a87ddb9f0
refactor: make resolution and size optional and extract resolution helper
This should come in handy later when adding more providers
2025-05-08 18:39:23 +00:00
WebStreamr
afec515287
refactor: transform handlers to classes, improve config generation 2025-05-08 12:19:46 +00:00
WebStreamr
828d0cd590
chore: improve description 2025-05-08 07:34:41 +00:00
WebStreamr
b9303dc8ce
test: simplify embed expectation 2025-05-07 21:39:10 +00:00
WebStreamr
1494b2524e
chore: initial commit 2025-05-07 21:09:18 +00:00