Compare commits

...

3 commits

28 changed files with 723 additions and 1006 deletions

326
package-lock.json generated
View file

@ -11,19 +11,23 @@
"dependencies": {
"@keyv/sqlite": "^4.0.5",
"async-mutex": "^0.5.0",
"axios": "^1.13.2",
"axios-cache-interceptor": "^1.8.3",
"axios-mock-adapter": "^2.1.0",
"axios-retry": "^4.5.0",
"bytes": "^3.1.2",
"cacheable": "^2.0.0",
"cheerio": "^1.0.0",
"express": "^5.1.0",
"fast-levenshtein": "^3.0.0",
"fetch-socks": "^1.3.2",
"http-cache-semantics": "^4.2.0",
"http-proxy-agent": "^7.0.2",
"https-proxy-agent": "^7.0.6",
"minimatch": "^10.0.3",
"randomstring": "^1.3.1",
"rot13-cipher": "^1.0.0",
"slugify": "^1.6.6",
"socks-proxy-agent": "^8.0.5",
"tough-cookie": "^6.0.0",
"undici": "^7.10.0",
"unpacker": "^1.0.1",
"winston": "^3.17.0"
},
@ -34,9 +38,7 @@
"@types/bytes": "^3.1.5",
"@types/express": "^5.0.1",
"@types/fast-levenshtein": "^0.0.4",
"@types/http-cache-semantics": "^4.0.4",
"@types/jest": "^30.0.0",
"@types/make-fetch-happen": "^10.0.4",
"@types/node": "^24.0.0",
"@types/randomstring": "^1.3.0",
"@types/stremio-addon-sdk": "^1.6.11",
@ -1704,13 +1706,6 @@
"dev": true,
"license": "MIT"
},
"node_modules/@types/http-cache-semantics": {
"version": "4.0.4",
"resolved": "https://registry.npmjs.org/@types/http-cache-semantics/-/http-cache-semantics-4.0.4.tgz",
"integrity": "sha512-1m0bIFVc7eJWyve9S0RnuRgcQqF/Xd5QsUZAZeQFr1Q3/p9JWoQQEqmVy+DPTNpGXwhgIetAoYF8JSc33q29QA==",
"dev": true,
"license": "MIT"
},
"node_modules/@types/http-errors": {
"version": "2.0.5",
"resolved": "https://registry.npmjs.org/@types/http-errors/-/http-errors-2.0.5.tgz",
@ -1770,18 +1765,6 @@
"dev": true,
"license": "MIT"
},
"node_modules/@types/make-fetch-happen": {
"version": "10.0.4",
"resolved": "https://registry.npmjs.org/@types/make-fetch-happen/-/make-fetch-happen-10.0.4.tgz",
"integrity": "sha512-jKzweQaEMMAi55ehvR1z0JF6aSVQm/h1BXBhPLOJriaeQBctjw5YbpIGs7zAx9dN0Sa2OO5bcXwCkrlgenoPEA==",
"dev": true,
"license": "MIT",
"dependencies": {
"@types/node-fetch": "*",
"@types/retry": "*",
"@types/ssri": "*"
}
},
"node_modules/@types/mime": {
"version": "1.3.5",
"resolved": "https://registry.npmjs.org/@types/mime/-/mime-1.3.5.tgz",
@ -1800,17 +1783,6 @@
"undici-types": "~7.16.0"
}
},
"node_modules/@types/node-fetch": {
"version": "2.6.13",
"resolved": "https://registry.npmjs.org/@types/node-fetch/-/node-fetch-2.6.13.tgz",
"integrity": "sha512-QGpRVpzSaUs30JBSGPjOg4Uveu384erbHBoT1zeONvyCfwQxIkUshLAOqN/k9EjGviPRmWTTe6aH2qySWKTVSw==",
"dev": true,
"license": "MIT",
"dependencies": {
"@types/node": "*",
"form-data": "^4.0.4"
}
},
"node_modules/@types/qs": {
"version": "6.14.0",
"resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.14.0.tgz",
@ -1832,13 +1804,6 @@
"dev": true,
"license": "MIT"
},
"node_modules/@types/retry": {
"version": "0.12.5",
"resolved": "https://registry.npmjs.org/@types/retry/-/retry-0.12.5.tgz",
"integrity": "sha512-3xSjTp3v03X/lSQLkczaN9UIEwJMoMCA1+Nb5HfbJEQWogdeQIyVtTvxPXDQjZ5zws8rFQfVfRdz03ARihPJgw==",
"dev": true,
"license": "MIT"
},
"node_modules/@types/send": {
"version": "0.17.6",
"resolved": "https://registry.npmjs.org/@types/send/-/send-0.17.6.tgz",
@ -1862,16 +1827,6 @@
"@types/send": "<1"
}
},
"node_modules/@types/ssri": {
"version": "7.1.5",
"resolved": "https://registry.npmjs.org/@types/ssri/-/ssri-7.1.5.tgz",
"integrity": "sha512-odD/56S3B51liILSk5aXJlnYt99S6Rt9EFDDqGtJM26rKHApHcwyU/UoYHrzKkdkHMAIquGWCuHtQTbes+FRQw==",
"dev": true,
"license": "MIT",
"dependencies": {
"@types/node": "*"
}
},
"node_modules/@types/stack-utils": {
"version": "2.0.3",
"resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.3.tgz",
@ -2514,16 +2469,12 @@
}
},
"node_modules/agent-base": {
"version": "6.0.2",
"resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz",
"integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==",
"version": "7.1.4",
"resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.4.tgz",
"integrity": "sha512-MnA+YT8fwfJPgBx3m60MNqakm30XOkyIoH1y6huTQvC0PwZG7ki8NacLBcrPbNoo8vEZy7Jpuk7+jMO+CUovTQ==",
"license": "MIT",
"optional": true,
"dependencies": {
"debug": "4"
},
"engines": {
"node": ">= 6.0.0"
"node": ">= 14"
}
},
"node_modules/agentkeepalive": {
@ -2832,7 +2783,6 @@
"version": "0.4.0",
"resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz",
"integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==",
"dev": true,
"license": "MIT"
},
"node_modules/available-typed-arrays": {
@ -2851,6 +2801,63 @@
"url": "https://github.com/sponsors/ljharb"
}
},
"node_modules/axios": {
"version": "1.13.2",
"resolved": "https://registry.npmjs.org/axios/-/axios-1.13.2.tgz",
"integrity": "sha512-VPk9ebNqPcy5lRGuSlKx752IlDatOjT9paPlm8A7yOuW2Fbvp4X3JznJtT4f0GzGLLiWE9W8onz51SqLYwzGaA==",
"license": "MIT",
"peer": true,
"dependencies": {
"follow-redirects": "^1.15.6",
"form-data": "^4.0.4",
"proxy-from-env": "^1.1.0"
}
},
"node_modules/axios-cache-interceptor": {
"version": "1.8.3",
"resolved": "https://registry.npmjs.org/axios-cache-interceptor/-/axios-cache-interceptor-1.8.3.tgz",
"integrity": "sha512-ifuSBoCEkVaiugg1UTjVuTdK+SjSOJ35pdv2OrzhRT3wDMr52QiayQxUqs7jd7GDsfPOjMcw3T3ek0TysbyZZw==",
"license": "MIT",
"dependencies": {
"cache-parser": "1.2.5",
"fast-defer": "1.1.8",
"object-code": "1.3.3"
},
"engines": {
"node": ">=12"
},
"funding": {
"url": "https://github.com/arthurfiorette/axios-cache-interceptor?sponsor=1"
},
"peerDependencies": {
"axios": "^1"
}
},
"node_modules/axios-mock-adapter": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/axios-mock-adapter/-/axios-mock-adapter-2.1.0.tgz",
"integrity": "sha512-AZUe4OjECGCNNssH8SOdtneiQELsqTsat3SQQCWLPjN436/H+L9AjWfV7bF+Zg/YL9cgbhrz5671hoh+Tbn98w==",
"license": "MIT",
"dependencies": {
"fast-deep-equal": "^3.1.3",
"is-buffer": "^2.0.5"
},
"peerDependencies": {
"axios": ">= 0.17.0"
}
},
"node_modules/axios-retry": {
"version": "4.5.0",
"resolved": "https://registry.npmjs.org/axios-retry/-/axios-retry-4.5.0.tgz",
"integrity": "sha512-aR99oXhpEDGo0UuAlYcn2iGRds30k366Zfa05XWScR9QaQD4JYiP3/1Qt1u7YlefUOK+cn0CcwoL1oefavQUlQ==",
"license": "Apache-2.0",
"dependencies": {
"is-retry-allowed": "^2.2.0"
},
"peerDependencies": {
"axios": "0.x || 1.x"
}
},
"node_modules/babel-jest": {
"version": "30.2.0",
"resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-30.2.0.tgz",
@ -3286,6 +3293,12 @@
"license": "ISC",
"optional": true
},
"node_modules/cache-parser": {
"version": "1.2.5",
"resolved": "https://registry.npmjs.org/cache-parser/-/cache-parser-1.2.5.tgz",
"integrity": "sha512-Md/4VhAHByQ9frQ15WD6LrMNiVw9AEl/J7vWIXw+sxT6fSOpbtt6LHTp76vy8+bOESPBO94117Hm2bIjlI7XjA==",
"license": "MIT"
},
"node_modules/cacheable": {
"version": "2.3.0",
"resolved": "https://registry.npmjs.org/cacheable/-/cacheable-2.3.0.tgz",
@ -3722,7 +3735,6 @@
"version": "1.0.8",
"resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz",
"integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==",
"dev": true,
"license": "MIT",
"dependencies": {
"delayed-stream": "~1.0.0"
@ -4009,7 +4021,6 @@
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz",
"integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==",
"dev": true,
"license": "MIT",
"engines": {
"node": ">=0.4.0"
@ -4371,7 +4382,6 @@
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.1.0.tgz",
"integrity": "sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==",
"dev": true,
"license": "MIT",
"dependencies": {
"es-errors": "^1.3.0",
@ -4904,7 +4914,12 @@
"version": "3.1.3",
"resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz",
"integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==",
"dev": true,
"license": "MIT"
},
"node_modules/fast-defer": {
"version": "1.1.8",
"resolved": "https://registry.npmjs.org/fast-defer/-/fast-defer-1.1.8.tgz",
"integrity": "sha512-lEJeOH5VL5R09j6AA0D4Uvq7AgsHw0dAImQQ+F3iSyHZuAxyQfWobsagGpTcOPvJr3urmKRHrs+Gs9hV+/Qm/Q==",
"license": "MIT"
},
"node_modules/fast-json-stable-stringify": {
@ -4966,16 +4981,6 @@
"integrity": "sha512-OP2IUU6HeYKJi3i0z4A19kHMQoLVs4Hc+DPqqxI2h/DPZHTm/vjsfC6P0b4jCMy14XizLBqvndQ+UilD7707Jw==",
"license": "MIT"
},
"node_modules/fetch-socks": {
"version": "1.3.2",
"resolved": "https://registry.npmjs.org/fetch-socks/-/fetch-socks-1.3.2.tgz",
"integrity": "sha512-vkH5+Zgj2yEbU57Cei0iyLgTZ4OkEKJj56Xu3ViB5dpsl599JgEooQ3x6NVagIFRHWnWJ+7K0MO0aIV1TMgvnw==",
"license": "MIT",
"dependencies": {
"socks": "^2.8.2",
"undici": ">=6"
}
},
"node_modules/file-entry-cache": {
"version": "8.0.0",
"resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-8.0.0.tgz",
@ -5076,6 +5081,26 @@
"integrity": "sha512-GRnmB5gPyJpAhTQdSZTSp9uaPSvl09KoYcMQtsB9rQoOmzs9dH6ffeccH+Z+cv6P68Hu5bC6JjRh4Ah/mHSNRw==",
"license": "MIT"
},
"node_modules/follow-redirects": {
"version": "1.15.11",
"resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.11.tgz",
"integrity": "sha512-deG2P0JfjrTxl50XGCDyfI97ZGVCxIpfKYmfyrQ54n5FO/0gfIES8C/Psl6kWVDolizcaaxZJnTS0QSMxvnsBQ==",
"funding": [
{
"type": "individual",
"url": "https://github.com/sponsors/RubenVerborgh"
}
],
"license": "MIT",
"engines": {
"node": ">=4.0"
},
"peerDependenciesMeta": {
"debug": {
"optional": true
}
}
},
"node_modules/for-each": {
"version": "0.3.5",
"resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.5.tgz",
@ -5113,7 +5138,6 @@
"version": "4.0.5",
"resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.5.tgz",
"integrity": "sha512-8RipRLol37bNs2bhoV67fiTEvdTrbMUYcFTiy3+wuuOnUog2QBHCZWXDRijWQfAkhBj2Uf5UnVaiWwA5vdd82w==",
"dev": true,
"license": "MIT",
"dependencies": {
"asynckit": "^0.4.0",
@ -5130,7 +5154,6 @@
"version": "1.52.0",
"resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz",
"integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==",
"dev": true,
"license": "MIT",
"engines": {
"node": ">= 0.6"
@ -5140,7 +5163,6 @@
"version": "2.1.35",
"resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz",
"integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==",
"dev": true,
"license": "MIT",
"dependencies": {
"mime-db": "1.52.0"
@ -5658,7 +5680,6 @@
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz",
"integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==",
"dev": true,
"license": "MIT",
"dependencies": {
"has-symbols": "^1.0.3"
@ -5749,7 +5770,8 @@
"version": "4.2.0",
"resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.2.0.tgz",
"integrity": "sha512-dTxcvPXqPvXBQpq5dUr6mEMJX4oIEFv6bwom3FDwKRDsuIjjJGANqhBuoAn9c1RQJIdAKav33ED65E2ys+87QQ==",
"license": "BSD-2-Clause"
"license": "BSD-2-Clause",
"optional": true
},
"node_modules/http-errors": {
"version": "2.0.1",
@ -5772,32 +5794,29 @@
}
},
"node_modules/http-proxy-agent": {
"version": "4.0.1",
"resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz",
"integrity": "sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg==",
"version": "7.0.2",
"resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-7.0.2.tgz",
"integrity": "sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==",
"license": "MIT",
"optional": true,
"dependencies": {
"@tootallnate/once": "1",
"agent-base": "6",
"debug": "4"
"agent-base": "^7.1.0",
"debug": "^4.3.4"
},
"engines": {
"node": ">= 6"
"node": ">= 14"
}
},
"node_modules/https-proxy-agent": {
"version": "5.0.1",
"resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz",
"integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==",
"version": "7.0.6",
"resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.6.tgz",
"integrity": "sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw==",
"license": "MIT",
"optional": true,
"dependencies": {
"agent-base": "6",
"agent-base": "^7.1.2",
"debug": "4"
},
"engines": {
"node": ">= 6"
"node": ">= 14"
}
},
"node_modules/human-signals": {
@ -6091,6 +6110,29 @@
"url": "https://github.com/sponsors/ljharb"
}
},
"node_modules/is-buffer": {
"version": "2.0.5",
"resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.5.tgz",
"integrity": "sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ==",
"funding": [
{
"type": "github",
"url": "https://github.com/sponsors/feross"
},
{
"type": "patreon",
"url": "https://www.patreon.com/feross"
},
{
"type": "consulting",
"url": "https://feross.org/support"
}
],
"license": "MIT",
"engines": {
"node": ">=4"
}
},
"node_modules/is-callable": {
"version": "1.2.7",
"resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz",
@ -6319,6 +6361,18 @@
"url": "https://github.com/sponsors/ljharb"
}
},
"node_modules/is-retry-allowed": {
"version": "2.2.0",
"resolved": "https://registry.npmjs.org/is-retry-allowed/-/is-retry-allowed-2.2.0.tgz",
"integrity": "sha512-XVm7LOeLpTW4jV19QSH38vkswxoLud8sQ57YwJVTPWdiaI9I8keEhGFpBlslyVsgdQy4Opg8QOLb8YRgsyZiQg==",
"license": "MIT",
"engines": {
"node": ">=10"
},
"funding": {
"url": "https://github.com/sponsors/sindresorhus"
}
},
"node_modules/is-set": {
"version": "2.0.3",
"resolved": "https://registry.npmjs.org/is-set/-/is-set-2.0.3.tgz",
@ -7405,6 +7459,48 @@
"node": ">= 10"
}
},
"node_modules/make-fetch-happen/node_modules/agent-base": {
"version": "6.0.2",
"resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz",
"integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==",
"license": "MIT",
"optional": true,
"dependencies": {
"debug": "4"
},
"engines": {
"node": ">= 6.0.0"
}
},
"node_modules/make-fetch-happen/node_modules/http-proxy-agent": {
"version": "4.0.1",
"resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz",
"integrity": "sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg==",
"license": "MIT",
"optional": true,
"dependencies": {
"@tootallnate/once": "1",
"agent-base": "6",
"debug": "4"
},
"engines": {
"node": ">= 6"
}
},
"node_modules/make-fetch-happen/node_modules/https-proxy-agent": {
"version": "5.0.1",
"resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz",
"integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==",
"license": "MIT",
"optional": true,
"dependencies": {
"agent-base": "6",
"debug": "4"
},
"engines": {
"node": ">= 6"
}
},
"node_modules/make-fetch-happen/node_modules/lru-cache": {
"version": "6.0.0",
"resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
@ -7441,6 +7537,21 @@
"node": ">= 0.6"
}
},
"node_modules/make-fetch-happen/node_modules/socks-proxy-agent": {
"version": "6.2.1",
"resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-6.2.1.tgz",
"integrity": "sha512-a6KW9G+6B3nWZ1yB8G7pJwL3ggLy1uTzKAgCb7ttblwqdz9fMGJUuTy3uFzEP48FAs9FLILlmzDlE2JJhVQaXQ==",
"license": "MIT",
"optional": true,
"dependencies": {
"agent-base": "^6.0.2",
"debug": "^4.3.3",
"socks": "^2.6.2"
},
"engines": {
"node": ">= 10"
}
},
"node_modules/make-fetch-happen/node_modules/yallist": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
@ -8136,6 +8247,12 @@
"url": "https://github.com/fb55/nth-check?sponsor=1"
}
},
"node_modules/object-code": {
"version": "1.3.3",
"resolved": "https://registry.npmjs.org/object-code/-/object-code-1.3.3.tgz",
"integrity": "sha512-/Ds4Xd5xzrtUOJ+xJQ57iAy0BZsZltOHssnDgcZ8DOhgh41q1YJCnTPnWdWSLkNGNnxYzhYChjc5dgC9mEERCA==",
"license": "MIT"
},
"node_modules/object-inspect": {
"version": "1.13.4",
"resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.4.tgz",
@ -8711,6 +8828,12 @@
"node": ">= 0.10"
}
},
"node_modules/proxy-from-env": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz",
"integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==",
"license": "MIT"
},
"node_modules/pstree.remy": {
"version": "1.1.8",
"resolved": "https://registry.npmjs.org/pstree.remy/-/pstree.remy-1.1.8.tgz",
@ -9524,18 +9647,17 @@
}
},
"node_modules/socks-proxy-agent": {
"version": "6.2.1",
"resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-6.2.1.tgz",
"integrity": "sha512-a6KW9G+6B3nWZ1yB8G7pJwL3ggLy1uTzKAgCb7ttblwqdz9fMGJUuTy3uFzEP48FAs9FLILlmzDlE2JJhVQaXQ==",
"version": "8.0.5",
"resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-8.0.5.tgz",
"integrity": "sha512-HehCEsotFqbPW9sJ8WVYB6UbmIMv7kUUORIF2Nncq4VQvBfNBLibW9YZR5dlYCSUhwcD628pRllm7n+E+YTzJw==",
"license": "MIT",
"optional": true,
"dependencies": {
"agent-base": "^6.0.2",
"debug": "^4.3.3",
"socks": "^2.6.2"
"agent-base": "^7.1.2",
"debug": "^4.3.4",
"socks": "^2.8.3"
},
"engines": {
"node": ">= 10"
"node": ">= 14"
}
},
"node_modules/source-map": {

View file

@ -43,19 +43,23 @@
"dependencies": {
"@keyv/sqlite": "^4.0.5",
"async-mutex": "^0.5.0",
"axios": "^1.13.2",
"axios-cache-interceptor": "^1.8.3",
"axios-mock-adapter": "^2.1.0",
"axios-retry": "^4.5.0",
"bytes": "^3.1.2",
"cacheable": "^2.0.0",
"cheerio": "^1.0.0",
"express": "^5.1.0",
"fast-levenshtein": "^3.0.0",
"fetch-socks": "^1.3.2",
"http-cache-semantics": "^4.2.0",
"http-proxy-agent": "^7.0.2",
"https-proxy-agent": "^7.0.6",
"minimatch": "^10.0.3",
"randomstring": "^1.3.1",
"rot13-cipher": "^1.0.0",
"slugify": "^1.6.6",
"socks-proxy-agent": "^8.0.5",
"tough-cookie": "^6.0.0",
"undici": "^7.10.0",
"unpacker": "^1.0.1",
"winston": "^3.17.0"
},
@ -66,9 +70,7 @@
"@types/bytes": "^3.1.5",
"@types/express": "^5.0.1",
"@types/fast-levenshtein": "^0.0.4",
"@types/http-cache-semantics": "^4.0.4",
"@types/jest": "^30.0.0",
"@types/make-fetch-happen": "^10.0.4",
"@types/node": "^24.0.0",
"@types/randomstring": "^1.3.0",
"@types/stremio-addon-sdk": "^1.6.11",

View file

@ -1,11 +1,12 @@
import { AxiosResponse } from 'axios';
import { BlockedReason } from '../types';
export class BlockedError extends Error {
public readonly url: URL;
public readonly reason: BlockedReason;
public readonly headers: Record<string, string[] | string | undefined>;
public readonly headers: AxiosResponse['headers'];
public constructor(url: URL, reason: BlockedReason, headers: Record<string, string[] | string | undefined>) {
public constructor(url: URL, reason: BlockedReason, headers: AxiosResponse['headers']) {
super();
this.url = url;

View file

@ -1,10 +1,12 @@
import { AxiosResponse } from 'axios';
export class HttpError extends Error {
public readonly url: URL;
public readonly status: number;
public readonly statusText: string;
public readonly headers: Record<string, string[] | string | undefined>;
public readonly headers: AxiosResponse['headers'];
public constructor(url: URL, status: number, statusText: string, headers: Record<string, string[] | string | undefined>) {
public constructor(url: URL, status: number, statusText: string, headers: AxiosResponse['headers']) {
super();
this.url = url;

View file

@ -1,6 +1,6 @@
import { Context, CountryCode, Format, Meta, UrlResult } from '../types';
import {
CustomRequestInit,
CustomRequestConfig,
guessHeightFromPlaylist, hasMultiEnabled,
iso639FromCountryCode,
} from '../utils';
@ -53,7 +53,7 @@ export class VixSrc extends Extractor {
];
};
private async determineCountryCodesFromPlaylist(ctx: Context, playlistUrl: URL, init?: CustomRequestInit): Promise<CountryCode[]> {
private async determineCountryCodesFromPlaylist(ctx: Context, playlistUrl: URL, init?: CustomRequestConfig): Promise<CountryCode[]> {
const playlist = await this.fetcher.text(ctx, playlistUrl, init);
const countryCodes: CountryCode[] = [CountryCode.it];

View file

@ -1,4 +1,7 @@
import { randomUUID } from 'node:crypto';
import axios from 'axios';
import { setupCache } from 'axios-cache-interceptor';
import axiosRetry from 'axios-retry';
import express, { NextFunction, Request, Response } from 'express';
import winston from 'winston';
import { ConfigureController, ManifestController, StreamController } from './controller';
@ -33,7 +36,10 @@ process.on('unhandledRejection', (error: Error) => {
logger.error(`Unhandled rejection: ${error}, cause: ${error.cause}, stack: ${error.stack}`);
});
const fetcher = new Fetcher(logger);
const cachedAxios = setupCache(axios);
axiosRetry(cachedAxios, { retries: 3, retryDelay: () => 333 });
const fetcher = new Fetcher(cachedAxios, logger);
const sources = createSources(fetcher);
const extractors = createExtractors(fetcher);
@ -96,7 +102,7 @@ addon.get('/live', async (req: Request, res: Response) => {
const url = new URL(href);
try {
await fetcher.head(ctx, url, { noCache: true });
await fetcher.head(ctx, url);
results.set(url.host, 'ok');
} catch (error) {
if (error instanceof BlockedError) {

View file

@ -12,7 +12,7 @@ export class Frembed extends Source {
public readonly countryCodes: CountryCode[] = [CountryCode.fr];
public readonly baseUrl = 'https://frembed.mom';
public readonly baseUrl = 'https://frembed.my'; // TODO: determine this more dynamically, e.g. via https://audin213.com/
private readonly fetcher: Fetcher;
@ -29,7 +29,7 @@ export class Frembed extends Source {
? new URL(`/api/series?id=${tmdbId.id}&sa=${tmdbId.season}&epi=${tmdbId.episode}&idType=tmdb`, this.baseUrl)
: new URL(`/api/films?id=${tmdbId.id}&idType=tmdb`, this.baseUrl);
const json = await this.fetcher.json(ctx, apiUrl);
const json = await this.fetcher.json(ctx, apiUrl, { headers: { Referer: this.baseUrl } });
const urls: URL[] = [];
for (const key in json) {

View file

@ -14,7 +14,7 @@ export class MegaKino extends Source {
public readonly countryCodes: CountryCode[] = [CountryCode.de];
public readonly baseUrl = 'https://megakino.ms';
public readonly baseUrl = 'https://w1.megakino.do'; // TODO: determine this more dynamically since cookie fetching does not work otherwise
private readonly fetcher: Fetcher;
@ -29,10 +29,9 @@ export class MegaKino extends Source {
const tokenResponse = await this.fetcher.fetch(ctx, new URL('/?yg=token', this.baseUrl), { method: 'HEAD' });
const cookie = Cookie.parse(tokenResponse.headers['set-cookie'] as string) as Cookie;
const baseUrl = new URL('/', tokenResponse.url);
const cookie = Cookie.parse((tokenResponse.headers['set-cookie'] as string[])[0] as string) as Cookie;
const pageUrl = await this.fetchPageUrl(ctx, baseUrl, imdbId, cookie);
const pageUrl = await this.fetchPageUrl(ctx, imdbId, cookie);
if (!pageUrl) {
return [];
}
@ -51,12 +50,14 @@ export class MegaKino extends Source {
);
};
private fetchPageUrl = async (ctx: Context, postUrl: URL, imdbId: ImdbId, cookie: Cookie): Promise<URL | undefined> => {
private fetchPageUrl = async (ctx: Context, imdbId: ImdbId, cookie: Cookie): Promise<URL | undefined> => {
const form = new URLSearchParams();
form.append('do', 'search');
form.append('subaction', 'search');
form.append('story', `${imdbId.id}`);
const postUrl = new URL(this.baseUrl);
const html = await this.fetcher.textPost(
ctx,
postUrl,

View file

@ -1 +0,0 @@
{"tmdb":"3176","title":"Battle Royale","link1":"https://dsvplay.com/e/gtenfs0rffzq","link2":"https://netu.fremtv.lol/e/p0QUHavRbQD0","link3":"https://jilliandescribecompany.com/e/lbeqm6ofmauq","link4":"https://video.streamtales.cc/player/frvod.php?url=https://streamtales.cc:8443/videos/3176.mp4","link5":null,"link6":"","link7":"https://uqload.cx/embed-pnxmokgrigu9.html","link1vostfr":null,"link2vostfr":null,"link3vostfr":null,"link4vostfr":null,"link5vostfr":null,"link6vostfr":null,"link7vostfr":null,"link1vo":null,"link2vo":null,"link3vo":null,"link4vo":null,"link5vo":null,"link6vo":null,"link7vo":null,"imdb":"tt0266308","year":"2000","version":"TrueFrench","quality":"HD","qualityVostfr":null,"qualityVo":null,"poster":"/8PzexNbQ9eAKxe0p2U4XP3DVJCp.jpg","backdrop":"/pmRtI4QvcBvXjw9mLOEAsV9Bq7i.jpg,/amBvmIshdsSkOtvVIgxl7YSQ9Dg.jpg,/n4rNQUV9S9DMgCkQVt7R7VLYxNr.jpg,/55qVIFhykb6M6CGWRKQd9BsLI5D.jpg,/e9vJTJHkCOyBitE67n8zlp5Qm8q.jpg,/tSbZky1KLzqOSGPzYtqnxTQzNFy.jpg,/cQR3VHRMUL8xGkWK5Up8rI7DHQD.jpg,/4oIoe9tcSRzGSImp9Jqp1SKFwes.jpg,/zajlFkhKugj9tqH57KHXpmTXIku.jpg,/hpP0ELkViFlU8PVWbEBvVx12YtJ.jpg","checked":null,"dead_link":0,"views":"1","date_creation":"2023-08-17T04:06:45.000Z","update_date":"2024-09-19T01:28:34.000Z","original_title":"バトル・ロワイアル","title_vf":"Battle Royale","tatavid":null,"dcsutom":96950}

View file

@ -0,0 +1 @@
{"tmdb":"3176","title":"Battle Royale","link1":"https://dsvplay.com/e/gtenfs0rffzq","link2":"https://netu.fremtv.lol/e/p0QUHavRbQD0","link3":"https://christopheruntilpoint.com/e/lbeqm6ofmauq","link4":"https://video.streamtales.cc/player/frvod.php?url=https://streamtales.cc:8443/videos/3176.mp4","link5":null,"link6":"","link7":"https://uqload.cx/embed-pnxmokgrigu9.html","link1vostfr":null,"link2vostfr":null,"link3vostfr":null,"link4vostfr":null,"link5vostfr":null,"link6vostfr":null,"link7vostfr":null,"link1vo":null,"link2vo":null,"link3vo":null,"link4vo":null,"link5vo":null,"link6vo":null,"link7vo":null,"imdb":"tt0266308","year":"2000","version":"TrueFrench","quality":"HD","qualityVostfr":null,"qualityVo":null,"poster":"/8PzexNbQ9eAKxe0p2U4XP3DVJCp.jpg","backdrop":"/pmRtI4QvcBvXjw9mLOEAsV9Bq7i.jpg,/amBvmIshdsSkOtvVIgxl7YSQ9Dg.jpg,/n4rNQUV9S9DMgCkQVt7R7VLYxNr.jpg,/55qVIFhykb6M6CGWRKQd9BsLI5D.jpg,/e9vJTJHkCOyBitE67n8zlp5Qm8q.jpg,/tSbZky1KLzqOSGPzYtqnxTQzNFy.jpg,/cQR3VHRMUL8xGkWK5Up8rI7DHQD.jpg,/4oIoe9tcSRzGSImp9Jqp1SKFwes.jpg,/zajlFkhKugj9tqH57KHXpmTXIku.jpg,/hpP0ELkViFlU8PVWbEBvVx12YtJ.jpg","checked":null,"dead_link":0,"views":"23","date_creation":"2023-08-17T04:06:45.000Z","update_date":"2024-09-19T01:28:34.000Z","original_title":"バトル・ロワイアル","title_vf":"Battle Royale","tatavid":null,"dcsutom":96950}

View file

@ -1 +1 @@
{"id":44334,"tmdb":"42009","title":"Black Mirror","sa":4,"epi":2,"link":"https://ahvsh.com/e/83izf7qzwpae,https://netu.frembed.fun/e/0DFgfkcXOsDP,https://likessb.com/e/7yjgl1x56n08.html,https://ds2play.com/e/fzfvfq3ngig0","imdb":"tt2085059","year":null,"version":"VF","link_vostfr":"","link1":"https://dsvplay.com/e/dfx8me4un4ul\t","link2":"https://netu.fremtv.lol/e/0DFgfkcXOsDP","link3":"https://jilliandescribecompany.com/e/cqy9oue7sv0g\t","link4":"https://ds2play.com/e/fzfvfq3ngig0","link5":null,"link6":null,"link7":null,"link1vostfr":"","link2vostfr":null,"link3vostfr":null,"link4vostfr":null,"link5vostfr":null,"link6vostfr":null,"link7vostfr":null,"link1vo":null,"link2vo":null,"link3vo":null,"link4vo":null,"link5vo":null,"link6vo":null,"link7vo":null,"date_creation":"2023-08-17T04:06:31.000Z","update_date":"2025-06-13T23:04:32.000Z","views":1,"backdropImage":"/dg3OindVAGZBjlT3xYKqIAdukPL.jpg","posterImage":"/seN6rRfN0I6n8iDXjlSMk1QjNcq.jpg","prevEpisode":{"sa":4,"epi":1,"url":"/series?id=42009&sa=4&epi=1"},"nextEpisode":{"sa":4,"epi":3,"url":"/series?id=42009&sa=4&epi=3"}}
{"id":44334,"tmdb":"42009","title":"Black Mirror","sa":4,"epi":2,"link":"https://ahvsh.com/e/83izf7qzwpae,https://netu.frembed.fun/e/0DFgfkcXOsDP,https://likessb.com/e/7yjgl1x56n08.html,https://ds2play.com/e/fzfvfq3ngig0","imdb":"tt2085059","year":null,"version":"VF","link_vostfr":"","link1":"https://dsvplay.com/e/dfx8me4un4ul\t","link2":"https://netu.fremtv.lol/e/0DFgfkcXOsDP","link3":"https://christopheruntilpoint.com/e/cqy9oue7sv0g\t","link4":"https://ds2play.com/e/fzfvfq3ngig0","link5":null,"link6":null,"link7":null,"link1vostfr":"","link2vostfr":null,"link3vostfr":null,"link4vostfr":null,"link5vostfr":null,"link6vostfr":null,"link7vostfr":null,"link1vo":null,"link2vo":null,"link3vo":null,"link4vo":null,"link5vo":null,"link6vo":null,"link7vo":null,"date_creation":"2023-08-17T04:06:31.000Z","update_date":"2025-06-13T23:04:32.000Z","views":11,"backdropImage":"/dg3OindVAGZBjlT3xYKqIAdukPL.jpg","posterImage":"/seN6rRfN0I6n8iDXjlSMk1QjNcq.jpg","prevEpisode":{"sa":4,"epi":1,"url":"/series?id=42009&sa=4&epi=1"},"nextEpisode":{"sa":4,"epi":3,"url":"/series?id=42009&sa=4&epi=3"}}

View file

@ -1 +0,0 @@
{"alt-svc":"h3=\":443\"; ma=86400","cache-control":"no-store","cf-cache-status":"DYNAMIC","cf-ray":"99622f759bbabb4f-FRA","connection":"close","content-type":"text/html; charset=UTF-8","date":"Wed, 29 Oct 2025 11:03:16 GMT","nel":"{\"report_to\":\"cf-nel\",\"success_fraction\":0.0,\"max_age\":604800}","referrer-policy":"strict-origin-when-cross-origin","report-to":"{\"group\":\"cf-nel\",\"max_age\":604800,\"endpoints\":[{\"url\":\"https://a.nel.cloudflare.com/report/v4?s=65VjziHY1YIiW%2Fm4xdBGMfv%2FUVk9o3PgQshu1oR7itMDQ%2BZcb%2B6WXUMGsSOHKa1TwxdZBO2invaHs%2BayMi9WIT7cBoaZWrjpVmFqQHGQER8xlNTequSX\"}]}","server":"cloudflare","set-cookie":"yg_token=1761735796.c8a4765badd13fc70a9463002351f010b6eb19bc6b5b5a461f3ab22cc71edbaa; HttpOnly; SameSite=Lax; Secure; Path=/; Max-Age=900; Expires=Wed, 29 Oct 2025 11:18:16 GMT","x-frame-options":"SAMEORIGIN"}

View file

@ -0,0 +1 @@
{"date":"Fri, 28 Nov 2025 15:33:34 GMT","content-type":"text/html; charset=UTF-8","connection":"keep-alive","server":"cloudflare","cache-control":"no-store","x-frame-options":"SAMEORIGIN","referrer-policy":"strict-origin-when-cross-origin","cf-cache-status":"DYNAMIC","report-to":"{\"group\":\"cf-nel\",\"max_age\":604800,\"endpoints\":[{\"url\":\"https://a.nel.cloudflare.com/report/v4?s=Z3P3ma53jLoNL1nS2OgSVFL0Z86LI%2BVAIeczI8wymdDnpIsLm0EK3H2ieynG40Vge0HndkPIwVpumDWuiAlnbSteNvDJBiihA0%2BWqdhL\"}]}","nel":"{\"report_to\":\"cf-nel\",\"success_fraction\":0.0,\"max_age\":604800}","set-cookie":["yg_token=1764344014.6e2ad653a40ebd15f2825a18bf0674211e297fa8a0226950228753c9f95b1244; HttpOnly; SameSite=Lax; Secure; Path=/; Max-Age=900; Expires=Fri, 28 Nov 2025 15:48:34 GMT"],"cf-ray":"9a5aeca9496c9f29-FRA","alt-svc":"h3=\":443\"; ma=86400"}

View file

@ -9,12 +9,12 @@
<meta property="og:site_name" content="MEGAKino - Filme und Serien Kostenlos in HD online anschauen auf Deutsch">
<meta property="og:type" content="article">
<meta property="og:title" content="The LEGO Movie 2">
<meta property="og:url" content="https://megakino.ms/adventure/4804-the-lego-movie-2.html">
<meta property="og:image" content="https://megakino.ms/uploads/posts/2024-10/4977526_jpg-c_310_420_x-f_jpg-q_x-xxyxx.webp">
<meta property="og:url" content="https://w1.megakino.do/adventure/4804-the-lego-movie-2.html">
<meta property="og:image" content="https://w1.megakino.do/uploads/posts/2024-10/4977526_jpg-c_310_420_x-f_jpg-q_x-xxyxx.webp">
<meta property="og:description" content="Fünf Jahre, nachdem die Pläne des skrupellosen Lord Business (Stimme im Original: Will Ferrell) vereitelt werden konnten, haben die DUPLO-Invasoren aus dem Weltall die heile LEGO-Welt zerstört. Mittlerweile ist Steinstadt nur noch eine postapokalyptische Brache, die heute Apokalypstadt heißt. Emmet">
<link rel="search" type="application/opensearchdescription+xml" href="https://megakino.ms/index.php?do=opensearch" title="MEGAKino - Filme und Serien Kostenlos in HD online anschauen auf Deutsch">
<link rel="canonical" href="https://megakino.ms/adventure/4804-the-lego-movie-2.html">
<link rel="alternate" type="application/rss+xml" title="MEGAKino - Filme und Serien Kostenlos in HD online anschauen auf Deutsch" href="https://megakino.ms/rss.xml">
<link rel="search" type="application/opensearchdescription+xml" href="https://w1.megakino.do/index.php?do=opensearch" title="MEGAKino - Filme und Serien Kostenlos in HD online anschauen auf Deutsch">
<link rel="canonical" href="https://w1.megakino.do/adventure/4804-the-lego-movie-2.html">
<link rel="alternate" type="application/rss+xml" title="MEGAKino - Filme und Serien Kostenlos in HD online anschauen auf Deutsch" href="https://w1.megakino.do/rss.xml">
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<meta name="theme-color" content="#303d4a">
<link rel="preload" href="/templates/popcornie-dark/css/common.css" as="style">
@ -38,18 +38,16 @@
<!-- Google tag (gtag.js) -->
<script async src="https://www.googletagmanager.com/gtag/js?id=G-H793N1N6RQ"></script>
<script async src="https://www.googletagmanager.com/gtag/js?id=G-P5NCB4S88V"></script>
<script>
window.dataLayer = window.dataLayer || [];
function gtag(){dataLayer.push(arguments);}
gtag('js', new Date());
gtag('config', 'G-H793N1N6RQ');
gtag('config', 'G-P5NCB4S88V');
</script>
</head>
<body id="pmovie">
@ -91,7 +89,7 @@
<div class="side-block js-this-in-mobile-menu">
<div class="side-block__title">Was interessiert Sie?</div>
<ul class="side-block__content side-block__menu" data-showitems="10" itemscope itemtype="http://schema.org/SiteNavigationElement">
<li><a href="https://megakino.ms/films/" itemprop="url"><font itemprop="name">Filme</font></a><span style="float: right">4832</span></li><li><a href="https://megakino.ms/kinofilme/" itemprop="url"><font itemprop="name">Kinofilme</font></a><span style="float: right">193</span></li><li><a href="https://megakino.ms/serials/" itemprop="url"><font itemprop="name">Serien</font></a><span style="float: right">827</span></li><li><a href="https://megakino.ms/multfilm/" itemprop="url"><font itemprop="name">Animation</font></a><span style="float: right">296</span></li><li><a href="https://megakino.ms/documentary/" itemprop="url"><font itemprop="name">Dokumentationen</font></a><span style="float: right">73</span></li>
<li><a href="https://w1.megakino.do/films/" itemprop="url"><font itemprop="name">Filme</font></a><span style="float: right">4892</span></li><li><a href="https://w1.megakino.do/kinofilme/" itemprop="url"><font itemprop="name">Kinofilme</font></a><span style="float: right">196</span></li><li><a href="https://w1.megakino.do/serials/" itemprop="url"><font itemprop="name">Serien</font></a><span style="float: right">842</span></li><li><a href="https://w1.megakino.do/multfilm/" itemprop="url"><font itemprop="name">Animation</font></a><span style="float: right">300</span></li><li><a href="https://w1.megakino.do/documentary/" itemprop="url"><font itemprop="name">Dokumentationen</font></a><span style="float: right">75</span></li>
</ul>
</div>
@ -100,27 +98,27 @@
<div class="side-block">
<div class="side-block__title">Sammlung</div>
<div class="side-block__content collection-scroll">
<a href="https://megakino.ms/collection/2092-die-besten-weihnachtsfilme.html" class="custom-collection">
<a href="https://w1.megakino.do/collection/2092-die-besten-weihnachtsfilme.html" class="custom-collection">
<div class="custom-collection-image"><img class="xfieldimage collection_cover" data-src="/uploads/posts/2022-12/merry.webp" alt=""></div>
<div class="custom-collection-title">Die besten Weihnachtsfilme</div>
</a>
<a href="https://megakino.ms/collection/412-batman-filme-die-komplette-chronologie.html" class="custom-collection">
<a href="https://w1.megakino.do/collection/412-batman-filme-die-komplette-chronologie.html" class="custom-collection">
<div class="custom-collection-image"><img class="xfieldimage collection_cover" data-src="/uploads/posts/2022-02/batman.webp" alt=""></div>
<div class="custom-collection-title">Batman Filme - Die Komplette Chronologie</div>
</a>
<a href="https://megakino.ms/collection/127-marvel-filme-chronologischer.html" class="custom-collection">
<a href="https://w1.megakino.do/collection/127-marvel-filme-chronologischer.html" class="custom-collection">
<div class="custom-collection-image"><img class="xfieldimage collection_cover" data-src="/uploads/posts/2022-01/mcu.webp" alt=""></div>
<div class="custom-collection-title">Marvel Filme - Die Komplette Chronologie</div>
</a>
<a href="https://megakino.ms/collection/181-harry-potter-die-komplette-chronologie.html" class="custom-collection">
<a href="https://w1.megakino.do/collection/181-harry-potter-die-komplette-chronologie.html" class="custom-collection">
<div class="custom-collection-image"><img class="xfieldimage collection_cover" data-src="/uploads/posts/2022-01/harry.webp" alt=""></div>
<div class="custom-collection-title">Harry Potter - Die Komplette Chronologie</div>
</a>
<a href="https://megakino.ms/collection/136-star-wars-die-komplette-chronologie.html" class="custom-collection">
<a href="https://w1.megakino.do/collection/136-star-wars-die-komplette-chronologie.html" class="custom-collection">
<div class="custom-collection-image"><img class="xfieldimage collection_cover" data-src="/uploads/posts/2022-01/starwars.webp" alt=""></div>
<div class="custom-collection-title">Star Wars Die Komplette Chronologie</div>
</a>
<a href="https://megakino.ms/collection/135-fast-and-furious-chronologischer.html" class="custom-collection">
<a href="https://w1.megakino.do/collection/135-fast-and-furious-chronologischer.html" class="custom-collection">
<div class="custom-collection-image"><img class="xfieldimage collection_cover" data-src="/uploads/posts/2022-01/forsag.webp" alt=""></div>
<div class="custom-collection-title">Fast and Furious - Die Komplette Chronologie</div>
</a>
@ -132,7 +130,7 @@
<div class="side-block js-this-in-mobile-menu">
<div class="side-block__title">Genres</div>
<ul class="side-block__content side-block__menu" data-showitems="10">
<li><a href="https://megakino.ms/multfilm/">Animation</a><span style="float: right">296</span></li><li><a href="https://megakino.ms/action/">Action</a><span style="float: right">1569</span></li><li><a href="https://megakino.ms/adventure/">Adventure</a><span style="float: right">894</span></li><li><a href="https://megakino.ms/comedy/">Comedy</a><span style="float: right">1636</span></li><li><a href="https://megakino.ms/crime/">Crime</a><span style="float: right">743</span></li><li><a href="https://megakino.ms/documentary/">Dokumentationen</a><span style="float: right">73</span></li><li><a href="https://megakino.ms/drama/">Drama</a><span style="float: right">2258</span></li><li><a href="https://megakino.ms/family/">Family</a><span style="float: right">477</span></li><li><a href="https://megakino.ms/fantasy/">Fantasy</a><span style="float: right">636</span></li><li><a href="https://megakino.ms/history/">History</a><span style="float: right">229</span></li><li><a href="https://megakino.ms/horror/">Horror</a><span style="float: right">825</span></li><li><a href="https://megakino.ms/music/">Music</a><span style="float: right">107</span></li><li><a href="https://megakino.ms/mystery/">Mystery</a><span style="float: right">383</span></li><li><a href="https://megakino.ms/romance/">Romance</a><span style="float: right">518</span></li><li><a href="https://megakino.ms/science-fiction/">Sci-Fi</a><span style="float: right">719</span></li><li><a href="https://megakino.ms/tv-movie/">TV Movie</a><span style="float: right">55</span></li><li><a href="https://megakino.ms/thriller/">Thriller</a><span style="float: right">1569</span></li><li><a href="https://megakino.ms/war/">War</a><span style="float: right">142</span></li><li><a href="https://megakino.ms/western/">Western</a><span style="float: right">83</span></li>
<li><a href="https://w1.megakino.do/multfilm/">Animation</a><span style="float: right">300</span></li><li><a href="https://w1.megakino.do/action/">Action</a><span style="float: right">1591</span></li><li><a href="https://w1.megakino.do/adventure/">Adventure</a><span style="float: right">903</span></li><li><a href="https://w1.megakino.do/comedy/">Comedy</a><span style="float: right">1651</span></li><li><a href="https://w1.megakino.do/crime/">Crime</a><span style="float: right">746</span></li><li><a href="https://w1.megakino.do/documentary/">Dokumentationen</a><span style="float: right">75</span></li><li><a href="https://w1.megakino.do/drama/">Drama</a><span style="float: right">2284</span></li><li><a href="https://w1.megakino.do/family/">Family</a><span style="float: right">480</span></li><li><a href="https://w1.megakino.do/fantasy/">Fantasy</a><span style="float: right">642</span></li><li><a href="https://w1.megakino.do/history/">History</a><span style="float: right">232</span></li><li><a href="https://w1.megakino.do/horror/">Horror</a><span style="float: right">839</span></li><li><a href="https://w1.megakino.do/music/">Music</a><span style="float: right">108</span></li><li><a href="https://w1.megakino.do/mystery/">Mystery</a><span style="float: right">388</span></li><li><a href="https://w1.megakino.do/romance/">Romance</a><span style="float: right">523</span></li><li><a href="https://w1.megakino.do/science-fiction/">Sci-Fi</a><span style="float: right">728</span></li><li><a href="https://w1.megakino.do/tv-movie/">TV Movie</a><span style="float: right">55</span></li><li><a href="https://w1.megakino.do/thriller/">Thriller</a><span style="float: right">1596</span></li><li><a href="https://w1.megakino.do/war/">War</a><span style="float: right">144</span></li><li><a href="https://w1.megakino.do/western/">Western</a><span style="float: right">85</span></li>
</ul>
@ -150,25 +148,25 @@
<div class="side-block__content">
<div class="lcomm">
<div class="lcomm__meta d-flex ai-center">
<div class="lcomm__author flex-grow-1 ws-nowrap">Eren</div>
<div class="lcomm__date">20.10.25</div>
<div class="lcomm__author flex-grow-1 ws-nowrap">Madmax91</div>
<div class="lcomm__date">02.11.25</div>
</div>
<div class="lcomm__text">Ich finde es auch Mega cool auch die Grafick seh schön</div>
<a class="lcomm__link ws-nowrap icon-at-left" href="https://megakino.ms/films/5713-demon-slayer-kimetsu-no-yaiba-infinity-castle-teil-1.html#comment"><span class="fal fa-arrow-circle-right"></span>Demon Slayer: Kimetsu no Yaiba Infinity Castle - Teil 1</a>
<div class="lcomm__text">Das Ende ist offen und mehr fragen als Antworten ! Wer war es denn jetzt</div>
<a class="lcomm__link ws-nowrap icon-at-left" href="https://w1.megakino.do/drama/5075-this-is-not-hollywood-staffel-1.html#comment"><span class="fal fa-arrow-circle-right"></span>This Is Not Hollywood - Staffel 1</a>
</div><div class="lcomm">
<div class="lcomm__meta d-flex ai-center">
<div class="lcomm__author flex-grow-1 ws-nowrap">Sung</div>
<div class="lcomm__date">19.10.25</div>
<div class="lcomm__author flex-grow-1 ws-nowrap">Christian</div>
<div class="lcomm__date">02.11.25</div>
</div>
<div class="lcomm__text">Geistes krank war der film richtig gut bin hyped auf part 2</div>
<a class="lcomm__link ws-nowrap icon-at-left" href="https://megakino.ms/films/5713-demon-slayer-kimetsu-no-yaiba-infinity-castle-teil-1.html#comment"><span class="fal fa-arrow-circle-right"></span>Demon Slayer: Kimetsu no Yaiba Infinity Castle - Teil 1</a>
<div class="lcomm__text">Hatte mir etwas mehr versprochen aber sonst war der Film in Ordnung</div>
<a class="lcomm__link ws-nowrap icon-at-left" href="https://w1.megakino.do/films/5817-dracula-die-auferstehung.html#comment"><span class="fal fa-arrow-circle-right"></span>Dracula - Die Auferstehung</a>
</div><div class="lcomm">
<div class="lcomm__meta d-flex ai-center">
<div class="lcomm__author flex-grow-1 ws-nowrap">Zebne</div>
<div class="lcomm__date">19.10.25</div>
<div class="lcomm__author flex-grow-1 ws-nowrap">emily</div>
<div class="lcomm__date">02.11.25</div>
</div>
<div class="lcomm__text">Einfach nur ein geiler film selbst im jahr 2025</div>
<a class="lcomm__link ws-nowrap icon-at-left" href="https://megakino.ms/horror/30-scream.html#comment"><span class="fal fa-arrow-circle-right"></span>Scream 5</a>
<div class="lcomm__text">toller und lustiger film auch die pinguine sind süß!!!</div>
<a class="lcomm__link ws-nowrap icon-at-left" href="https://w1.megakino.do/films/828-mr-poppers-pinguine.html#comment"><span class="fal fa-arrow-circle-right"></span>Mr. Poppers Pinguine</a>
</div>
</div>
</div>
@ -182,14 +180,14 @@
<div class="speedbar ws-nowrap">
<span itemscope itemtype="https://schema.org/BreadcrumbList"><span itemprop="itemListElement" itemscope itemtype="https://schema.org/ListItem"><meta itemprop="position" content="1"><a href="https://megakino.ms/" itemprop="item"><span itemprop="name">MEGAKino</span></a></span> <span itemprop="itemListElement" itemscope itemtype="https://schema.org/ListItem"><meta itemprop="position" content="2"><a href="https://megakino.ms/adventure/" itemprop="item"><span itemprop="name">Adventure</span></a></span> The LEGO Movie 2</span>
<span itemscope itemtype="https://schema.org/BreadcrumbList"><span itemprop="itemListElement" itemscope itemtype="https://schema.org/ListItem"><meta itemprop="position" content="1"><a href="https://w1.megakino.do/" itemprop="item"><span itemprop="name">MEGAKino</span></a></span> <span itemprop="itemListElement" itemscope itemtype="https://schema.org/ListItem"><meta itemprop="position" content="2"><a href="https://w1.megakino.do/adventure/" itemprop="item"><span itemprop="name">Adventure</span></a></span> The LEGO Movie 2</span>
</div>
<div id="dle-content"><article class="page ignore-select pmovie" itemscope itemtype="http://schema.org/Movie">
<meta itemprop="inLanguage" content="de">
<meta itemprop="countryOfOrigin" content="Canada, Denmark, United States of America">
<meta itemprop="image" content="https://megakino.ms/uploads/posts/2024-10/4977526_jpg-c_310_420_x-f_jpg-q_x-xxyxx.webp">
<meta itemprop="image" content="https://w1.megakino.do/uploads/posts/2024-10/4977526_jpg-c_310_420_x-f_jpg-q_x-xxyxx.webp">
<meta itemprop="name" content="The LEGO Movie 2">
<meta itemprop="dateCreated" content="2024-10-19T22:24:53+03:00" />
@ -207,13 +205,13 @@
<header class="page__subcol-main flex-grow-1 d-flex fd-column">
<h1 itemprop="name">The LEGO Movie 2</h1>
<div class="pmovie__original-title" itemprop="alternativeHeadline"> The Lego Movie 2: The Second Part</div>
<div class="pmovie__year"><span itemprop="countryOfOrigin">Canada, Denmark, United States of America</span>, <span itemprop="dateCreated"><a href="https://megakino.ms/xfsearch/release_date/2019/">2019</a></span>, 107 min</div>
<div class="pmovie__year"><span itemprop="countryOfOrigin">Canada, Denmark, United States of America</span>, <span itemprop="dateCreated"><a href="https://w1.megakino.do/xfsearch/release_date/2019/">2019</a></span>, 107 min</div>
<div class="pmovie__genres" itemprop="genre">Adventure / Animation / Filme</div>
<div class="pmovie__age order-first"><div>16+</div></div>
<div class="pmovie__complaint flex-grow-1"><a href="javascript:AddComplaint('4804', 'news')">Fehler gefunden?</a></div>
<div class="pmovie__subinfo d-flex ai-center">
<div class="pmovie__subrating pmovie__subrating--kp"><img data-src="/templates/popcornie-dark/images/kp.svg" src="/templates/popcornie-dark/images/no-img.png" alt="">6.681</div>
<div class="pmovie__subrating pmovie__subrating--site"><img data-src="/templates/popcornie-dark/images/logo.svg" src="/templates/popcornie-dark/images/no-img.png" alt=""><div class="js-count-rating"><span id="ratig-layer-4804"><span class="ratingtypeplusminus ratingplus" >+34</span></span><span id="vote-num-id-4804">46</span></div></div>
<div class="pmovie__subrating pmovie__subrating--site"><img data-src="/templates/popcornie-dark/images/logo.svg" src="/templates/popcornie-dark/images/no-img.png" alt=""><div class="js-count-rating"><span id="ratig-layer-4804"><span class="ratingtypeplusminus ratingplus" >+36</span></span><span id="vote-num-id-4804">50</span></div></div>
<div class="pmovie__btn btn icon-at-left flex-grow-1 js-scroll-to">Stream Anschauen</div>
</div>
</header>
@ -223,11 +221,11 @@
<ul class="page__subcol-side2 pmovie__header-list">
<li>
<div>Director:</div>
<span itemprop="directors"><a href="https://megakino.ms/xfsearch/directors/Mike%20Mitchell/">Mike Mitchell</a></span>
<span itemprop="directors"><a href="https://w1.megakino.do/xfsearch/directors/Mike%20Mitchell/">Mike Mitchell</a></span>
</li>
<li>
<div>Stars:</div>
<span itemprop="actors"><a href="https://megakino.ms/xfsearch/cast/Chris%20Pratt/">Chris Pratt</a>, <a href="https://megakino.ms/xfsearch/cast/Elizabeth%20Banks/">Elizabeth Banks</a>, <a href="https://megakino.ms/xfsearch/cast/Will%20Arnett/">Will Arnett</a>, <a href="https://megakino.ms/xfsearch/cast/Tiffany%20Haddish/">Tiffany Haddish</a>, <a href="https://megakino.ms/xfsearch/cast/Stephanie%20Beatriz/">Stephanie Beatriz</a>, <a href="https://megakino.ms/xfsearch/cast/Alison%20Brie/">Alison Brie</a>, <a href="https://megakino.ms/xfsearch/cast/Nick%20Offerman/">Nick Offerman</a>, <a href="https://megakino.ms/xfsearch/cast/Charlie%20Day/">Charlie Day</a>, <a href="https://megakino.ms/xfsearch/cast/Maya%20Rudolph/">Maya Rudolph</a>, <a href="https://megakino.ms/xfsearch/cast/Will%20Ferrell/">Will Ferrell</a>, <a href="https://megakino.ms/xfsearch/cast/Jadon%20Sand/">Jadon Sand</a>, <a href="https://megakino.ms/xfsearch/cast/Brooklynn%20Prince/">Brooklynn Prince</a>, <a href="https://megakino.ms/xfsearch/cast/Channing%20Tatum/">Channing Tatum</a>, <a href="https://megakino.ms/xfsearch/cast/Jonah%20Hill/">Jonah Hill</a>, <a href="https://megakino.ms/xfsearch/cast/Richard%20Ayoade/">Richard Ayoade</a>, <a href="https://megakino.ms/xfsearch/cast/Ben%20Schwartz/">Ben Schwartz</a>, <a href="https://megakino.ms/xfsearch/cast/Noel%20Fielding/">Noel Fielding</a>, <a href="https://megakino.ms/xfsearch/cast/Jason%20Momoa/">Jason Momoa</a>, <a href="https://megakino.ms/xfsearch/cast/Cobie%20Smulders/">Cobie Smulders</a>, <a href="https://megakino.ms/xfsearch/cast/Ike%20Barinholtz/">Ike Barinholtz</a>, <a href="https://megakino.ms/xfsearch/cast/Ralph%20Fiennes/">Ralph Fiennes</a>, <a href="https://megakino.ms/xfsearch/cast/Will%20Forte/">Will Forte</a>, <a href="https://megakino.ms/xfsearch/cast/Jimmy%20O.%20Yang/">Jimmy O. Yang</a>, <a href="https://megakino.ms/xfsearch/cast/Jorma%20Taccone/">Jorma Taccone</a>, <a href="https://megakino.ms/xfsearch/cast/Bruce%20Willis/">Bruce Willis</a>, <a href="https://megakino.ms/xfsearch/cast/Gary%20Payton/">Gary Payton</a>, <a href="https://megakino.ms/xfsearch/cast/Sheryl%20Swoopes/">Sheryl Swoopes</a>, <a href="https://megakino.ms/xfsearch/cast/Todd%20Hansen/">Todd Hansen</a>, <a href="https://megakino.ms/xfsearch/cast/Doug%20Nicholas/">Doug Nicholas</a>, <a href="https://megakino.ms/xfsearch/cast/Liam%20Knight/">Liam Knight</a>, <a href="https://megakino.ms/xfsearch/cast/Emmett%20Mitchell/">Emmett Mitchell</a>, <a href="https://megakino.ms/xfsearch/cast/Sawyer%20D.%20Jones/">Sawyer D. Jones</a>, <a href="https://megakino.ms/xfsearch/cast/Graham%20Miller/">Graham Miller</a>, <a href="https://megakino.ms/xfsearch/cast/Cora%20Miller/">Cora Miller</a>, <a href="https://megakino.ms/xfsearch/cast/Ollie%20Mitchell/">Ollie Mitchell</a>, <a href="https://megakino.ms/xfsearch/cast/Mike%20Mitchell/">Mike Mitchell</a>, <a href="https://megakino.ms/xfsearch/cast/Christopher%20Miller/">Christopher Miller</a>, <a href="https://megakino.ms/xfsearch/cast/Margot%20Rubin/">Margot Rubin</a>, <a href="https://megakino.ms/xfsearch/cast/Emily%20Nordwind/">Emily Nordwind</a>, <a href="https://megakino.ms/xfsearch/cast/Chris%20McKay/">Chris McKay</a>, <a href="https://megakino.ms/xfsearch/cast/Trisha%20Gum/">Trisha Gum</a>, <a href="https://megakino.ms/xfsearch/cast/Ryan%20Halprin/">Ryan Halprin</a>, <a href="https://megakino.ms/xfsearch/cast/Lauren%20White/">Lauren White</a></span>
<span itemprop="actors"><a href="https://w1.megakino.do/xfsearch/cast/Chris%20Pratt/">Chris Pratt</a>, <a href="https://w1.megakino.do/xfsearch/cast/Elizabeth%20Banks/">Elizabeth Banks</a>, <a href="https://w1.megakino.do/xfsearch/cast/Will%20Arnett/">Will Arnett</a>, <a href="https://w1.megakino.do/xfsearch/cast/Tiffany%20Haddish/">Tiffany Haddish</a>, <a href="https://w1.megakino.do/xfsearch/cast/Stephanie%20Beatriz/">Stephanie Beatriz</a>, <a href="https://w1.megakino.do/xfsearch/cast/Alison%20Brie/">Alison Brie</a>, <a href="https://w1.megakino.do/xfsearch/cast/Nick%20Offerman/">Nick Offerman</a>, <a href="https://w1.megakino.do/xfsearch/cast/Charlie%20Day/">Charlie Day</a>, <a href="https://w1.megakino.do/xfsearch/cast/Maya%20Rudolph/">Maya Rudolph</a>, <a href="https://w1.megakino.do/xfsearch/cast/Will%20Ferrell/">Will Ferrell</a>, <a href="https://w1.megakino.do/xfsearch/cast/Jadon%20Sand/">Jadon Sand</a>, <a href="https://w1.megakino.do/xfsearch/cast/Brooklynn%20Prince/">Brooklynn Prince</a>, <a href="https://w1.megakino.do/xfsearch/cast/Channing%20Tatum/">Channing Tatum</a>, <a href="https://w1.megakino.do/xfsearch/cast/Jonah%20Hill/">Jonah Hill</a>, <a href="https://w1.megakino.do/xfsearch/cast/Richard%20Ayoade/">Richard Ayoade</a>, <a href="https://w1.megakino.do/xfsearch/cast/Ben%20Schwartz/">Ben Schwartz</a>, <a href="https://w1.megakino.do/xfsearch/cast/Noel%20Fielding/">Noel Fielding</a>, <a href="https://w1.megakino.do/xfsearch/cast/Jason%20Momoa/">Jason Momoa</a>, <a href="https://w1.megakino.do/xfsearch/cast/Cobie%20Smulders/">Cobie Smulders</a>, <a href="https://w1.megakino.do/xfsearch/cast/Ike%20Barinholtz/">Ike Barinholtz</a>, <a href="https://w1.megakino.do/xfsearch/cast/Ralph%20Fiennes/">Ralph Fiennes</a>, <a href="https://w1.megakino.do/xfsearch/cast/Will%20Forte/">Will Forte</a>, <a href="https://w1.megakino.do/xfsearch/cast/Jimmy%20O.%20Yang/">Jimmy O. Yang</a>, <a href="https://w1.megakino.do/xfsearch/cast/Jorma%20Taccone/">Jorma Taccone</a>, <a href="https://w1.megakino.do/xfsearch/cast/Bruce%20Willis/">Bruce Willis</a>, <a href="https://w1.megakino.do/xfsearch/cast/Gary%20Payton/">Gary Payton</a>, <a href="https://w1.megakino.do/xfsearch/cast/Sheryl%20Swoopes/">Sheryl Swoopes</a>, <a href="https://w1.megakino.do/xfsearch/cast/Todd%20Hansen/">Todd Hansen</a>, <a href="https://w1.megakino.do/xfsearch/cast/Doug%20Nicholas/">Doug Nicholas</a>, <a href="https://w1.megakino.do/xfsearch/cast/Liam%20Knight/">Liam Knight</a>, <a href="https://w1.megakino.do/xfsearch/cast/Emmett%20Mitchell/">Emmett Mitchell</a>, <a href="https://w1.megakino.do/xfsearch/cast/Sawyer%20D.%20Jones/">Sawyer D. Jones</a>, <a href="https://w1.megakino.do/xfsearch/cast/Graham%20Miller/">Graham Miller</a>, <a href="https://w1.megakino.do/xfsearch/cast/Cora%20Miller/">Cora Miller</a>, <a href="https://w1.megakino.do/xfsearch/cast/Ollie%20Mitchell/">Ollie Mitchell</a>, <a href="https://w1.megakino.do/xfsearch/cast/Mike%20Mitchell/">Mike Mitchell</a>, <a href="https://w1.megakino.do/xfsearch/cast/Christopher%20Miller/">Christopher Miller</a>, <a href="https://w1.megakino.do/xfsearch/cast/Margot%20Rubin/">Margot Rubin</a>, <a href="https://w1.megakino.do/xfsearch/cast/Emily%20Nordwind/">Emily Nordwind</a>, <a href="https://w1.megakino.do/xfsearch/cast/Chris%20McKay/">Chris McKay</a>, <a href="https://w1.megakino.do/xfsearch/cast/Trisha%20Gum/">Trisha Gum</a>, <a href="https://w1.megakino.do/xfsearch/cast/Ryan%20Halprin/">Ryan Halprin</a>, <a href="https://w1.megakino.do/xfsearch/cast/Lauren%20White/">Lauren White</a></span>
</li>
<li>
<div>Production:</div>
@ -306,8 +304,8 @@
<div class="pmovie__player-bottom d-flex ai-center">
<div class="pmovie__rating-likes d-flex">
<a href="#" onclick="doRate('plus', '4804'); return false;" ><span class="fal fa-thumbs-up"></span><span id="likes-id-4804">40</span></a>
<a href="#" onclick="doRate('minus', '4804'); return false;" ><span class="fal fa-thumbs-down"></span><span id="dislikes-id-4804">6</span></a>
<a href="#" onclick="doRate('plus', '4804'); return false;" ><span class="fal fa-thumbs-up"></span><span id="likes-id-4804">43</span></a>
<a href="#" onclick="doRate('minus', '4804'); return false;" ><span class="fal fa-thumbs-down"></span><span id="dislikes-id-4804">7</span></a>
</div>
<div class="pmovie__share flex-grow-1">
@ -327,7 +325,7 @@
<section class="sect pmovie__related">
<h2 class="sect__title sect__header">Empfohlene Einträge:</h2>
<div class="sect__content d-grid">
<a class="poster grid-item d-flex fd-column has-overlay" href="https://megakino.ms/films/727-the-lego-movie.html">
<a class="poster grid-item d-flex fd-column has-overlay" href="https://w1.megakino.do/films/727-the-lego-movie.html">
<div class="poster__img img-responsive img-responsive--portrait img-fit-cover">
<img data-src="/uploads/posts/2022-04/137106_poster_164993468kwn.webp" src="/templates/popcornie-dark/images/no-img.png" alt="The Lego Movie">
<div class="has-overlay__mask btn-icon anim"><span class="fal fa-play"></span></div>
@ -340,7 +338,7 @@
</ul>
</div>
</a>
<a class="poster grid-item d-flex fd-column has-overlay" href="https://megakino.ms/films/702-the-lego-batman-movie.html">
<a class="poster grid-item d-flex fd-column has-overlay" href="https://w1.megakino.do/films/702-the-lego-batman-movie.html">
<div class="poster__img img-responsive img-responsive--portrait img-fit-cover">
<img data-src="/uploads/posts/2022-04/324849_posters_164988rckab1.webp" src="/templates/popcornie-dark/images/no-img.png" alt="The Lego Batman Movie">
<div class="has-overlay__mask btn-icon anim"><span class="fal fa-play"></span></div>
@ -353,7 +351,7 @@
</ul>
</div>
</a>
<a class="poster grid-item d-flex fd-column has-overlay" href="https://megakino.ms/films/639-3-engel-fur-charlie.html">
<a class="poster grid-item d-flex fd-column has-overlay" href="https://w1.megakino.do/films/639-3-engel-fur-charlie.html">
<div class="poster__img img-responsive img-responsive--portrait img-fit-cover">
<img data-src="/uploads/posts/2022-04/458897_poster_16495963ekm41.webp" src="/templates/popcornie-dark/images/no-img.png" alt="3 Engel für Charlie">
<div class="has-overlay__mask btn-icon anim"><span class="fal fa-play"></span></div>
@ -366,7 +364,7 @@
</ul>
</div>
</a>
<a class="poster grid-item d-flex fd-column has-overlay" href="https://megakino.ms/comedy/4294-wir-sind-die-neuen.html">
<a class="poster grid-item d-flex fd-column has-overlay" href="https://w1.megakino.do/comedy/4294-wir-sind-die-neuen.html">
<div class="poster__img img-responsive img-responsive--portrait img-fit-cover">
<img data-src="/uploads/posts/2024-06/465808_jpg-c_310_420_x-f_jpg-q_x-xxyxx.webp" src="/templates/popcornie-dark/images/no-img.png" alt="Wir sind die Neuen">
<div class="has-overlay__mask btn-icon anim"><span class="fal fa-play"></span></div>
@ -379,7 +377,7 @@
</ul>
</div>
</a>
<a class="poster grid-item d-flex fd-column has-overlay" href="https://megakino.ms/films/241-batman-v-superman-dawn-of-justice.html">
<a class="poster grid-item d-flex fd-column has-overlay" href="https://w1.megakino.do/films/241-batman-v-superman-dawn-of-justice.html">
<div class="poster__img img-responsive img-responsive--portrait img-fit-cover">
<img data-src="/uploads/posts/2022-01/209112_poster_1642968jfkuz1.webp" src="/templates/popcornie-dark/images/no-img.png" alt="Batman v Superman: Dawn of Justice">
<div class="has-overlay__mask btn-icon anim"><span class="fal fa-play"></span></div>
@ -435,7 +433,7 @@
</div>
<input type="hidden" name="subaction" value="addcomment">
<input type="hidden" name="post_id" id="post_id" value="4804"><input type="hidden" name="user_hash" value="3b0870e460f86a4c69c332b1350cd140bb46cfb1"></form>
<input type="hidden" name="post_id" id="post_id" value="4804"><input type="hidden" name="user_hash" value="799cdd3dcd495cd0e270f66359cc616f0ba2a4a9"></form>
<div class="page__comments-list page__comments-list--not-comments" id="page__comments-list">
<div class="message-info">Es gibt noch keine Kommentare. Willst du der Erste sein?</div>
@ -446,12 +444,12 @@
<div class="d-none" id="pmovie__trailer" title="Trailer">
<div class="pmovie__trailer video-responsive" itemprop="video" itemscope="" itemtype="http://schema.org/VideoObject">
<link itemprop="thumbnail" href="https://megakino.ms/uploads/posts/2024-10/4977526_jpg-c_310_420_x-f_jpg-q_x-xxyxx.webp">
<link itemprop="thumbnail" href="https://w1.megakino.do/uploads/posts/2024-10/4977526_jpg-c_310_420_x-f_jpg-q_x-xxyxx.webp">
<meta itemprop="description" content="Fünf Jahre, nachdem die Pläne des skrupellosen Lord Business (Stimme im Original: Will Ferrell)">
<meta itemprop="uploadDate" content="2024-10-19T22:24:53+03:00" />
<meta itemprop="datePublished" content="2024-10-19T22:24:53+03:00">
<link itemprop="embedUrl" href="https://www.youtube.com/embed/xqXCjtWLmdI">
<link itemprop="url" href="https://megakino.ms/adventure/4804-the-lego-movie-2.html">
<link itemprop="url" href="https://w1.megakino.do/adventure/4804-the-lego-movie-2.html">
<meta itemprop="isFamilyFriendly" content="true">
<meta itemprop="playerType" content="HTML5">
<meta itemprop="duration" content="PT3000S">
@ -570,7 +568,7 @@ X
<!--
var dle_root = '/';
var dle_admin = '';
var dle_login_hash = '3b0870e460f86a4c69c332b1350cd140bb46cfb1';
var dle_login_hash = '799cdd3dcd495cd0e270f66359cc616f0ba2a4a9';
var dle_group = 5;
var dle_skin = 'popcornie-dark';
var dle_wysiwyg = '-1';

View file

@ -9,12 +9,12 @@
<meta property="og:site_name" content="MEGAKino - Filme und Serien Kostenlos in HD online anschauen auf Deutsch">
<meta property="og:type" content="article">
<meta property="og:title" content="Baymax - Riesiges Robowabohu">
<meta property="og:url" content="https://megakino.ms/films/693-baymax-riesiges-robowabohu.html">
<meta property="og:image" content="https://megakino.ms/uploads/posts/2022-04/177572_poster_1649884uqk2f1.webp">
<meta property="og:url" content="https://w1.megakino.do/films/693-baymax-riesiges-robowabohu.html">
<meta property="og:image" content="https://w1.megakino.do/uploads/posts/2022-04/177572_poster_1649884uqk2f1.webp">
<meta property="og:description" content="Hiro Hamada (Stimme: Ryan Potter) ist ein brillanter Teenager und lebt in der futuristischen Stadt San Fransokyo, wo er sein geniales Erfindertalent aber bei weitem nicht so nutzt, wie es sein Bruder Tadashi (Daniel Henney) gerne hätte. Als dieser stirbt, findet Hiro den aufblasbaren Roboter Baymax">
<link rel="search" type="application/opensearchdescription+xml" href="https://megakino.ms/index.php?do=opensearch" title="MEGAKino - Filme und Serien Kostenlos in HD online anschauen auf Deutsch">
<link rel="canonical" href="https://megakino.ms/films/693-baymax-riesiges-robowabohu.html">
<link rel="alternate" type="application/rss+xml" title="MEGAKino - Filme und Serien Kostenlos in HD online anschauen auf Deutsch" href="https://megakino.ms/rss.xml">
<link rel="search" type="application/opensearchdescription+xml" href="https://w1.megakino.do/index.php?do=opensearch" title="MEGAKino - Filme und Serien Kostenlos in HD online anschauen auf Deutsch">
<link rel="canonical" href="https://w1.megakino.do/films/693-baymax-riesiges-robowabohu.html">
<link rel="alternate" type="application/rss+xml" title="MEGAKino - Filme und Serien Kostenlos in HD online anschauen auf Deutsch" href="https://w1.megakino.do/rss.xml">
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<meta name="theme-color" content="#303d4a">
<link rel="preload" href="/templates/popcornie-dark/css/common.css" as="style">
@ -38,18 +38,16 @@
<!-- Google tag (gtag.js) -->
<script async src="https://www.googletagmanager.com/gtag/js?id=G-H793N1N6RQ"></script>
<script async src="https://www.googletagmanager.com/gtag/js?id=G-P5NCB4S88V"></script>
<script>
window.dataLayer = window.dataLayer || [];
function gtag(){dataLayer.push(arguments);}
gtag('js', new Date());
gtag('config', 'G-H793N1N6RQ');
gtag('config', 'G-P5NCB4S88V');
</script>
</head>
<body id="pmovie">
@ -91,7 +89,7 @@
<div class="side-block js-this-in-mobile-menu">
<div class="side-block__title">Was interessiert Sie?</div>
<ul class="side-block__content side-block__menu" data-showitems="10" itemscope itemtype="http://schema.org/SiteNavigationElement">
<li><a href="https://megakino.ms/films/" itemprop="url"><font itemprop="name">Filme</font></a><span style="float: right">4832</span></li><li><a href="https://megakino.ms/kinofilme/" itemprop="url"><font itemprop="name">Kinofilme</font></a><span style="float: right">193</span></li><li><a href="https://megakino.ms/serials/" itemprop="url"><font itemprop="name">Serien</font></a><span style="float: right">827</span></li><li><a href="https://megakino.ms/multfilm/" itemprop="url"><font itemprop="name">Animation</font></a><span style="float: right">296</span></li><li><a href="https://megakino.ms/documentary/" itemprop="url"><font itemprop="name">Dokumentationen</font></a><span style="float: right">73</span></li>
<li><a href="https://w1.megakino.do/films/" itemprop="url"><font itemprop="name">Filme</font></a><span style="float: right">4892</span></li><li><a href="https://w1.megakino.do/kinofilme/" itemprop="url"><font itemprop="name">Kinofilme</font></a><span style="float: right">196</span></li><li><a href="https://w1.megakino.do/serials/" itemprop="url"><font itemprop="name">Serien</font></a><span style="float: right">842</span></li><li><a href="https://w1.megakino.do/multfilm/" itemprop="url"><font itemprop="name">Animation</font></a><span style="float: right">300</span></li><li><a href="https://w1.megakino.do/documentary/" itemprop="url"><font itemprop="name">Dokumentationen</font></a><span style="float: right">75</span></li>
</ul>
</div>
@ -100,27 +98,27 @@
<div class="side-block">
<div class="side-block__title">Sammlung</div>
<div class="side-block__content collection-scroll">
<a href="https://megakino.ms/collection/2092-die-besten-weihnachtsfilme.html" class="custom-collection">
<a href="https://w1.megakino.do/collection/2092-die-besten-weihnachtsfilme.html" class="custom-collection">
<div class="custom-collection-image"><img class="xfieldimage collection_cover" data-src="/uploads/posts/2022-12/merry.webp" alt=""></div>
<div class="custom-collection-title">Die besten Weihnachtsfilme</div>
</a>
<a href="https://megakino.ms/collection/412-batman-filme-die-komplette-chronologie.html" class="custom-collection">
<a href="https://w1.megakino.do/collection/412-batman-filme-die-komplette-chronologie.html" class="custom-collection">
<div class="custom-collection-image"><img class="xfieldimage collection_cover" data-src="/uploads/posts/2022-02/batman.webp" alt=""></div>
<div class="custom-collection-title">Batman Filme - Die Komplette Chronologie</div>
</a>
<a href="https://megakino.ms/collection/127-marvel-filme-chronologischer.html" class="custom-collection">
<a href="https://w1.megakino.do/collection/127-marvel-filme-chronologischer.html" class="custom-collection">
<div class="custom-collection-image"><img class="xfieldimage collection_cover" data-src="/uploads/posts/2022-01/mcu.webp" alt=""></div>
<div class="custom-collection-title">Marvel Filme - Die Komplette Chronologie</div>
</a>
<a href="https://megakino.ms/collection/181-harry-potter-die-komplette-chronologie.html" class="custom-collection">
<a href="https://w1.megakino.do/collection/181-harry-potter-die-komplette-chronologie.html" class="custom-collection">
<div class="custom-collection-image"><img class="xfieldimage collection_cover" data-src="/uploads/posts/2022-01/harry.webp" alt=""></div>
<div class="custom-collection-title">Harry Potter - Die Komplette Chronologie</div>
</a>
<a href="https://megakino.ms/collection/136-star-wars-die-komplette-chronologie.html" class="custom-collection">
<a href="https://w1.megakino.do/collection/136-star-wars-die-komplette-chronologie.html" class="custom-collection">
<div class="custom-collection-image"><img class="xfieldimage collection_cover" data-src="/uploads/posts/2022-01/starwars.webp" alt=""></div>
<div class="custom-collection-title">Star Wars Die Komplette Chronologie</div>
</a>
<a href="https://megakino.ms/collection/135-fast-and-furious-chronologischer.html" class="custom-collection">
<a href="https://w1.megakino.do/collection/135-fast-and-furious-chronologischer.html" class="custom-collection">
<div class="custom-collection-image"><img class="xfieldimage collection_cover" data-src="/uploads/posts/2022-01/forsag.webp" alt=""></div>
<div class="custom-collection-title">Fast and Furious - Die Komplette Chronologie</div>
</a>
@ -132,7 +130,7 @@
<div class="side-block js-this-in-mobile-menu">
<div class="side-block__title">Genres</div>
<ul class="side-block__content side-block__menu" data-showitems="10">
<li><a href="https://megakino.ms/multfilm/">Animation</a><span style="float: right">296</span></li><li><a href="https://megakino.ms/action/">Action</a><span style="float: right">1569</span></li><li><a href="https://megakino.ms/adventure/">Adventure</a><span style="float: right">894</span></li><li><a href="https://megakino.ms/comedy/">Comedy</a><span style="float: right">1636</span></li><li><a href="https://megakino.ms/crime/">Crime</a><span style="float: right">743</span></li><li><a href="https://megakino.ms/documentary/">Dokumentationen</a><span style="float: right">73</span></li><li><a href="https://megakino.ms/drama/">Drama</a><span style="float: right">2258</span></li><li><a href="https://megakino.ms/family/">Family</a><span style="float: right">477</span></li><li><a href="https://megakino.ms/fantasy/">Fantasy</a><span style="float: right">636</span></li><li><a href="https://megakino.ms/history/">History</a><span style="float: right">229</span></li><li><a href="https://megakino.ms/horror/">Horror</a><span style="float: right">825</span></li><li><a href="https://megakino.ms/music/">Music</a><span style="float: right">107</span></li><li><a href="https://megakino.ms/mystery/">Mystery</a><span style="float: right">383</span></li><li><a href="https://megakino.ms/romance/">Romance</a><span style="float: right">518</span></li><li><a href="https://megakino.ms/science-fiction/">Sci-Fi</a><span style="float: right">719</span></li><li><a href="https://megakino.ms/tv-movie/">TV Movie</a><span style="float: right">55</span></li><li><a href="https://megakino.ms/thriller/">Thriller</a><span style="float: right">1569</span></li><li><a href="https://megakino.ms/war/">War</a><span style="float: right">142</span></li><li><a href="https://megakino.ms/western/">Western</a><span style="float: right">83</span></li>
<li><a href="https://w1.megakino.do/multfilm/">Animation</a><span style="float: right">300</span></li><li><a href="https://w1.megakino.do/action/">Action</a><span style="float: right">1591</span></li><li><a href="https://w1.megakino.do/adventure/">Adventure</a><span style="float: right">903</span></li><li><a href="https://w1.megakino.do/comedy/">Comedy</a><span style="float: right">1651</span></li><li><a href="https://w1.megakino.do/crime/">Crime</a><span style="float: right">746</span></li><li><a href="https://w1.megakino.do/documentary/">Dokumentationen</a><span style="float: right">75</span></li><li><a href="https://w1.megakino.do/drama/">Drama</a><span style="float: right">2284</span></li><li><a href="https://w1.megakino.do/family/">Family</a><span style="float: right">480</span></li><li><a href="https://w1.megakino.do/fantasy/">Fantasy</a><span style="float: right">642</span></li><li><a href="https://w1.megakino.do/history/">History</a><span style="float: right">232</span></li><li><a href="https://w1.megakino.do/horror/">Horror</a><span style="float: right">839</span></li><li><a href="https://w1.megakino.do/music/">Music</a><span style="float: right">108</span></li><li><a href="https://w1.megakino.do/mystery/">Mystery</a><span style="float: right">388</span></li><li><a href="https://w1.megakino.do/romance/">Romance</a><span style="float: right">523</span></li><li><a href="https://w1.megakino.do/science-fiction/">Sci-Fi</a><span style="float: right">728</span></li><li><a href="https://w1.megakino.do/tv-movie/">TV Movie</a><span style="float: right">55</span></li><li><a href="https://w1.megakino.do/thriller/">Thriller</a><span style="float: right">1596</span></li><li><a href="https://w1.megakino.do/war/">War</a><span style="float: right">144</span></li><li><a href="https://w1.megakino.do/western/">Western</a><span style="float: right">85</span></li>
</ul>
@ -150,25 +148,25 @@
<div class="side-block__content">
<div class="lcomm">
<div class="lcomm__meta d-flex ai-center">
<div class="lcomm__author flex-grow-1 ws-nowrap">Eren</div>
<div class="lcomm__date">20.10.25</div>
<div class="lcomm__author flex-grow-1 ws-nowrap">Madmax91</div>
<div class="lcomm__date">02.11.25</div>
</div>
<div class="lcomm__text">Ich finde es auch Mega cool auch die Grafick seh schön</div>
<a class="lcomm__link ws-nowrap icon-at-left" href="https://megakino.ms/films/5713-demon-slayer-kimetsu-no-yaiba-infinity-castle-teil-1.html#comment"><span class="fal fa-arrow-circle-right"></span>Demon Slayer: Kimetsu no Yaiba Infinity Castle - Teil 1</a>
<div class="lcomm__text">Das Ende ist offen und mehr fragen als Antworten ! Wer war es denn jetzt</div>
<a class="lcomm__link ws-nowrap icon-at-left" href="https://w1.megakino.do/drama/5075-this-is-not-hollywood-staffel-1.html#comment"><span class="fal fa-arrow-circle-right"></span>This Is Not Hollywood - Staffel 1</a>
</div><div class="lcomm">
<div class="lcomm__meta d-flex ai-center">
<div class="lcomm__author flex-grow-1 ws-nowrap">Sung</div>
<div class="lcomm__date">19.10.25</div>
<div class="lcomm__author flex-grow-1 ws-nowrap">Christian</div>
<div class="lcomm__date">02.11.25</div>
</div>
<div class="lcomm__text">Geistes krank war der film richtig gut bin hyped auf part 2</div>
<a class="lcomm__link ws-nowrap icon-at-left" href="https://megakino.ms/films/5713-demon-slayer-kimetsu-no-yaiba-infinity-castle-teil-1.html#comment"><span class="fal fa-arrow-circle-right"></span>Demon Slayer: Kimetsu no Yaiba Infinity Castle - Teil 1</a>
<div class="lcomm__text">Hatte mir etwas mehr versprochen aber sonst war der Film in Ordnung</div>
<a class="lcomm__link ws-nowrap icon-at-left" href="https://w1.megakino.do/films/5817-dracula-die-auferstehung.html#comment"><span class="fal fa-arrow-circle-right"></span>Dracula - Die Auferstehung</a>
</div><div class="lcomm">
<div class="lcomm__meta d-flex ai-center">
<div class="lcomm__author flex-grow-1 ws-nowrap">Zebne</div>
<div class="lcomm__date">19.10.25</div>
<div class="lcomm__author flex-grow-1 ws-nowrap">emily</div>
<div class="lcomm__date">02.11.25</div>
</div>
<div class="lcomm__text">Einfach nur ein geiler film selbst im jahr 2025</div>
<a class="lcomm__link ws-nowrap icon-at-left" href="https://megakino.ms/horror/30-scream.html#comment"><span class="fal fa-arrow-circle-right"></span>Scream 5</a>
<div class="lcomm__text">toller und lustiger film auch die pinguine sind süß!!!</div>
<a class="lcomm__link ws-nowrap icon-at-left" href="https://w1.megakino.do/films/828-mr-poppers-pinguine.html#comment"><span class="fal fa-arrow-circle-right"></span>Mr. Poppers Pinguine</a>
</div>
</div>
</div>
@ -182,14 +180,14 @@
<div class="speedbar ws-nowrap">
<span itemscope itemtype="https://schema.org/BreadcrumbList"><span itemprop="itemListElement" itemscope itemtype="https://schema.org/ListItem"><meta itemprop="position" content="1"><a href="https://megakino.ms/" itemprop="item"><span itemprop="name">MEGAKino</span></a></span> <span itemprop="itemListElement" itemscope itemtype="https://schema.org/ListItem"><meta itemprop="position" content="2"><a href="https://megakino.ms/films/" itemprop="item"><span itemprop="name">Filme</span></a></span> Baymax - Riesiges Robowabohu</span>
<span itemscope itemtype="https://schema.org/BreadcrumbList"><span itemprop="itemListElement" itemscope itemtype="https://schema.org/ListItem"><meta itemprop="position" content="1"><a href="https://w1.megakino.do/" itemprop="item"><span itemprop="name">MEGAKino</span></a></span> <span itemprop="itemListElement" itemscope itemtype="https://schema.org/ListItem"><meta itemprop="position" content="2"><a href="https://w1.megakino.do/films/" itemprop="item"><span itemprop="name">Filme</span></a></span> Baymax - Riesiges Robowabohu</span>
</div>
<div id="dle-content"><article class="page ignore-select pmovie" itemscope itemtype="http://schema.org/Movie">
<meta itemprop="inLanguage" content="de">
<meta itemprop="countryOfOrigin" content="United States of America">
<meta itemprop="image" content="https://megakino.ms/uploads/posts/2022-04/177572_poster_1649884uqk2f1.webp">
<meta itemprop="image" content="https://w1.megakino.do/uploads/posts/2022-04/177572_poster_1649884uqk2f1.webp">
<meta itemprop="name" content="Baymax - Riesiges Robowabohu">
<meta itemprop="dateCreated" content="2022-02-28T23:11:35+03:00" />
@ -207,13 +205,13 @@
<header class="page__subcol-main flex-grow-1 d-flex fd-column">
<h1 itemprop="name">Baymax - Riesiges Robowabohu</h1>
<div class="pmovie__original-title" itemprop="alternativeHeadline"> Big Hero 6</div>
<div class="pmovie__year"><span itemprop="countryOfOrigin">United States of America</span>, <span itemprop="dateCreated"><a href="https://megakino.ms/xfsearch/release_date/2014/">2014</a></span>, 102 min</div>
<div class="pmovie__year"><span itemprop="countryOfOrigin">United States of America</span>, <span itemprop="dateCreated"><a href="https://w1.megakino.do/xfsearch/release_date/2014/">2014</a></span>, 102 min</div>
<div class="pmovie__genres" itemprop="genre">Filme / Animation / Action / Adventure / Comedy / Family</div>
<div class="pmovie__age order-first"><div>16+</div></div>
<div class="pmovie__complaint flex-grow-1"><a href="javascript:AddComplaint('693', 'news')">Fehler gefunden?</a></div>
<div class="pmovie__subinfo d-flex ai-center">
<div class="pmovie__subrating pmovie__subrating--kp"><img data-src="/templates/popcornie-dark/images/kp.svg" src="/templates/popcornie-dark/images/no-img.png" alt="">7,8</div>
<div class="pmovie__subrating pmovie__subrating--site"><img data-src="/templates/popcornie-dark/images/logo.svg" src="/templates/popcornie-dark/images/no-img.png" alt=""><div class="js-count-rating"><span id="ratig-layer-693"><span class="ratingtypeplusminus ratingplus" >+182</span></span><span id="vote-num-id-693">248</span></div></div>
<div class="pmovie__subrating pmovie__subrating--site"><img data-src="/templates/popcornie-dark/images/logo.svg" src="/templates/popcornie-dark/images/no-img.png" alt=""><div class="js-count-rating"><span id="ratig-layer-693"><span class="ratingtypeplusminus ratingplus" >+184</span></span><span id="vote-num-id-693">252</span></div></div>
<div class="pmovie__btn btn icon-at-left flex-grow-1 js-scroll-to">Stream Anschauen</div>
</div>
</header>
@ -223,11 +221,11 @@
<ul class="page__subcol-side2 pmovie__header-list">
<li>
<div>Director:</div>
<span itemprop="directors"><a href="https://megakino.ms/xfsearch/directors/Chris%20Williams/">Chris Williams</a>, <a href="https://megakino.ms/xfsearch/directors/Don%20Hall/">Don Hall</a></span>
<span itemprop="directors"><a href="https://w1.megakino.do/xfsearch/directors/Chris%20Williams/">Chris Williams</a>, <a href="https://w1.megakino.do/xfsearch/directors/Don%20Hall/">Don Hall</a></span>
</li>
<li>
<div>Stars:</div>
<span itemprop="actors"><a href="https://megakino.ms/xfsearch/cast/Scott%20Adsit/">Scott Adsit</a>, <a href="https://megakino.ms/xfsearch/cast/Ryan%20Potter/">Ryan Potter</a>, <a href="https://megakino.ms/xfsearch/cast/Daniel%20Henney/">Daniel Henney</a>, <a href="https://megakino.ms/xfsearch/cast/T.%20J.%20Miller/">T. J. Miller</a>, <a href="https://megakino.ms/xfsearch/cast/Jamie%20Chung/">Jamie Chung</a>, <a href="https://megakino.ms/xfsearch/cast/Damon%20Wayans%20Jr./">Damon Wayans Jr.</a>, <a href="https://megakino.ms/xfsearch/cast/G%C3%A9nesis%20Rodr%C3%ADguez/">Génesis Rodríguez</a>, <a href="https://megakino.ms/xfsearch/cast/James%20Cromwell/">James Cromwell</a>, <a href="https://megakino.ms/xfsearch/cast/Alan%20Tudyk/">Alan Tudyk</a>, <a href="https://megakino.ms/xfsearch/cast/Maya%20Rudolph/">Maya Rudolph</a>, <a href="https://megakino.ms/xfsearch/cast/Abraham%20Benrubi/">Abraham Benrubi</a>, <a href="https://megakino.ms/xfsearch/cast/Katie%20Lowes/">Katie Lowes</a>, <a href="https://megakino.ms/xfsearch/cast/Billy%20Bush/">Billy Bush</a>, <a href="https://megakino.ms/xfsearch/cast/Daniel%20Gerson/">Daniel Gerson</a>, <a href="https://megakino.ms/xfsearch/cast/Paul%20Briggs/">Paul Briggs</a>, <a href="https://megakino.ms/xfsearch/cast/Charlie%20Adler/">Charlie Adler</a>, <a href="https://megakino.ms/xfsearch/cast/Marcella%20Lentz-Pope/">Marcella Lentz-Pope</a></span>
<span itemprop="actors"><a href="https://w1.megakino.do/xfsearch/cast/Scott%20Adsit/">Scott Adsit</a>, <a href="https://w1.megakino.do/xfsearch/cast/Ryan%20Potter/">Ryan Potter</a>, <a href="https://w1.megakino.do/xfsearch/cast/Daniel%20Henney/">Daniel Henney</a>, <a href="https://w1.megakino.do/xfsearch/cast/T.%20J.%20Miller/">T. J. Miller</a>, <a href="https://w1.megakino.do/xfsearch/cast/Jamie%20Chung/">Jamie Chung</a>, <a href="https://w1.megakino.do/xfsearch/cast/Damon%20Wayans%20Jr./">Damon Wayans Jr.</a>, <a href="https://w1.megakino.do/xfsearch/cast/G%C3%A9nesis%20Rodr%C3%ADguez/">Génesis Rodríguez</a>, <a href="https://w1.megakino.do/xfsearch/cast/James%20Cromwell/">James Cromwell</a>, <a href="https://w1.megakino.do/xfsearch/cast/Alan%20Tudyk/">Alan Tudyk</a>, <a href="https://w1.megakino.do/xfsearch/cast/Maya%20Rudolph/">Maya Rudolph</a>, <a href="https://w1.megakino.do/xfsearch/cast/Abraham%20Benrubi/">Abraham Benrubi</a>, <a href="https://w1.megakino.do/xfsearch/cast/Katie%20Lowes/">Katie Lowes</a>, <a href="https://w1.megakino.do/xfsearch/cast/Billy%20Bush/">Billy Bush</a>, <a href="https://w1.megakino.do/xfsearch/cast/Daniel%20Gerson/">Daniel Gerson</a>, <a href="https://w1.megakino.do/xfsearch/cast/Paul%20Briggs/">Paul Briggs</a>, <a href="https://w1.megakino.do/xfsearch/cast/Charlie%20Adler/">Charlie Adler</a>, <a href="https://w1.megakino.do/xfsearch/cast/Marcella%20Lentz-Pope/">Marcella Lentz-Pope</a></span>
</li>
<li>
<div>Production:</div>
@ -310,8 +308,8 @@
<div class="pmovie__player-bottom d-flex ai-center">
<div class="pmovie__rating-likes d-flex">
<a href="#" onclick="doRate('plus', '693'); return false;" ><span class="fal fa-thumbs-up"></span><span id="likes-id-693">215</span></a>
<a href="#" onclick="doRate('minus', '693'); return false;" ><span class="fal fa-thumbs-down"></span><span id="dislikes-id-693">33</span></a>
<a href="#" onclick="doRate('plus', '693'); return false;" ><span class="fal fa-thumbs-up"></span><span id="likes-id-693">218</span></a>
<a href="#" onclick="doRate('minus', '693'); return false;" ><span class="fal fa-thumbs-down"></span><span id="dislikes-id-693">34</span></a>
</div>
<div class="pmovie__share flex-grow-1">
@ -331,7 +329,7 @@
<section class="sect pmovie__related">
<h2 class="sect__title sect__header">Empfohlene Einträge:</h2>
<div class="sect__content d-grid">
<a class="poster grid-item d-flex fd-column has-overlay" href="https://megakino.ms/serials/1381-baymax-staffel-1.html">
<a class="poster grid-item d-flex fd-column has-overlay" href="https://w1.megakino.do/serials/1381-baymax-staffel-1.html">
<div class="poster__img img-responsive img-responsive--portrait img-fit-cover">
<img data-src="/uploads/posts/2022-06/ftnsbmjuuaaeohu.webp" src="/templates/popcornie-dark/images/no-img.png" alt="Baymax! - Staffel 1">
<div class="has-overlay__mask btn-icon anim"><span class="fal fa-play"></span></div>
@ -344,7 +342,7 @@
</ul>
</div>
</a>
<a class="poster grid-item d-flex fd-column has-overlay" href="https://megakino.ms/films/2286-die-maske-2-die-nachste-generation.html">
<a class="poster grid-item d-flex fd-column has-overlay" href="https://w1.megakino.do/films/2286-die-maske-2-die-nachste-generation.html">
<div class="poster__img img-responsive img-responsive--portrait img-fit-cover">
<img data-src="/uploads/posts/2022-12/0362165.webp" src="/templates/popcornie-dark/images/no-img.png" alt="Die Maske 2 - Die nächste Generation">
<div class="has-overlay__mask btn-icon anim"><span class="fal fa-play"></span></div>
@ -357,7 +355,7 @@
</ul>
</div>
</a>
<a class="poster grid-item d-flex fd-column has-overlay" href="https://megakino.ms/films/160-harry-potter-und-die-heiligtumer-des-todes-teil-1.html">
<a class="poster grid-item d-flex fd-column has-overlay" href="https://w1.megakino.do/films/160-harry-potter-und-die-heiligtumer-des-todes-teil-1.html">
<div class="poster__img img-responsive img-responsive--portrait img-fit-cover">
<img data-src="/uploads/posts/2022-01/12444_poster_16422667tvjb91.webp" src="/templates/popcornie-dark/images/no-img.png" alt="Harry Potter und die Heiligtümer des Todes - Teil 1">
<div class="has-overlay__mask btn-icon anim"><span class="fal fa-play"></span></div>
@ -370,7 +368,7 @@
</ul>
</div>
</a>
<a class="poster grid-item d-flex fd-column has-overlay" href="https://megakino.ms/films/1924-ramstein-das-durchstossene-herz.html">
<a class="poster grid-item d-flex fd-column has-overlay" href="https://w1.megakino.do/films/1924-ramstein-das-durchstossene-herz.html">
<div class="poster__img img-responsive img-responsive--portrait img-fit-cover">
<img data-src="/uploads/posts/2022-10/ramstein-das-durchstosene-herz.webp" src="/templates/popcornie-dark/images/no-img.png" alt="Ramstein - Das durchstoßene Herz">
<div class="has-overlay__mask btn-icon anim"><span class="fal fa-play"></span></div>
@ -383,7 +381,7 @@
</ul>
</div>
</a>
<a class="poster grid-item d-flex fd-column has-overlay" href="https://megakino.ms/films/712-drachenzahmen-leicht-gemacht.html">
<a class="poster grid-item d-flex fd-column has-overlay" href="https://w1.megakino.do/films/712-drachenzahmen-leicht-gemacht.html">
<div class="poster__img img-responsive img-responsive--portrait img-fit-cover">
<img data-src="/uploads/posts/2022-04/10191_poster_16499331z9kdp.webp" src="/templates/popcornie-dark/images/no-img.png" alt="Drachenzähmen leicht gemacht">
<div class="has-overlay__mask btn-icon anim"><span class="fal fa-play"></span></div>
@ -439,7 +437,7 @@
</div>
<input type="hidden" name="subaction" value="addcomment">
<input type="hidden" name="post_id" id="post_id" value="693"><input type="hidden" name="user_hash" value="3b0870e460f86a4c69c332b1350cd140bb46cfb1"></form>
<input type="hidden" name="post_id" id="post_id" value="693"><input type="hidden" name="user_hash" value="799cdd3dcd495cd0e270f66359cc616f0ba2a4a9"></form>
<div class="page__comments-list page__comments-list--not-comments" id="page__comments-list">
<div class="message-info">Es gibt noch keine Kommentare. Willst du der Erste sein?</div>
@ -450,12 +448,12 @@
<div class="d-none" id="pmovie__trailer" title="Trailer">
<div class="pmovie__trailer video-responsive" itemprop="video" itemscope="" itemtype="http://schema.org/VideoObject">
<link itemprop="thumbnail" href="https://megakino.ms/uploads/posts/2022-04/177572_poster_1649884uqk2f1.webp">
<link itemprop="thumbnail" href="https://w1.megakino.do/uploads/posts/2022-04/177572_poster_1649884uqk2f1.webp">
<meta itemprop="description" content="Hiro Hamada (Stimme: Ryan Potter) ist ein brillanter Teenager und lebt in der futuristischen Stadt">
<meta itemprop="uploadDate" content="2022-02-28T23:11:35+03:00" />
<meta itemprop="datePublished" content="2022-02-28T23:11:35+03:00">
<link itemprop="embedUrl" href="https://www.youtube.com/embed/pnuIbJJFFEg">
<link itemprop="url" href="https://megakino.ms/films/693-baymax-riesiges-robowabohu.html">
<link itemprop="url" href="https://w1.megakino.do/films/693-baymax-riesiges-robowabohu.html">
<meta itemprop="isFamilyFriendly" content="true">
<meta itemprop="playerType" content="HTML5">
<meta itemprop="duration" content="PT3000S">
@ -574,7 +572,7 @@ X
<!--
var dle_root = '/';
var dle_admin = '';
var dle_login_hash = '3b0870e460f86a4c69c332b1350cd140bb46cfb1';
var dle_login_hash = '799cdd3dcd495cd0e270f66359cc616f0ba2a4a9';
var dle_group = 5;
var dle_skin = 'popcornie-dark';
var dle_wysiwyg = '-1';

View file

@ -9,12 +9,12 @@
<meta property="og:site_name" content="MEGAKino - Filme und Serien Kostenlos in HD online anschauen auf Deutsch">
<meta property="og:type" content="article">
<meta property="og:title" content="The Lego Movie">
<meta property="og:url" content="https://megakino.ms/films/727-the-lego-movie.html">
<meta property="og:image" content="https://megakino.ms/uploads/posts/2022-04/137106_poster_164993468kwn.webp">
<meta property="og:url" content="https://w1.megakino.do/films/727-the-lego-movie.html">
<meta property="og:image" content="https://w1.megakino.do/uploads/posts/2022-04/137106_poster_164993468kwn.webp">
<meta property="og:description" content="Der gutmütige Emmet wird eines Tages von der abenteuerlustigen Wyldstyle entführt. Sie glaubt, in dem Normalo den von einer Prophezeiung angekündigten Meisterbauer gefunden zu haben. Unter der Führung des alten Mystikers Vitruvius soll Emmet gemeinsam mit Batman und Wyldstyle den skrupellosen">
<link rel="search" type="application/opensearchdescription+xml" href="https://megakino.ms/index.php?do=opensearch" title="MEGAKino - Filme und Serien Kostenlos in HD online anschauen auf Deutsch">
<link rel="canonical" href="https://megakino.ms/films/727-the-lego-movie.html">
<link rel="alternate" type="application/rss+xml" title="MEGAKino - Filme und Serien Kostenlos in HD online anschauen auf Deutsch" href="https://megakino.ms/rss.xml">
<link rel="search" type="application/opensearchdescription+xml" href="https://w1.megakino.do/index.php?do=opensearch" title="MEGAKino - Filme und Serien Kostenlos in HD online anschauen auf Deutsch">
<link rel="canonical" href="https://w1.megakino.do/films/727-the-lego-movie.html">
<link rel="alternate" type="application/rss+xml" title="MEGAKino - Filme und Serien Kostenlos in HD online anschauen auf Deutsch" href="https://w1.megakino.do/rss.xml">
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<meta name="theme-color" content="#303d4a">
<link rel="preload" href="/templates/popcornie-dark/css/common.css" as="style">
@ -38,18 +38,16 @@
<!-- Google tag (gtag.js) -->
<script async src="https://www.googletagmanager.com/gtag/js?id=G-H793N1N6RQ"></script>
<script async src="https://www.googletagmanager.com/gtag/js?id=G-P5NCB4S88V"></script>
<script>
window.dataLayer = window.dataLayer || [];
function gtag(){dataLayer.push(arguments);}
gtag('js', new Date());
gtag('config', 'G-H793N1N6RQ');
gtag('config', 'G-P5NCB4S88V');
</script>
</head>
<body id="pmovie">
@ -91,7 +89,7 @@
<div class="side-block js-this-in-mobile-menu">
<div class="side-block__title">Was interessiert Sie?</div>
<ul class="side-block__content side-block__menu" data-showitems="10" itemscope itemtype="http://schema.org/SiteNavigationElement">
<li><a href="https://megakino.ms/films/" itemprop="url"><font itemprop="name">Filme</font></a><span style="float: right">4832</span></li><li><a href="https://megakino.ms/kinofilme/" itemprop="url"><font itemprop="name">Kinofilme</font></a><span style="float: right">193</span></li><li><a href="https://megakino.ms/serials/" itemprop="url"><font itemprop="name">Serien</font></a><span style="float: right">827</span></li><li><a href="https://megakino.ms/multfilm/" itemprop="url"><font itemprop="name">Animation</font></a><span style="float: right">296</span></li><li><a href="https://megakino.ms/documentary/" itemprop="url"><font itemprop="name">Dokumentationen</font></a><span style="float: right">73</span></li>
<li><a href="https://w1.megakino.do/films/" itemprop="url"><font itemprop="name">Filme</font></a><span style="float: right">4892</span></li><li><a href="https://w1.megakino.do/kinofilme/" itemprop="url"><font itemprop="name">Kinofilme</font></a><span style="float: right">196</span></li><li><a href="https://w1.megakino.do/serials/" itemprop="url"><font itemprop="name">Serien</font></a><span style="float: right">842</span></li><li><a href="https://w1.megakino.do/multfilm/" itemprop="url"><font itemprop="name">Animation</font></a><span style="float: right">300</span></li><li><a href="https://w1.megakino.do/documentary/" itemprop="url"><font itemprop="name">Dokumentationen</font></a><span style="float: right">75</span></li>
</ul>
</div>
@ -100,27 +98,27 @@
<div class="side-block">
<div class="side-block__title">Sammlung</div>
<div class="side-block__content collection-scroll">
<a href="https://megakino.ms/collection/2092-die-besten-weihnachtsfilme.html" class="custom-collection">
<a href="https://w1.megakino.do/collection/2092-die-besten-weihnachtsfilme.html" class="custom-collection">
<div class="custom-collection-image"><img class="xfieldimage collection_cover" data-src="/uploads/posts/2022-12/merry.webp" alt=""></div>
<div class="custom-collection-title">Die besten Weihnachtsfilme</div>
</a>
<a href="https://megakino.ms/collection/412-batman-filme-die-komplette-chronologie.html" class="custom-collection">
<a href="https://w1.megakino.do/collection/412-batman-filme-die-komplette-chronologie.html" class="custom-collection">
<div class="custom-collection-image"><img class="xfieldimage collection_cover" data-src="/uploads/posts/2022-02/batman.webp" alt=""></div>
<div class="custom-collection-title">Batman Filme - Die Komplette Chronologie</div>
</a>
<a href="https://megakino.ms/collection/127-marvel-filme-chronologischer.html" class="custom-collection">
<a href="https://w1.megakino.do/collection/127-marvel-filme-chronologischer.html" class="custom-collection">
<div class="custom-collection-image"><img class="xfieldimage collection_cover" data-src="/uploads/posts/2022-01/mcu.webp" alt=""></div>
<div class="custom-collection-title">Marvel Filme - Die Komplette Chronologie</div>
</a>
<a href="https://megakino.ms/collection/181-harry-potter-die-komplette-chronologie.html" class="custom-collection">
<a href="https://w1.megakino.do/collection/181-harry-potter-die-komplette-chronologie.html" class="custom-collection">
<div class="custom-collection-image"><img class="xfieldimage collection_cover" data-src="/uploads/posts/2022-01/harry.webp" alt=""></div>
<div class="custom-collection-title">Harry Potter - Die Komplette Chronologie</div>
</a>
<a href="https://megakino.ms/collection/136-star-wars-die-komplette-chronologie.html" class="custom-collection">
<a href="https://w1.megakino.do/collection/136-star-wars-die-komplette-chronologie.html" class="custom-collection">
<div class="custom-collection-image"><img class="xfieldimage collection_cover" data-src="/uploads/posts/2022-01/starwars.webp" alt=""></div>
<div class="custom-collection-title">Star Wars Die Komplette Chronologie</div>
</a>
<a href="https://megakino.ms/collection/135-fast-and-furious-chronologischer.html" class="custom-collection">
<a href="https://w1.megakino.do/collection/135-fast-and-furious-chronologischer.html" class="custom-collection">
<div class="custom-collection-image"><img class="xfieldimage collection_cover" data-src="/uploads/posts/2022-01/forsag.webp" alt=""></div>
<div class="custom-collection-title">Fast and Furious - Die Komplette Chronologie</div>
</a>
@ -132,7 +130,7 @@
<div class="side-block js-this-in-mobile-menu">
<div class="side-block__title">Genres</div>
<ul class="side-block__content side-block__menu" data-showitems="10">
<li><a href="https://megakino.ms/multfilm/">Animation</a><span style="float: right">296</span></li><li><a href="https://megakino.ms/action/">Action</a><span style="float: right">1569</span></li><li><a href="https://megakino.ms/adventure/">Adventure</a><span style="float: right">894</span></li><li><a href="https://megakino.ms/comedy/">Comedy</a><span style="float: right">1636</span></li><li><a href="https://megakino.ms/crime/">Crime</a><span style="float: right">743</span></li><li><a href="https://megakino.ms/documentary/">Dokumentationen</a><span style="float: right">73</span></li><li><a href="https://megakino.ms/drama/">Drama</a><span style="float: right">2258</span></li><li><a href="https://megakino.ms/family/">Family</a><span style="float: right">477</span></li><li><a href="https://megakino.ms/fantasy/">Fantasy</a><span style="float: right">636</span></li><li><a href="https://megakino.ms/history/">History</a><span style="float: right">229</span></li><li><a href="https://megakino.ms/horror/">Horror</a><span style="float: right">825</span></li><li><a href="https://megakino.ms/music/">Music</a><span style="float: right">107</span></li><li><a href="https://megakino.ms/mystery/">Mystery</a><span style="float: right">383</span></li><li><a href="https://megakino.ms/romance/">Romance</a><span style="float: right">518</span></li><li><a href="https://megakino.ms/science-fiction/">Sci-Fi</a><span style="float: right">719</span></li><li><a href="https://megakino.ms/tv-movie/">TV Movie</a><span style="float: right">55</span></li><li><a href="https://megakino.ms/thriller/">Thriller</a><span style="float: right">1569</span></li><li><a href="https://megakino.ms/war/">War</a><span style="float: right">142</span></li><li><a href="https://megakino.ms/western/">Western</a><span style="float: right">83</span></li>
<li><a href="https://w1.megakino.do/multfilm/">Animation</a><span style="float: right">300</span></li><li><a href="https://w1.megakino.do/action/">Action</a><span style="float: right">1591</span></li><li><a href="https://w1.megakino.do/adventure/">Adventure</a><span style="float: right">903</span></li><li><a href="https://w1.megakino.do/comedy/">Comedy</a><span style="float: right">1651</span></li><li><a href="https://w1.megakino.do/crime/">Crime</a><span style="float: right">746</span></li><li><a href="https://w1.megakino.do/documentary/">Dokumentationen</a><span style="float: right">75</span></li><li><a href="https://w1.megakino.do/drama/">Drama</a><span style="float: right">2284</span></li><li><a href="https://w1.megakino.do/family/">Family</a><span style="float: right">480</span></li><li><a href="https://w1.megakino.do/fantasy/">Fantasy</a><span style="float: right">642</span></li><li><a href="https://w1.megakino.do/history/">History</a><span style="float: right">232</span></li><li><a href="https://w1.megakino.do/horror/">Horror</a><span style="float: right">839</span></li><li><a href="https://w1.megakino.do/music/">Music</a><span style="float: right">108</span></li><li><a href="https://w1.megakino.do/mystery/">Mystery</a><span style="float: right">388</span></li><li><a href="https://w1.megakino.do/romance/">Romance</a><span style="float: right">523</span></li><li><a href="https://w1.megakino.do/science-fiction/">Sci-Fi</a><span style="float: right">728</span></li><li><a href="https://w1.megakino.do/tv-movie/">TV Movie</a><span style="float: right">55</span></li><li><a href="https://w1.megakino.do/thriller/">Thriller</a><span style="float: right">1596</span></li><li><a href="https://w1.megakino.do/war/">War</a><span style="float: right">144</span></li><li><a href="https://w1.megakino.do/western/">Western</a><span style="float: right">85</span></li>
</ul>
@ -150,25 +148,25 @@
<div class="side-block__content">
<div class="lcomm">
<div class="lcomm__meta d-flex ai-center">
<div class="lcomm__author flex-grow-1 ws-nowrap">Eren</div>
<div class="lcomm__date">20.10.25</div>
<div class="lcomm__author flex-grow-1 ws-nowrap">Madmax91</div>
<div class="lcomm__date">02.11.25</div>
</div>
<div class="lcomm__text">Ich finde es auch Mega cool auch die Grafick seh schön</div>
<a class="lcomm__link ws-nowrap icon-at-left" href="https://megakino.ms/films/5713-demon-slayer-kimetsu-no-yaiba-infinity-castle-teil-1.html#comment"><span class="fal fa-arrow-circle-right"></span>Demon Slayer: Kimetsu no Yaiba Infinity Castle - Teil 1</a>
<div class="lcomm__text">Das Ende ist offen und mehr fragen als Antworten ! Wer war es denn jetzt</div>
<a class="lcomm__link ws-nowrap icon-at-left" href="https://w1.megakino.do/drama/5075-this-is-not-hollywood-staffel-1.html#comment"><span class="fal fa-arrow-circle-right"></span>This Is Not Hollywood - Staffel 1</a>
</div><div class="lcomm">
<div class="lcomm__meta d-flex ai-center">
<div class="lcomm__author flex-grow-1 ws-nowrap">Sung</div>
<div class="lcomm__date">19.10.25</div>
<div class="lcomm__author flex-grow-1 ws-nowrap">Christian</div>
<div class="lcomm__date">02.11.25</div>
</div>
<div class="lcomm__text">Geistes krank war der film richtig gut bin hyped auf part 2</div>
<a class="lcomm__link ws-nowrap icon-at-left" href="https://megakino.ms/films/5713-demon-slayer-kimetsu-no-yaiba-infinity-castle-teil-1.html#comment"><span class="fal fa-arrow-circle-right"></span>Demon Slayer: Kimetsu no Yaiba Infinity Castle - Teil 1</a>
<div class="lcomm__text">Hatte mir etwas mehr versprochen aber sonst war der Film in Ordnung</div>
<a class="lcomm__link ws-nowrap icon-at-left" href="https://w1.megakino.do/films/5817-dracula-die-auferstehung.html#comment"><span class="fal fa-arrow-circle-right"></span>Dracula - Die Auferstehung</a>
</div><div class="lcomm">
<div class="lcomm__meta d-flex ai-center">
<div class="lcomm__author flex-grow-1 ws-nowrap">Zebne</div>
<div class="lcomm__date">19.10.25</div>
<div class="lcomm__author flex-grow-1 ws-nowrap">emily</div>
<div class="lcomm__date">02.11.25</div>
</div>
<div class="lcomm__text">Einfach nur ein geiler film selbst im jahr 2025</div>
<a class="lcomm__link ws-nowrap icon-at-left" href="https://megakino.ms/horror/30-scream.html#comment"><span class="fal fa-arrow-circle-right"></span>Scream 5</a>
<div class="lcomm__text">toller und lustiger film auch die pinguine sind süß!!!</div>
<a class="lcomm__link ws-nowrap icon-at-left" href="https://w1.megakino.do/films/828-mr-poppers-pinguine.html#comment"><span class="fal fa-arrow-circle-right"></span>Mr. Poppers Pinguine</a>
</div>
</div>
</div>
@ -182,14 +180,14 @@
<div class="speedbar ws-nowrap">
<span itemscope itemtype="https://schema.org/BreadcrumbList"><span itemprop="itemListElement" itemscope itemtype="https://schema.org/ListItem"><meta itemprop="position" content="1"><a href="https://megakino.ms/" itemprop="item"><span itemprop="name">MEGAKino</span></a></span> <span itemprop="itemListElement" itemscope itemtype="https://schema.org/ListItem"><meta itemprop="position" content="2"><a href="https://megakino.ms/films/" itemprop="item"><span itemprop="name">Filme</span></a></span> The Lego Movie</span>
<span itemscope itemtype="https://schema.org/BreadcrumbList"><span itemprop="itemListElement" itemscope itemtype="https://schema.org/ListItem"><meta itemprop="position" content="1"><a href="https://w1.megakino.do/" itemprop="item"><span itemprop="name">MEGAKino</span></a></span> <span itemprop="itemListElement" itemscope itemtype="https://schema.org/ListItem"><meta itemprop="position" content="2"><a href="https://w1.megakino.do/films/" itemprop="item"><span itemprop="name">Filme</span></a></span> The Lego Movie</span>
</div>
<div id="dle-content"><article class="page ignore-select pmovie" itemscope itemtype="http://schema.org/Movie">
<meta itemprop="inLanguage" content="de">
<meta itemprop="countryOfOrigin" content="Denmark, United States of America">
<meta itemprop="image" content="https://megakino.ms/uploads/posts/2022-04/137106_poster_164993468kwn.webp">
<meta itemprop="image" content="https://w1.megakino.do/uploads/posts/2022-04/137106_poster_164993468kwn.webp">
<meta itemprop="name" content="The Lego Movie">
<meta itemprop="dateCreated" content="2022-03-11T13:07:59+03:00" />
@ -207,13 +205,13 @@
<header class="page__subcol-main flex-grow-1 d-flex fd-column">
<h1 itemprop="name">The Lego Movie</h1>
<div class="pmovie__original-title" itemprop="alternativeHeadline"> The Lego Movie</div>
<div class="pmovie__year"><span itemprop="countryOfOrigin">Denmark, United States of America</span>, <span itemprop="dateCreated"><a href="https://megakino.ms/xfsearch/release_date/2014/">2014</a></span>, 100 min</div>
<div class="pmovie__year"><span itemprop="countryOfOrigin">Denmark, United States of America</span>, <span itemprop="dateCreated"><a href="https://w1.megakino.do/xfsearch/release_date/2014/">2014</a></span>, 100 min</div>
<div class="pmovie__genres" itemprop="genre">Filme / Animation / Adventure / Comedy / Family / Fantasy</div>
<div class="pmovie__age order-first"><div>16+</div></div>
<div class="pmovie__complaint flex-grow-1"><a href="javascript:AddComplaint('727', 'news')">Fehler gefunden?</a></div>
<div class="pmovie__subinfo d-flex ai-center">
<div class="pmovie__subrating pmovie__subrating--kp"><img data-src="/templates/popcornie-dark/images/kp.svg" src="/templates/popcornie-dark/images/no-img.png" alt="">7.4</div>
<div class="pmovie__subrating pmovie__subrating--site"><img data-src="/templates/popcornie-dark/images/logo.svg" src="/templates/popcornie-dark/images/no-img.png" alt=""><div class="js-count-rating"><span id="ratig-layer-727"><span class="ratingtypeplusminus ratingplus" >+101</span></span><span id="vote-num-id-727">151</span></div></div>
<div class="pmovie__subrating pmovie__subrating--site"><img data-src="/templates/popcornie-dark/images/logo.svg" src="/templates/popcornie-dark/images/no-img.png" alt=""><div class="js-count-rating"><span id="ratig-layer-727"><span class="ratingtypeplusminus ratingplus" >+108</span></span><span id="vote-num-id-727">158</span></div></div>
<div class="pmovie__btn btn icon-at-left flex-grow-1 js-scroll-to">Stream Anschauen</div>
</div>
</header>
@ -223,11 +221,11 @@
<ul class="page__subcol-side2 pmovie__header-list">
<li>
<div>Director:</div>
<span itemprop="directors"><a href="https://megakino.ms/xfsearch/directors/Phil%20Lord/">Phil Lord</a>, <a href="https://megakino.ms/xfsearch/directors/Christopher%20Miller/">Christopher Miller</a></span>
<span itemprop="directors"><a href="https://w1.megakino.do/xfsearch/directors/Phil%20Lord/">Phil Lord</a>, <a href="https://w1.megakino.do/xfsearch/directors/Christopher%20Miller/">Christopher Miller</a></span>
</li>
<li>
<div>Stars:</div>
<span itemprop="actors"><a href="https://megakino.ms/xfsearch/cast/Chris%20Pratt/">Chris Pratt</a>, <a href="https://megakino.ms/xfsearch/cast/Will%20Ferrell/">Will Ferrell</a>, <a href="https://megakino.ms/xfsearch/cast/Elizabeth%20Banks/">Elizabeth Banks</a>, <a href="https://megakino.ms/xfsearch/cast/Will%20Arnett/">Will Arnett</a>, <a href="https://megakino.ms/xfsearch/cast/Nick%20Offerman/">Nick Offerman</a>, <a href="https://megakino.ms/xfsearch/cast/Alison%20Brie/">Alison Brie</a>, <a href="https://megakino.ms/xfsearch/cast/Charlie%20Day/">Charlie Day</a>, <a href="https://megakino.ms/xfsearch/cast/Liam%20Neeson/">Liam Neeson</a>, <a href="https://megakino.ms/xfsearch/cast/Morgan%20Freeman/">Morgan Freeman</a>, <a href="https://megakino.ms/xfsearch/cast/Channing%20Tatum/">Channing Tatum</a>, <a href="https://megakino.ms/xfsearch/cast/Jonah%20Hill/">Jonah Hill</a>, <a href="https://megakino.ms/xfsearch/cast/Cobie%20Smulders/">Cobie Smulders</a>, <a href="https://megakino.ms/xfsearch/cast/Jadon%20Sand/">Jadon Sand</a>, <a href="https://megakino.ms/xfsearch/cast/Anthony%20Daniels/">Anthony Daniels</a></span>
<span itemprop="actors"><a href="https://w1.megakino.do/xfsearch/cast/Chris%20Pratt/">Chris Pratt</a>, <a href="https://w1.megakino.do/xfsearch/cast/Will%20Ferrell/">Will Ferrell</a>, <a href="https://w1.megakino.do/xfsearch/cast/Elizabeth%20Banks/">Elizabeth Banks</a>, <a href="https://w1.megakino.do/xfsearch/cast/Will%20Arnett/">Will Arnett</a>, <a href="https://w1.megakino.do/xfsearch/cast/Nick%20Offerman/">Nick Offerman</a>, <a href="https://w1.megakino.do/xfsearch/cast/Alison%20Brie/">Alison Brie</a>, <a href="https://w1.megakino.do/xfsearch/cast/Charlie%20Day/">Charlie Day</a>, <a href="https://w1.megakino.do/xfsearch/cast/Liam%20Neeson/">Liam Neeson</a>, <a href="https://w1.megakino.do/xfsearch/cast/Morgan%20Freeman/">Morgan Freeman</a>, <a href="https://w1.megakino.do/xfsearch/cast/Channing%20Tatum/">Channing Tatum</a>, <a href="https://w1.megakino.do/xfsearch/cast/Jonah%20Hill/">Jonah Hill</a>, <a href="https://w1.megakino.do/xfsearch/cast/Cobie%20Smulders/">Cobie Smulders</a>, <a href="https://w1.megakino.do/xfsearch/cast/Jadon%20Sand/">Jadon Sand</a>, <a href="https://w1.megakino.do/xfsearch/cast/Anthony%20Daniels/">Anthony Daniels</a></span>
</li>
<li>
<div>Production:</div>
@ -291,7 +289,7 @@
<div class="tabs-block__content video-inside video-responsive">
<iframe id="film_main" data-src="https://voe.sx/e/9ln9fmz2pgru" scrolling="no" frameborder="0" allowfullscreen></iframe>
<iframe id="film_main" data-src="https://voe.sx/e/vquyrlvsvhqy" scrolling="no" frameborder="0" allowfullscreen></iframe>
</div>
@ -310,7 +308,7 @@
<div class="pmovie__player-bottom d-flex ai-center">
<div class="pmovie__rating-likes d-flex">
<a href="#" onclick="doRate('plus', '727'); return false;" ><span class="fal fa-thumbs-up"></span><span id="likes-id-727">126</span></a>
<a href="#" onclick="doRate('plus', '727'); return false;" ><span class="fal fa-thumbs-up"></span><span id="likes-id-727">133</span></a>
<a href="#" onclick="doRate('minus', '727'); return false;" ><span class="fal fa-thumbs-down"></span><span id="dislikes-id-727">25</span></a>
</div>
@ -331,7 +329,7 @@
<section class="sect pmovie__related">
<h2 class="sect__title sect__header">Empfohlene Einträge:</h2>
<div class="sect__content d-grid">
<a class="poster grid-item d-flex fd-column has-overlay" href="https://megakino.ms/films/702-the-lego-batman-movie.html">
<a class="poster grid-item d-flex fd-column has-overlay" href="https://w1.megakino.do/films/702-the-lego-batman-movie.html">
<div class="poster__img img-responsive img-responsive--portrait img-fit-cover">
<img data-src="/uploads/posts/2022-04/324849_posters_164988rckab1.webp" src="/templates/popcornie-dark/images/no-img.png" alt="The Lego Batman Movie">
<div class="has-overlay__mask btn-icon anim"><span class="fal fa-play"></span></div>
@ -344,7 +342,7 @@
</ul>
</div>
</a>
<a class="poster grid-item d-flex fd-column has-overlay" href="https://megakino.ms/films/241-batman-v-superman-dawn-of-justice.html">
<a class="poster grid-item d-flex fd-column has-overlay" href="https://w1.megakino.do/films/241-batman-v-superman-dawn-of-justice.html">
<div class="poster__img img-responsive img-responsive--portrait img-fit-cover">
<img data-src="/uploads/posts/2022-01/209112_poster_1642968jfkuz1.webp" src="/templates/popcornie-dark/images/no-img.png" alt="Batman v Superman: Dawn of Justice">
<div class="has-overlay__mask btn-icon anim"><span class="fal fa-play"></span></div>
@ -357,7 +355,7 @@
</ul>
</div>
</a>
<a class="poster grid-item d-flex fd-column has-overlay" href="https://megakino.ms/films/712-drachenzahmen-leicht-gemacht.html">
<a class="poster grid-item d-flex fd-column has-overlay" href="https://w1.megakino.do/films/712-drachenzahmen-leicht-gemacht.html">
<div class="poster__img img-responsive img-responsive--portrait img-fit-cover">
<img data-src="/uploads/posts/2022-04/10191_poster_16499331z9kdp.webp" src="/templates/popcornie-dark/images/no-img.png" alt="Drachenzähmen leicht gemacht">
<div class="has-overlay__mask btn-icon anim"><span class="fal fa-play"></span></div>
@ -370,7 +368,7 @@
</ul>
</div>
</a>
<a class="poster grid-item d-flex fd-column has-overlay" href="https://megakino.ms/films/668-die-tribute-von-panem-mockingjay-teil-1.html">
<a class="poster grid-item d-flex fd-column has-overlay" href="https://w1.megakino.do/films/668-die-tribute-von-panem-mockingjay-teil-1.html">
<div class="poster__img img-responsive img-responsive--portrait img-fit-cover">
<img data-src="/uploads/posts/2022-04/131631_poster_1649850t7j2e1.webp" src="/templates/popcornie-dark/images/no-img.png" alt="Die Tribute von Panem 3 - Mockingjay Teil 1">
<div class="has-overlay__mask btn-icon anim"><span class="fal fa-play"></span></div>
@ -383,7 +381,7 @@
</ul>
</div>
</a>
<a class="poster grid-item d-flex fd-column has-overlay" href="https://megakino.ms/films/1924-ramstein-das-durchstossene-herz.html">
<a class="poster grid-item d-flex fd-column has-overlay" href="https://w1.megakino.do/films/1924-ramstein-das-durchstossene-herz.html">
<div class="poster__img img-responsive img-responsive--portrait img-fit-cover">
<img data-src="/uploads/posts/2022-10/ramstein-das-durchstosene-herz.webp" src="/templates/popcornie-dark/images/no-img.png" alt="Ramstein - Das durchstoßene Herz">
<div class="has-overlay__mask btn-icon anim"><span class="fal fa-play"></span></div>
@ -439,7 +437,7 @@
</div>
<input type="hidden" name="subaction" value="addcomment">
<input type="hidden" name="post_id" id="post_id" value="727"><input type="hidden" name="user_hash" value="3b0870e460f86a4c69c332b1350cd140bb46cfb1"></form>
<input type="hidden" name="post_id" id="post_id" value="727"><input type="hidden" name="user_hash" value="799cdd3dcd495cd0e270f66359cc616f0ba2a4a9"></form>
<div class="page__comments-list page__comments-list--not-comments" id="page__comments-list">
<div class="message-info">Es gibt noch keine Kommentare. Willst du der Erste sein?</div>
@ -450,12 +448,12 @@
<div class="d-none" id="pmovie__trailer" title="Trailer">
<div class="pmovie__trailer video-responsive" itemprop="video" itemscope="" itemtype="http://schema.org/VideoObject">
<link itemprop="thumbnail" href="https://megakino.ms/uploads/posts/2022-04/137106_poster_164993468kwn.webp">
<link itemprop="thumbnail" href="https://w1.megakino.do/uploads/posts/2022-04/137106_poster_164993468kwn.webp">
<meta itemprop="description" content="Der gutmütige Emmet wird eines Tages von der abenteuerlustigen Wyldstyle entführt. Sie glaubt, in">
<meta itemprop="uploadDate" content="2022-03-11T13:07:59+03:00" />
<meta itemprop="datePublished" content="2022-03-11T13:07:59+03:00">
<link itemprop="embedUrl" href="https://www.youtube.com/embed/E8r3hx1xYLM">
<link itemprop="url" href="https://megakino.ms/films/727-the-lego-movie.html">
<link itemprop="url" href="https://w1.megakino.do/films/727-the-lego-movie.html">
<meta itemprop="isFamilyFriendly" content="true">
<meta itemprop="playerType" content="HTML5">
<meta itemprop="duration" content="PT3000S">
@ -574,7 +572,7 @@ X
<!--
var dle_root = '/';
var dle_admin = '';
var dle_login_hash = '3b0870e460f86a4c69c332b1350cd140bb46cfb1';
var dle_login_hash = '799cdd3dcd495cd0e270f66359cc616f0ba2a4a9';
var dle_group = 5;
var dle_skin = 'popcornie-dark';
var dle_wysiwyg = '-1';

View file

@ -6,8 +6,8 @@
<meta name="description" content="MegaKino Dein Streaming-Portal für die besten Filme und Serien! Entdecke aktuelle Blockbuster, Klassiker und Neuerscheinungen in HD-Qualität. Genieße Action, Drama, Komödien, Thriller, Sci-Fi und mehr jederzeit und überall.">
<meta name="keywords" content="Filme online, Filme streamen, kostenlose Filme, neue Filme 2024, Kinofilme, Serien online, beste Filme, Blockbuster, HD Filme, Streaming kostenlos, Actionfilme, Abenteuerfilme, Komödien, Krimis, Dramen, Fantasyfilme, Horrorfilme, Thriller, Romantikfilme, Sci-Fi Filme, Animationsfilme, Dokumentationen, Familienfilme, historische Filme, Kriegsfilme, Westernfilme, TV-Filme, MegaKino Streaming, Filme in HD, Filmgenres entdecken">
<meta name="generator" content="MegaKino">
<link rel="search" type="application/opensearchdescription+xml" href="https://megakino.ms/index.php?do=opensearch" title="MEGAKino - Filme und Serien Kostenlos in HD online anschauen auf Deutsch">
<link rel="alternate" type="application/rss+xml" title="MEGAKino - Filme und Serien Kostenlos in HD online anschauen auf Deutsch" href="https://megakino.ms/rss.xml">
<link rel="search" type="application/opensearchdescription+xml" href="https://w1.megakino.do/index.php?do=opensearch" title="MEGAKino - Filme und Serien Kostenlos in HD online anschauen auf Deutsch">
<link rel="alternate" type="application/rss+xml" title="MEGAKino - Filme und Serien Kostenlos in HD online anschauen auf Deutsch" href="https://w1.megakino.do/rss.xml">
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<meta name="theme-color" content="#303d4a">
<link rel="preload" href="/templates/popcornie-dark/css/common.css" as="style">
@ -31,18 +31,16 @@
<!-- Google tag (gtag.js) -->
<script async src="https://www.googletagmanager.com/gtag/js?id=G-H793N1N6RQ"></script>
<script async src="https://www.googletagmanager.com/gtag/js?id=G-P5NCB4S88V"></script>
<script>
window.dataLayer = window.dataLayer || [];
function gtag(){dataLayer.push(arguments);}
gtag('js', new Date());
gtag('config', 'G-H793N1N6RQ');
gtag('config', 'G-P5NCB4S88V');
</script>
</head>
<body>
@ -84,7 +82,7 @@
<div class="side-block js-this-in-mobile-menu">
<div class="side-block__title">Was interessiert Sie?</div>
<ul class="side-block__content side-block__menu" data-showitems="10" itemscope itemtype="http://schema.org/SiteNavigationElement">
<li><a href="https://megakino.ms/films/" itemprop="url"><font itemprop="name">Filme</font></a><span style="float: right">4832</span></li><li><a href="https://megakino.ms/kinofilme/" itemprop="url"><font itemprop="name">Kinofilme</font></a><span style="float: right">193</span></li><li><a href="https://megakino.ms/serials/" itemprop="url"><font itemprop="name">Serien</font></a><span style="float: right">827</span></li><li><a href="https://megakino.ms/multfilm/" itemprop="url"><font itemprop="name">Animation</font></a><span style="float: right">296</span></li><li><a href="https://megakino.ms/documentary/" itemprop="url"><font itemprop="name">Dokumentationen</font></a><span style="float: right">73</span></li>
<li><a href="https://w1.megakino.do/films/" itemprop="url"><font itemprop="name">Filme</font></a><span style="float: right">4892</span></li><li><a href="https://w1.megakino.do/kinofilme/" itemprop="url"><font itemprop="name">Kinofilme</font></a><span style="float: right">196</span></li><li><a href="https://w1.megakino.do/serials/" itemprop="url"><font itemprop="name">Serien</font></a><span style="float: right">842</span></li><li><a href="https://w1.megakino.do/multfilm/" itemprop="url"><font itemprop="name">Animation</font></a><span style="float: right">300</span></li><li><a href="https://w1.megakino.do/documentary/" itemprop="url"><font itemprop="name">Dokumentationen</font></a><span style="float: right">75</span></li>
</ul>
</div>
@ -93,27 +91,27 @@
<div class="side-block">
<div class="side-block__title">Sammlung</div>
<div class="side-block__content collection-scroll">
<a href="https://megakino.ms/collection/2092-die-besten-weihnachtsfilme.html" class="custom-collection">
<a href="https://w1.megakino.do/collection/2092-die-besten-weihnachtsfilme.html" class="custom-collection">
<div class="custom-collection-image"><img class="xfieldimage collection_cover" data-src="/uploads/posts/2022-12/merry.webp" alt=""></div>
<div class="custom-collection-title">Die besten Weihnachtsfilme</div>
</a>
<a href="https://megakino.ms/collection/412-batman-filme-die-komplette-chronologie.html" class="custom-collection">
<a href="https://w1.megakino.do/collection/412-batman-filme-die-komplette-chronologie.html" class="custom-collection">
<div class="custom-collection-image"><img class="xfieldimage collection_cover" data-src="/uploads/posts/2022-02/batman.webp" alt=""></div>
<div class="custom-collection-title">Batman Filme - Die Komplette Chronologie</div>
</a>
<a href="https://megakino.ms/collection/127-marvel-filme-chronologischer.html" class="custom-collection">
<a href="https://w1.megakino.do/collection/127-marvel-filme-chronologischer.html" class="custom-collection">
<div class="custom-collection-image"><img class="xfieldimage collection_cover" data-src="/uploads/posts/2022-01/mcu.webp" alt=""></div>
<div class="custom-collection-title">Marvel Filme - Die Komplette Chronologie</div>
</a>
<a href="https://megakino.ms/collection/181-harry-potter-die-komplette-chronologie.html" class="custom-collection">
<a href="https://w1.megakino.do/collection/181-harry-potter-die-komplette-chronologie.html" class="custom-collection">
<div class="custom-collection-image"><img class="xfieldimage collection_cover" data-src="/uploads/posts/2022-01/harry.webp" alt=""></div>
<div class="custom-collection-title">Harry Potter - Die Komplette Chronologie</div>
</a>
<a href="https://megakino.ms/collection/136-star-wars-die-komplette-chronologie.html" class="custom-collection">
<a href="https://w1.megakino.do/collection/136-star-wars-die-komplette-chronologie.html" class="custom-collection">
<div class="custom-collection-image"><img class="xfieldimage collection_cover" data-src="/uploads/posts/2022-01/starwars.webp" alt=""></div>
<div class="custom-collection-title">Star Wars Die Komplette Chronologie</div>
</a>
<a href="https://megakino.ms/collection/135-fast-and-furious-chronologischer.html" class="custom-collection">
<a href="https://w1.megakino.do/collection/135-fast-and-furious-chronologischer.html" class="custom-collection">
<div class="custom-collection-image"><img class="xfieldimage collection_cover" data-src="/uploads/posts/2022-01/forsag.webp" alt=""></div>
<div class="custom-collection-title">Fast and Furious - Die Komplette Chronologie</div>
</a>
@ -125,7 +123,7 @@
<div class="side-block js-this-in-mobile-menu">
<div class="side-block__title">Genres</div>
<ul class="side-block__content side-block__menu" data-showitems="10">
<li><a href="https://megakino.ms/multfilm/">Animation</a><span style="float: right">296</span></li><li><a href="https://megakino.ms/action/">Action</a><span style="float: right">1569</span></li><li><a href="https://megakino.ms/adventure/">Adventure</a><span style="float: right">894</span></li><li><a href="https://megakino.ms/comedy/">Comedy</a><span style="float: right">1636</span></li><li><a href="https://megakino.ms/crime/">Crime</a><span style="float: right">743</span></li><li><a href="https://megakino.ms/documentary/">Dokumentationen</a><span style="float: right">73</span></li><li><a href="https://megakino.ms/drama/">Drama</a><span style="float: right">2258</span></li><li><a href="https://megakino.ms/family/">Family</a><span style="float: right">477</span></li><li><a href="https://megakino.ms/fantasy/">Fantasy</a><span style="float: right">636</span></li><li><a href="https://megakino.ms/history/">History</a><span style="float: right">229</span></li><li><a href="https://megakino.ms/horror/">Horror</a><span style="float: right">825</span></li><li><a href="https://megakino.ms/music/">Music</a><span style="float: right">107</span></li><li><a href="https://megakino.ms/mystery/">Mystery</a><span style="float: right">383</span></li><li><a href="https://megakino.ms/romance/">Romance</a><span style="float: right">518</span></li><li><a href="https://megakino.ms/science-fiction/">Sci-Fi</a><span style="float: right">719</span></li><li><a href="https://megakino.ms/tv-movie/">TV Movie</a><span style="float: right">55</span></li><li><a href="https://megakino.ms/thriller/">Thriller</a><span style="float: right">1569</span></li><li><a href="https://megakino.ms/war/">War</a><span style="float: right">142</span></li><li><a href="https://megakino.ms/western/">Western</a><span style="float: right">83</span></li>
<li><a href="https://w1.megakino.do/multfilm/">Animation</a><span style="float: right">300</span></li><li><a href="https://w1.megakino.do/action/">Action</a><span style="float: right">1591</span></li><li><a href="https://w1.megakino.do/adventure/">Adventure</a><span style="float: right">903</span></li><li><a href="https://w1.megakino.do/comedy/">Comedy</a><span style="float: right">1651</span></li><li><a href="https://w1.megakino.do/crime/">Crime</a><span style="float: right">746</span></li><li><a href="https://w1.megakino.do/documentary/">Dokumentationen</a><span style="float: right">75</span></li><li><a href="https://w1.megakino.do/drama/">Drama</a><span style="float: right">2284</span></li><li><a href="https://w1.megakino.do/family/">Family</a><span style="float: right">480</span></li><li><a href="https://w1.megakino.do/fantasy/">Fantasy</a><span style="float: right">642</span></li><li><a href="https://w1.megakino.do/history/">History</a><span style="float: right">232</span></li><li><a href="https://w1.megakino.do/horror/">Horror</a><span style="float: right">839</span></li><li><a href="https://w1.megakino.do/music/">Music</a><span style="float: right">108</span></li><li><a href="https://w1.megakino.do/mystery/">Mystery</a><span style="float: right">388</span></li><li><a href="https://w1.megakino.do/romance/">Romance</a><span style="float: right">523</span></li><li><a href="https://w1.megakino.do/science-fiction/">Sci-Fi</a><span style="float: right">728</span></li><li><a href="https://w1.megakino.do/tv-movie/">TV Movie</a><span style="float: right">55</span></li><li><a href="https://w1.megakino.do/thriller/">Thriller</a><span style="float: right">1596</span></li><li><a href="https://w1.megakino.do/war/">War</a><span style="float: right">144</span></li><li><a href="https://w1.megakino.do/western/">Western</a><span style="float: right">85</span></li>
</ul>
@ -143,25 +141,25 @@
<div class="side-block__content">
<div class="lcomm">
<div class="lcomm__meta d-flex ai-center">
<div class="lcomm__author flex-grow-1 ws-nowrap">Eren</div>
<div class="lcomm__date">20.10.25</div>
<div class="lcomm__author flex-grow-1 ws-nowrap">Madmax91</div>
<div class="lcomm__date">02.11.25</div>
</div>
<div class="lcomm__text">Ich finde es auch Mega cool auch die Grafick seh schön</div>
<a class="lcomm__link ws-nowrap icon-at-left" href="https://megakino.ms/films/5713-demon-slayer-kimetsu-no-yaiba-infinity-castle-teil-1.html#comment"><span class="fal fa-arrow-circle-right"></span>Demon Slayer: Kimetsu no Yaiba Infinity Castle - Teil 1</a>
<div class="lcomm__text">Das Ende ist offen und mehr fragen als Antworten ! Wer war es denn jetzt</div>
<a class="lcomm__link ws-nowrap icon-at-left" href="https://w1.megakino.do/drama/5075-this-is-not-hollywood-staffel-1.html#comment"><span class="fal fa-arrow-circle-right"></span>This Is Not Hollywood - Staffel 1</a>
</div><div class="lcomm">
<div class="lcomm__meta d-flex ai-center">
<div class="lcomm__author flex-grow-1 ws-nowrap">Sung</div>
<div class="lcomm__date">19.10.25</div>
<div class="lcomm__author flex-grow-1 ws-nowrap">Christian</div>
<div class="lcomm__date">02.11.25</div>
</div>
<div class="lcomm__text">Geistes krank war der film richtig gut bin hyped auf part 2</div>
<a class="lcomm__link ws-nowrap icon-at-left" href="https://megakino.ms/films/5713-demon-slayer-kimetsu-no-yaiba-infinity-castle-teil-1.html#comment"><span class="fal fa-arrow-circle-right"></span>Demon Slayer: Kimetsu no Yaiba Infinity Castle - Teil 1</a>
<div class="lcomm__text">Hatte mir etwas mehr versprochen aber sonst war der Film in Ordnung</div>
<a class="lcomm__link ws-nowrap icon-at-left" href="https://w1.megakino.do/films/5817-dracula-die-auferstehung.html#comment"><span class="fal fa-arrow-circle-right"></span>Dracula - Die Auferstehung</a>
</div><div class="lcomm">
<div class="lcomm__meta d-flex ai-center">
<div class="lcomm__author flex-grow-1 ws-nowrap">Zebne</div>
<div class="lcomm__date">19.10.25</div>
<div class="lcomm__author flex-grow-1 ws-nowrap">emily</div>
<div class="lcomm__date">02.11.25</div>
</div>
<div class="lcomm__text">Einfach nur ein geiler film selbst im jahr 2025</div>
<a class="lcomm__link ws-nowrap icon-at-left" href="https://megakino.ms/horror/30-scream.html#comment"><span class="fal fa-arrow-circle-right"></span>Scream 5</a>
<div class="lcomm__text">toller und lustiger film auch die pinguine sind süß!!!</div>
<a class="lcomm__link ws-nowrap icon-at-left" href="https://w1.megakino.do/films/828-mr-poppers-pinguine.html#comment"><span class="fal fa-arrow-circle-right"></span>Mr. Poppers Pinguine</a>
</div>
</div>
</div>
@ -180,7 +178,7 @@
<div id="dle-content"><form name="fullsearch" id="fullsearch" action="https://megakino.ms/index.php?do=search" method="post">
<div id="dle-content"><form name="fullsearch" id="fullsearch" action="https://w1.megakino.do/index.php?do=search" method="post">
<input type="hidden" name="do" id="do" value="search" />
<input type="hidden" name="subaction" id="subaction" value="search" />
<input type="hidden" name="search_start" id="search_start" value="0" />
@ -313,7 +311,7 @@ X
<!--
var dle_root = '/';
var dle_admin = '';
var dle_login_hash = '3b0870e460f86a4c69c332b1350cd140bb46cfb1';
var dle_login_hash = '799cdd3dcd495cd0e270f66359cc616f0ba2a4a9';
var dle_group = 5;
var dle_skin = 'popcornie-dark';
var dle_wysiwyg = '-1';

View file

@ -6,8 +6,8 @@
<meta name="description" content="MegaKino Dein Streaming-Portal für die besten Filme und Serien! Entdecke aktuelle Blockbuster, Klassiker und Neuerscheinungen in HD-Qualität. Genieße Action, Drama, Komödien, Thriller, Sci-Fi und mehr jederzeit und überall.">
<meta name="keywords" content="Filme online, Filme streamen, kostenlose Filme, neue Filme 2024, Kinofilme, Serien online, beste Filme, Blockbuster, HD Filme, Streaming kostenlos, Actionfilme, Abenteuerfilme, Komödien, Krimis, Dramen, Fantasyfilme, Horrorfilme, Thriller, Romantikfilme, Sci-Fi Filme, Animationsfilme, Dokumentationen, Familienfilme, historische Filme, Kriegsfilme, Westernfilme, TV-Filme, MegaKino Streaming, Filme in HD, Filmgenres entdecken">
<meta name="generator" content="MegaKino">
<link rel="search" type="application/opensearchdescription+xml" href="https://megakino.ms/index.php?do=opensearch" title="MEGAKino - Filme und Serien Kostenlos in HD online anschauen auf Deutsch">
<link rel="alternate" type="application/rss+xml" title="MEGAKino - Filme und Serien Kostenlos in HD online anschauen auf Deutsch" href="https://megakino.ms/rss.xml">
<link rel="search" type="application/opensearchdescription+xml" href="https://w1.megakino.do/index.php?do=opensearch" title="MEGAKino - Filme und Serien Kostenlos in HD online anschauen auf Deutsch">
<link rel="alternate" type="application/rss+xml" title="MEGAKino - Filme und Serien Kostenlos in HD online anschauen auf Deutsch" href="https://w1.megakino.do/rss.xml">
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<meta name="theme-color" content="#303d4a">
<link rel="preload" href="/templates/popcornie-dark/css/common.css" as="style">
@ -31,18 +31,16 @@
<!-- Google tag (gtag.js) -->
<script async src="https://www.googletagmanager.com/gtag/js?id=G-H793N1N6RQ"></script>
<script async src="https://www.googletagmanager.com/gtag/js?id=G-P5NCB4S88V"></script>
<script>
window.dataLayer = window.dataLayer || [];
function gtag(){dataLayer.push(arguments);}
gtag('js', new Date());
gtag('config', 'G-H793N1N6RQ');
gtag('config', 'G-P5NCB4S88V');
</script>
</head>
<body>
@ -84,7 +82,7 @@
<div class="side-block js-this-in-mobile-menu">
<div class="side-block__title">Was interessiert Sie?</div>
<ul class="side-block__content side-block__menu" data-showitems="10" itemscope itemtype="http://schema.org/SiteNavigationElement">
<li><a href="https://megakino.ms/films/" itemprop="url"><font itemprop="name">Filme</font></a><span style="float: right">4832</span></li><li><a href="https://megakino.ms/kinofilme/" itemprop="url"><font itemprop="name">Kinofilme</font></a><span style="float: right">193</span></li><li><a href="https://megakino.ms/serials/" itemprop="url"><font itemprop="name">Serien</font></a><span style="float: right">827</span></li><li><a href="https://megakino.ms/multfilm/" itemprop="url"><font itemprop="name">Animation</font></a><span style="float: right">296</span></li><li><a href="https://megakino.ms/documentary/" itemprop="url"><font itemprop="name">Dokumentationen</font></a><span style="float: right">73</span></li>
<li><a href="https://w1.megakino.do/films/" itemprop="url"><font itemprop="name">Filme</font></a><span style="float: right">4892</span></li><li><a href="https://w1.megakino.do/kinofilme/" itemprop="url"><font itemprop="name">Kinofilme</font></a><span style="float: right">196</span></li><li><a href="https://w1.megakino.do/serials/" itemprop="url"><font itemprop="name">Serien</font></a><span style="float: right">842</span></li><li><a href="https://w1.megakino.do/multfilm/" itemprop="url"><font itemprop="name">Animation</font></a><span style="float: right">300</span></li><li><a href="https://w1.megakino.do/documentary/" itemprop="url"><font itemprop="name">Dokumentationen</font></a><span style="float: right">75</span></li>
</ul>
</div>
@ -93,27 +91,27 @@
<div class="side-block">
<div class="side-block__title">Sammlung</div>
<div class="side-block__content collection-scroll">
<a href="https://megakino.ms/collection/2092-die-besten-weihnachtsfilme.html" class="custom-collection">
<a href="https://w1.megakino.do/collection/2092-die-besten-weihnachtsfilme.html" class="custom-collection">
<div class="custom-collection-image"><img class="xfieldimage collection_cover" data-src="/uploads/posts/2022-12/merry.webp" alt=""></div>
<div class="custom-collection-title">Die besten Weihnachtsfilme</div>
</a>
<a href="https://megakino.ms/collection/412-batman-filme-die-komplette-chronologie.html" class="custom-collection">
<a href="https://w1.megakino.do/collection/412-batman-filme-die-komplette-chronologie.html" class="custom-collection">
<div class="custom-collection-image"><img class="xfieldimage collection_cover" data-src="/uploads/posts/2022-02/batman.webp" alt=""></div>
<div class="custom-collection-title">Batman Filme - Die Komplette Chronologie</div>
</a>
<a href="https://megakino.ms/collection/127-marvel-filme-chronologischer.html" class="custom-collection">
<a href="https://w1.megakino.do/collection/127-marvel-filme-chronologischer.html" class="custom-collection">
<div class="custom-collection-image"><img class="xfieldimage collection_cover" data-src="/uploads/posts/2022-01/mcu.webp" alt=""></div>
<div class="custom-collection-title">Marvel Filme - Die Komplette Chronologie</div>
</a>
<a href="https://megakino.ms/collection/181-harry-potter-die-komplette-chronologie.html" class="custom-collection">
<a href="https://w1.megakino.do/collection/181-harry-potter-die-komplette-chronologie.html" class="custom-collection">
<div class="custom-collection-image"><img class="xfieldimage collection_cover" data-src="/uploads/posts/2022-01/harry.webp" alt=""></div>
<div class="custom-collection-title">Harry Potter - Die Komplette Chronologie</div>
</a>
<a href="https://megakino.ms/collection/136-star-wars-die-komplette-chronologie.html" class="custom-collection">
<a href="https://w1.megakino.do/collection/136-star-wars-die-komplette-chronologie.html" class="custom-collection">
<div class="custom-collection-image"><img class="xfieldimage collection_cover" data-src="/uploads/posts/2022-01/starwars.webp" alt=""></div>
<div class="custom-collection-title">Star Wars Die Komplette Chronologie</div>
</a>
<a href="https://megakino.ms/collection/135-fast-and-furious-chronologischer.html" class="custom-collection">
<a href="https://w1.megakino.do/collection/135-fast-and-furious-chronologischer.html" class="custom-collection">
<div class="custom-collection-image"><img class="xfieldimage collection_cover" data-src="/uploads/posts/2022-01/forsag.webp" alt=""></div>
<div class="custom-collection-title">Fast and Furious - Die Komplette Chronologie</div>
</a>
@ -125,7 +123,7 @@
<div class="side-block js-this-in-mobile-menu">
<div class="side-block__title">Genres</div>
<ul class="side-block__content side-block__menu" data-showitems="10">
<li><a href="https://megakino.ms/multfilm/">Animation</a><span style="float: right">296</span></li><li><a href="https://megakino.ms/action/">Action</a><span style="float: right">1569</span></li><li><a href="https://megakino.ms/adventure/">Adventure</a><span style="float: right">894</span></li><li><a href="https://megakino.ms/comedy/">Comedy</a><span style="float: right">1636</span></li><li><a href="https://megakino.ms/crime/">Crime</a><span style="float: right">743</span></li><li><a href="https://megakino.ms/documentary/">Dokumentationen</a><span style="float: right">73</span></li><li><a href="https://megakino.ms/drama/">Drama</a><span style="float: right">2258</span></li><li><a href="https://megakino.ms/family/">Family</a><span style="float: right">477</span></li><li><a href="https://megakino.ms/fantasy/">Fantasy</a><span style="float: right">636</span></li><li><a href="https://megakino.ms/history/">History</a><span style="float: right">229</span></li><li><a href="https://megakino.ms/horror/">Horror</a><span style="float: right">825</span></li><li><a href="https://megakino.ms/music/">Music</a><span style="float: right">107</span></li><li><a href="https://megakino.ms/mystery/">Mystery</a><span style="float: right">383</span></li><li><a href="https://megakino.ms/romance/">Romance</a><span style="float: right">518</span></li><li><a href="https://megakino.ms/science-fiction/">Sci-Fi</a><span style="float: right">719</span></li><li><a href="https://megakino.ms/tv-movie/">TV Movie</a><span style="float: right">55</span></li><li><a href="https://megakino.ms/thriller/">Thriller</a><span style="float: right">1569</span></li><li><a href="https://megakino.ms/war/">War</a><span style="float: right">142</span></li><li><a href="https://megakino.ms/western/">Western</a><span style="float: right">83</span></li>
<li><a href="https://w1.megakino.do/multfilm/">Animation</a><span style="float: right">300</span></li><li><a href="https://w1.megakino.do/action/">Action</a><span style="float: right">1591</span></li><li><a href="https://w1.megakino.do/adventure/">Adventure</a><span style="float: right">903</span></li><li><a href="https://w1.megakino.do/comedy/">Comedy</a><span style="float: right">1651</span></li><li><a href="https://w1.megakino.do/crime/">Crime</a><span style="float: right">746</span></li><li><a href="https://w1.megakino.do/documentary/">Dokumentationen</a><span style="float: right">75</span></li><li><a href="https://w1.megakino.do/drama/">Drama</a><span style="float: right">2284</span></li><li><a href="https://w1.megakino.do/family/">Family</a><span style="float: right">480</span></li><li><a href="https://w1.megakino.do/fantasy/">Fantasy</a><span style="float: right">642</span></li><li><a href="https://w1.megakino.do/history/">History</a><span style="float: right">232</span></li><li><a href="https://w1.megakino.do/horror/">Horror</a><span style="float: right">839</span></li><li><a href="https://w1.megakino.do/music/">Music</a><span style="float: right">108</span></li><li><a href="https://w1.megakino.do/mystery/">Mystery</a><span style="float: right">388</span></li><li><a href="https://w1.megakino.do/romance/">Romance</a><span style="float: right">523</span></li><li><a href="https://w1.megakino.do/science-fiction/">Sci-Fi</a><span style="float: right">728</span></li><li><a href="https://w1.megakino.do/tv-movie/">TV Movie</a><span style="float: right">55</span></li><li><a href="https://w1.megakino.do/thriller/">Thriller</a><span style="float: right">1596</span></li><li><a href="https://w1.megakino.do/war/">War</a><span style="float: right">144</span></li><li><a href="https://w1.megakino.do/western/">Western</a><span style="float: right">85</span></li>
</ul>
@ -143,25 +141,25 @@
<div class="side-block__content">
<div class="lcomm">
<div class="lcomm__meta d-flex ai-center">
<div class="lcomm__author flex-grow-1 ws-nowrap">Eren</div>
<div class="lcomm__date">20.10.25</div>
<div class="lcomm__author flex-grow-1 ws-nowrap">Madmax91</div>
<div class="lcomm__date">02.11.25</div>
</div>
<div class="lcomm__text">Ich finde es auch Mega cool auch die Grafick seh schön</div>
<a class="lcomm__link ws-nowrap icon-at-left" href="https://megakino.ms/films/5713-demon-slayer-kimetsu-no-yaiba-infinity-castle-teil-1.html#comment"><span class="fal fa-arrow-circle-right"></span>Demon Slayer: Kimetsu no Yaiba Infinity Castle - Teil 1</a>
<div class="lcomm__text">Das Ende ist offen und mehr fragen als Antworten ! Wer war es denn jetzt</div>
<a class="lcomm__link ws-nowrap icon-at-left" href="https://w1.megakino.do/drama/5075-this-is-not-hollywood-staffel-1.html#comment"><span class="fal fa-arrow-circle-right"></span>This Is Not Hollywood - Staffel 1</a>
</div><div class="lcomm">
<div class="lcomm__meta d-flex ai-center">
<div class="lcomm__author flex-grow-1 ws-nowrap">Sung</div>
<div class="lcomm__date">19.10.25</div>
<div class="lcomm__author flex-grow-1 ws-nowrap">Christian</div>
<div class="lcomm__date">02.11.25</div>
</div>
<div class="lcomm__text">Geistes krank war der film richtig gut bin hyped auf part 2</div>
<a class="lcomm__link ws-nowrap icon-at-left" href="https://megakino.ms/films/5713-demon-slayer-kimetsu-no-yaiba-infinity-castle-teil-1.html#comment"><span class="fal fa-arrow-circle-right"></span>Demon Slayer: Kimetsu no Yaiba Infinity Castle - Teil 1</a>
<div class="lcomm__text">Hatte mir etwas mehr versprochen aber sonst war der Film in Ordnung</div>
<a class="lcomm__link ws-nowrap icon-at-left" href="https://w1.megakino.do/films/5817-dracula-die-auferstehung.html#comment"><span class="fal fa-arrow-circle-right"></span>Dracula - Die Auferstehung</a>
</div><div class="lcomm">
<div class="lcomm__meta d-flex ai-center">
<div class="lcomm__author flex-grow-1 ws-nowrap">Zebne</div>
<div class="lcomm__date">19.10.25</div>
<div class="lcomm__author flex-grow-1 ws-nowrap">emily</div>
<div class="lcomm__date">02.11.25</div>
</div>
<div class="lcomm__text">Einfach nur ein geiler film selbst im jahr 2025</div>
<a class="lcomm__link ws-nowrap icon-at-left" href="https://megakino.ms/horror/30-scream.html#comment"><span class="fal fa-arrow-circle-right"></span>Scream 5</a>
<div class="lcomm__text">toller und lustiger film auch die pinguine sind süß!!!</div>
<a class="lcomm__link ws-nowrap icon-at-left" href="https://w1.megakino.do/films/828-mr-poppers-pinguine.html#comment"><span class="fal fa-arrow-circle-right"></span>Mr. Poppers Pinguine</a>
</div>
</div>
</div>
@ -177,7 +175,7 @@
<div id="dle-content"><form name="fullsearch" id="fullsearch" action="https://megakino.ms/index.php?do=search" method="post">
<div id="dle-content"><form name="fullsearch" id="fullsearch" action="https://w1.megakino.do/index.php?do=search" method="post">
<input type="hidden" name="do" id="do" value="search" />
<input type="hidden" name="subaction" id="subaction" value="search" />
<input type="hidden" name="search_start" id="search_start" value="0" />
@ -239,7 +237,7 @@ function full_submit(prm){
</script>
</form>
<a class="poster grid-item d-flex fd-column has-overlay" href="https://megakino.ms/films/727-the-lego-movie.html">
<a class="poster grid-item d-flex fd-column has-overlay" href="https://w1.megakino.do/films/727-the-lego-movie.html">
<div class="poster__img img-responsive img-responsive--portrait img-fit-cover">
<img data-src="/uploads/posts/2022-04/137106_poster_164993468kwn.webp" src="/templates/popcornie-dark/images/no-img.png" alt="The Lego Movie">
<div class="poster__label">HD</div>
@ -332,7 +330,7 @@ X
<!--
var dle_root = '/';
var dle_admin = '';
var dle_login_hash = '3b0870e460f86a4c69c332b1350cd140bb46cfb1';
var dle_login_hash = '799cdd3dcd495cd0e270f66359cc616f0ba2a4a9';
var dle_group = 5;
var dle_skin = 'popcornie-dark';
var dle_wysiwyg = '-1';

View file

@ -6,8 +6,8 @@
<meta name="description" content="MegaKino Dein Streaming-Portal für die besten Filme und Serien! Entdecke aktuelle Blockbuster, Klassiker und Neuerscheinungen in HD-Qualität. Genieße Action, Drama, Komödien, Thriller, Sci-Fi und mehr jederzeit und überall.">
<meta name="keywords" content="Filme online, Filme streamen, kostenlose Filme, neue Filme 2024, Kinofilme, Serien online, beste Filme, Blockbuster, HD Filme, Streaming kostenlos, Actionfilme, Abenteuerfilme, Komödien, Krimis, Dramen, Fantasyfilme, Horrorfilme, Thriller, Romantikfilme, Sci-Fi Filme, Animationsfilme, Dokumentationen, Familienfilme, historische Filme, Kriegsfilme, Westernfilme, TV-Filme, MegaKino Streaming, Filme in HD, Filmgenres entdecken">
<meta name="generator" content="MegaKino">
<link rel="search" type="application/opensearchdescription+xml" href="https://megakino.ms/index.php?do=opensearch" title="MEGAKino - Filme und Serien Kostenlos in HD online anschauen auf Deutsch">
<link rel="alternate" type="application/rss+xml" title="MEGAKino - Filme und Serien Kostenlos in HD online anschauen auf Deutsch" href="https://megakino.ms/rss.xml">
<link rel="search" type="application/opensearchdescription+xml" href="https://w1.megakino.do/index.php?do=opensearch" title="MEGAKino - Filme und Serien Kostenlos in HD online anschauen auf Deutsch">
<link rel="alternate" type="application/rss+xml" title="MEGAKino - Filme und Serien Kostenlos in HD online anschauen auf Deutsch" href="https://w1.megakino.do/rss.xml">
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<meta name="theme-color" content="#303d4a">
<link rel="preload" href="/templates/popcornie-dark/css/common.css" as="style">
@ -31,18 +31,16 @@
<!-- Google tag (gtag.js) -->
<script async src="https://www.googletagmanager.com/gtag/js?id=G-H793N1N6RQ"></script>
<script async src="https://www.googletagmanager.com/gtag/js?id=G-P5NCB4S88V"></script>
<script>
window.dataLayer = window.dataLayer || [];
function gtag(){dataLayer.push(arguments);}
gtag('js', new Date());
gtag('config', 'G-H793N1N6RQ');
gtag('config', 'G-P5NCB4S88V');
</script>
</head>
<body>
@ -84,7 +82,7 @@
<div class="side-block js-this-in-mobile-menu">
<div class="side-block__title">Was interessiert Sie?</div>
<ul class="side-block__content side-block__menu" data-showitems="10" itemscope itemtype="http://schema.org/SiteNavigationElement">
<li><a href="https://megakino.ms/films/" itemprop="url"><font itemprop="name">Filme</font></a><span style="float: right">4832</span></li><li><a href="https://megakino.ms/kinofilme/" itemprop="url"><font itemprop="name">Kinofilme</font></a><span style="float: right">193</span></li><li><a href="https://megakino.ms/serials/" itemprop="url"><font itemprop="name">Serien</font></a><span style="float: right">827</span></li><li><a href="https://megakino.ms/multfilm/" itemprop="url"><font itemprop="name">Animation</font></a><span style="float: right">296</span></li><li><a href="https://megakino.ms/documentary/" itemprop="url"><font itemprop="name">Dokumentationen</font></a><span style="float: right">73</span></li>
<li><a href="https://w1.megakino.do/films/" itemprop="url"><font itemprop="name">Filme</font></a><span style="float: right">4892</span></li><li><a href="https://w1.megakino.do/kinofilme/" itemprop="url"><font itemprop="name">Kinofilme</font></a><span style="float: right">196</span></li><li><a href="https://w1.megakino.do/serials/" itemprop="url"><font itemprop="name">Serien</font></a><span style="float: right">842</span></li><li><a href="https://w1.megakino.do/multfilm/" itemprop="url"><font itemprop="name">Animation</font></a><span style="float: right">300</span></li><li><a href="https://w1.megakino.do/documentary/" itemprop="url"><font itemprop="name">Dokumentationen</font></a><span style="float: right">75</span></li>
</ul>
</div>
@ -93,27 +91,27 @@
<div class="side-block">
<div class="side-block__title">Sammlung</div>
<div class="side-block__content collection-scroll">
<a href="https://megakino.ms/collection/2092-die-besten-weihnachtsfilme.html" class="custom-collection">
<a href="https://w1.megakino.do/collection/2092-die-besten-weihnachtsfilme.html" class="custom-collection">
<div class="custom-collection-image"><img class="xfieldimage collection_cover" data-src="/uploads/posts/2022-12/merry.webp" alt=""></div>
<div class="custom-collection-title">Die besten Weihnachtsfilme</div>
</a>
<a href="https://megakino.ms/collection/412-batman-filme-die-komplette-chronologie.html" class="custom-collection">
<a href="https://w1.megakino.do/collection/412-batman-filme-die-komplette-chronologie.html" class="custom-collection">
<div class="custom-collection-image"><img class="xfieldimage collection_cover" data-src="/uploads/posts/2022-02/batman.webp" alt=""></div>
<div class="custom-collection-title">Batman Filme - Die Komplette Chronologie</div>
</a>
<a href="https://megakino.ms/collection/127-marvel-filme-chronologischer.html" class="custom-collection">
<a href="https://w1.megakino.do/collection/127-marvel-filme-chronologischer.html" class="custom-collection">
<div class="custom-collection-image"><img class="xfieldimage collection_cover" data-src="/uploads/posts/2022-01/mcu.webp" alt=""></div>
<div class="custom-collection-title">Marvel Filme - Die Komplette Chronologie</div>
</a>
<a href="https://megakino.ms/collection/181-harry-potter-die-komplette-chronologie.html" class="custom-collection">
<a href="https://w1.megakino.do/collection/181-harry-potter-die-komplette-chronologie.html" class="custom-collection">
<div class="custom-collection-image"><img class="xfieldimage collection_cover" data-src="/uploads/posts/2022-01/harry.webp" alt=""></div>
<div class="custom-collection-title">Harry Potter - Die Komplette Chronologie</div>
</a>
<a href="https://megakino.ms/collection/136-star-wars-die-komplette-chronologie.html" class="custom-collection">
<a href="https://w1.megakino.do/collection/136-star-wars-die-komplette-chronologie.html" class="custom-collection">
<div class="custom-collection-image"><img class="xfieldimage collection_cover" data-src="/uploads/posts/2022-01/starwars.webp" alt=""></div>
<div class="custom-collection-title">Star Wars Die Komplette Chronologie</div>
</a>
<a href="https://megakino.ms/collection/135-fast-and-furious-chronologischer.html" class="custom-collection">
<a href="https://w1.megakino.do/collection/135-fast-and-furious-chronologischer.html" class="custom-collection">
<div class="custom-collection-image"><img class="xfieldimage collection_cover" data-src="/uploads/posts/2022-01/forsag.webp" alt=""></div>
<div class="custom-collection-title">Fast and Furious - Die Komplette Chronologie</div>
</a>
@ -125,7 +123,7 @@
<div class="side-block js-this-in-mobile-menu">
<div class="side-block__title">Genres</div>
<ul class="side-block__content side-block__menu" data-showitems="10">
<li><a href="https://megakino.ms/multfilm/">Animation</a><span style="float: right">296</span></li><li><a href="https://megakino.ms/action/">Action</a><span style="float: right">1569</span></li><li><a href="https://megakino.ms/adventure/">Adventure</a><span style="float: right">894</span></li><li><a href="https://megakino.ms/comedy/">Comedy</a><span style="float: right">1636</span></li><li><a href="https://megakino.ms/crime/">Crime</a><span style="float: right">743</span></li><li><a href="https://megakino.ms/documentary/">Dokumentationen</a><span style="float: right">73</span></li><li><a href="https://megakino.ms/drama/">Drama</a><span style="float: right">2258</span></li><li><a href="https://megakino.ms/family/">Family</a><span style="float: right">477</span></li><li><a href="https://megakino.ms/fantasy/">Fantasy</a><span style="float: right">636</span></li><li><a href="https://megakino.ms/history/">History</a><span style="float: right">229</span></li><li><a href="https://megakino.ms/horror/">Horror</a><span style="float: right">825</span></li><li><a href="https://megakino.ms/music/">Music</a><span style="float: right">107</span></li><li><a href="https://megakino.ms/mystery/">Mystery</a><span style="float: right">383</span></li><li><a href="https://megakino.ms/romance/">Romance</a><span style="float: right">518</span></li><li><a href="https://megakino.ms/science-fiction/">Sci-Fi</a><span style="float: right">719</span></li><li><a href="https://megakino.ms/tv-movie/">TV Movie</a><span style="float: right">55</span></li><li><a href="https://megakino.ms/thriller/">Thriller</a><span style="float: right">1569</span></li><li><a href="https://megakino.ms/war/">War</a><span style="float: right">142</span></li><li><a href="https://megakino.ms/western/">Western</a><span style="float: right">83</span></li>
<li><a href="https://w1.megakino.do/multfilm/">Animation</a><span style="float: right">300</span></li><li><a href="https://w1.megakino.do/action/">Action</a><span style="float: right">1591</span></li><li><a href="https://w1.megakino.do/adventure/">Adventure</a><span style="float: right">903</span></li><li><a href="https://w1.megakino.do/comedy/">Comedy</a><span style="float: right">1651</span></li><li><a href="https://w1.megakino.do/crime/">Crime</a><span style="float: right">746</span></li><li><a href="https://w1.megakino.do/documentary/">Dokumentationen</a><span style="float: right">75</span></li><li><a href="https://w1.megakino.do/drama/">Drama</a><span style="float: right">2284</span></li><li><a href="https://w1.megakino.do/family/">Family</a><span style="float: right">480</span></li><li><a href="https://w1.megakino.do/fantasy/">Fantasy</a><span style="float: right">642</span></li><li><a href="https://w1.megakino.do/history/">History</a><span style="float: right">232</span></li><li><a href="https://w1.megakino.do/horror/">Horror</a><span style="float: right">839</span></li><li><a href="https://w1.megakino.do/music/">Music</a><span style="float: right">108</span></li><li><a href="https://w1.megakino.do/mystery/">Mystery</a><span style="float: right">388</span></li><li><a href="https://w1.megakino.do/romance/">Romance</a><span style="float: right">523</span></li><li><a href="https://w1.megakino.do/science-fiction/">Sci-Fi</a><span style="float: right">728</span></li><li><a href="https://w1.megakino.do/tv-movie/">TV Movie</a><span style="float: right">55</span></li><li><a href="https://w1.megakino.do/thriller/">Thriller</a><span style="float: right">1596</span></li><li><a href="https://w1.megakino.do/war/">War</a><span style="float: right">144</span></li><li><a href="https://w1.megakino.do/western/">Western</a><span style="float: right">85</span></li>
</ul>
@ -143,25 +141,25 @@
<div class="side-block__content">
<div class="lcomm">
<div class="lcomm__meta d-flex ai-center">
<div class="lcomm__author flex-grow-1 ws-nowrap">Eren</div>
<div class="lcomm__date">20.10.25</div>
<div class="lcomm__author flex-grow-1 ws-nowrap">Madmax91</div>
<div class="lcomm__date">02.11.25</div>
</div>
<div class="lcomm__text">Ich finde es auch Mega cool auch die Grafick seh schön</div>
<a class="lcomm__link ws-nowrap icon-at-left" href="https://megakino.ms/films/5713-demon-slayer-kimetsu-no-yaiba-infinity-castle-teil-1.html#comment"><span class="fal fa-arrow-circle-right"></span>Demon Slayer: Kimetsu no Yaiba Infinity Castle - Teil 1</a>
<div class="lcomm__text">Das Ende ist offen und mehr fragen als Antworten ! Wer war es denn jetzt</div>
<a class="lcomm__link ws-nowrap icon-at-left" href="https://w1.megakino.do/drama/5075-this-is-not-hollywood-staffel-1.html#comment"><span class="fal fa-arrow-circle-right"></span>This Is Not Hollywood - Staffel 1</a>
</div><div class="lcomm">
<div class="lcomm__meta d-flex ai-center">
<div class="lcomm__author flex-grow-1 ws-nowrap">Sung</div>
<div class="lcomm__date">19.10.25</div>
<div class="lcomm__author flex-grow-1 ws-nowrap">Christian</div>
<div class="lcomm__date">02.11.25</div>
</div>
<div class="lcomm__text">Geistes krank war der film richtig gut bin hyped auf part 2</div>
<a class="lcomm__link ws-nowrap icon-at-left" href="https://megakino.ms/films/5713-demon-slayer-kimetsu-no-yaiba-infinity-castle-teil-1.html#comment"><span class="fal fa-arrow-circle-right"></span>Demon Slayer: Kimetsu no Yaiba Infinity Castle - Teil 1</a>
<div class="lcomm__text">Hatte mir etwas mehr versprochen aber sonst war der Film in Ordnung</div>
<a class="lcomm__link ws-nowrap icon-at-left" href="https://w1.megakino.do/films/5817-dracula-die-auferstehung.html#comment"><span class="fal fa-arrow-circle-right"></span>Dracula - Die Auferstehung</a>
</div><div class="lcomm">
<div class="lcomm__meta d-flex ai-center">
<div class="lcomm__author flex-grow-1 ws-nowrap">Zebne</div>
<div class="lcomm__date">19.10.25</div>
<div class="lcomm__author flex-grow-1 ws-nowrap">emily</div>
<div class="lcomm__date">02.11.25</div>
</div>
<div class="lcomm__text">Einfach nur ein geiler film selbst im jahr 2025</div>
<a class="lcomm__link ws-nowrap icon-at-left" href="https://megakino.ms/horror/30-scream.html#comment"><span class="fal fa-arrow-circle-right"></span>Scream 5</a>
<div class="lcomm__text">toller und lustiger film auch die pinguine sind süß!!!</div>
<a class="lcomm__link ws-nowrap icon-at-left" href="https://w1.megakino.do/films/828-mr-poppers-pinguine.html#comment"><span class="fal fa-arrow-circle-right"></span>Mr. Poppers Pinguine</a>
</div>
</div>
</div>
@ -177,7 +175,7 @@
<div id="dle-content"><form name="fullsearch" id="fullsearch" action="https://megakino.ms/index.php?do=search" method="post">
<div id="dle-content"><form name="fullsearch" id="fullsearch" action="https://w1.megakino.do/index.php?do=search" method="post">
<input type="hidden" name="do" id="do" value="search" />
<input type="hidden" name="subaction" id="subaction" value="search" />
<input type="hidden" name="search_start" id="search_start" value="0" />
@ -239,7 +237,7 @@ function full_submit(prm){
</script>
</form>
<a class="poster grid-item d-flex fd-column has-overlay" href="https://megakino.ms/films/693-baymax-riesiges-robowabohu.html">
<a class="poster grid-item d-flex fd-column has-overlay" href="https://w1.megakino.do/films/693-baymax-riesiges-robowabohu.html">
<div class="poster__img img-responsive img-responsive--portrait img-fit-cover">
<img data-src="/uploads/posts/2022-04/177572_poster_1649884uqk2f1.webp" src="/templates/popcornie-dark/images/no-img.png" alt="Baymax - Riesiges Robowabohu">
<div class="poster__label">HD</div>
@ -332,7 +330,7 @@ X
<!--
var dle_root = '/';
var dle_admin = '';
var dle_login_hash = '3b0870e460f86a4c69c332b1350cd140bb46cfb1';
var dle_login_hash = '799cdd3dcd495cd0e270f66359cc616f0ba2a4a9';
var dle_group = 5;
var dle_skin = 'popcornie-dark';
var dle_wysiwyg = '-1';

View file

@ -6,8 +6,8 @@
<meta name="description" content="MegaKino Dein Streaming-Portal für die besten Filme und Serien! Entdecke aktuelle Blockbuster, Klassiker und Neuerscheinungen in HD-Qualität. Genieße Action, Drama, Komödien, Thriller, Sci-Fi und mehr jederzeit und überall.">
<meta name="keywords" content="Filme online, Filme streamen, kostenlose Filme, neue Filme 2024, Kinofilme, Serien online, beste Filme, Blockbuster, HD Filme, Streaming kostenlos, Actionfilme, Abenteuerfilme, Komödien, Krimis, Dramen, Fantasyfilme, Horrorfilme, Thriller, Romantikfilme, Sci-Fi Filme, Animationsfilme, Dokumentationen, Familienfilme, historische Filme, Kriegsfilme, Westernfilme, TV-Filme, MegaKino Streaming, Filme in HD, Filmgenres entdecken">
<meta name="generator" content="MegaKino">
<link rel="search" type="application/opensearchdescription+xml" href="https://megakino.ms/index.php?do=opensearch" title="MEGAKino - Filme und Serien Kostenlos in HD online anschauen auf Deutsch">
<link rel="alternate" type="application/rss+xml" title="MEGAKino - Filme und Serien Kostenlos in HD online anschauen auf Deutsch" href="https://megakino.ms/rss.xml">
<link rel="search" type="application/opensearchdescription+xml" href="https://w1.megakino.do/index.php?do=opensearch" title="MEGAKino - Filme und Serien Kostenlos in HD online anschauen auf Deutsch">
<link rel="alternate" type="application/rss+xml" title="MEGAKino - Filme und Serien Kostenlos in HD online anschauen auf Deutsch" href="https://w1.megakino.do/rss.xml">
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<meta name="theme-color" content="#303d4a">
<link rel="preload" href="/templates/popcornie-dark/css/common.css" as="style">
@ -31,18 +31,16 @@
<!-- Google tag (gtag.js) -->
<script async src="https://www.googletagmanager.com/gtag/js?id=G-H793N1N6RQ"></script>
<script async src="https://www.googletagmanager.com/gtag/js?id=G-P5NCB4S88V"></script>
<script>
window.dataLayer = window.dataLayer || [];
function gtag(){dataLayer.push(arguments);}
gtag('js', new Date());
gtag('config', 'G-H793N1N6RQ');
gtag('config', 'G-P5NCB4S88V');
</script>
</head>
<body>
@ -84,7 +82,7 @@
<div class="side-block js-this-in-mobile-menu">
<div class="side-block__title">Was interessiert Sie?</div>
<ul class="side-block__content side-block__menu" data-showitems="10" itemscope itemtype="http://schema.org/SiteNavigationElement">
<li><a href="https://megakino.ms/films/" itemprop="url"><font itemprop="name">Filme</font></a><span style="float: right">4832</span></li><li><a href="https://megakino.ms/kinofilme/" itemprop="url"><font itemprop="name">Kinofilme</font></a><span style="float: right">193</span></li><li><a href="https://megakino.ms/serials/" itemprop="url"><font itemprop="name">Serien</font></a><span style="float: right">827</span></li><li><a href="https://megakino.ms/multfilm/" itemprop="url"><font itemprop="name">Animation</font></a><span style="float: right">296</span></li><li><a href="https://megakino.ms/documentary/" itemprop="url"><font itemprop="name">Dokumentationen</font></a><span style="float: right">73</span></li>
<li><a href="https://w1.megakino.do/films/" itemprop="url"><font itemprop="name">Filme</font></a><span style="float: right">4892</span></li><li><a href="https://w1.megakino.do/kinofilme/" itemprop="url"><font itemprop="name">Kinofilme</font></a><span style="float: right">196</span></li><li><a href="https://w1.megakino.do/serials/" itemprop="url"><font itemprop="name">Serien</font></a><span style="float: right">842</span></li><li><a href="https://w1.megakino.do/multfilm/" itemprop="url"><font itemprop="name">Animation</font></a><span style="float: right">300</span></li><li><a href="https://w1.megakino.do/documentary/" itemprop="url"><font itemprop="name">Dokumentationen</font></a><span style="float: right">75</span></li>
</ul>
</div>
@ -93,27 +91,27 @@
<div class="side-block">
<div class="side-block__title">Sammlung</div>
<div class="side-block__content collection-scroll">
<a href="https://megakino.ms/collection/2092-die-besten-weihnachtsfilme.html" class="custom-collection">
<a href="https://w1.megakino.do/collection/2092-die-besten-weihnachtsfilme.html" class="custom-collection">
<div class="custom-collection-image"><img class="xfieldimage collection_cover" data-src="/uploads/posts/2022-12/merry.webp" alt=""></div>
<div class="custom-collection-title">Die besten Weihnachtsfilme</div>
</a>
<a href="https://megakino.ms/collection/412-batman-filme-die-komplette-chronologie.html" class="custom-collection">
<a href="https://w1.megakino.do/collection/412-batman-filme-die-komplette-chronologie.html" class="custom-collection">
<div class="custom-collection-image"><img class="xfieldimage collection_cover" data-src="/uploads/posts/2022-02/batman.webp" alt=""></div>
<div class="custom-collection-title">Batman Filme - Die Komplette Chronologie</div>
</a>
<a href="https://megakino.ms/collection/127-marvel-filme-chronologischer.html" class="custom-collection">
<a href="https://w1.megakino.do/collection/127-marvel-filme-chronologischer.html" class="custom-collection">
<div class="custom-collection-image"><img class="xfieldimage collection_cover" data-src="/uploads/posts/2022-01/mcu.webp" alt=""></div>
<div class="custom-collection-title">Marvel Filme - Die Komplette Chronologie</div>
</a>
<a href="https://megakino.ms/collection/181-harry-potter-die-komplette-chronologie.html" class="custom-collection">
<a href="https://w1.megakino.do/collection/181-harry-potter-die-komplette-chronologie.html" class="custom-collection">
<div class="custom-collection-image"><img class="xfieldimage collection_cover" data-src="/uploads/posts/2022-01/harry.webp" alt=""></div>
<div class="custom-collection-title">Harry Potter - Die Komplette Chronologie</div>
</a>
<a href="https://megakino.ms/collection/136-star-wars-die-komplette-chronologie.html" class="custom-collection">
<a href="https://w1.megakino.do/collection/136-star-wars-die-komplette-chronologie.html" class="custom-collection">
<div class="custom-collection-image"><img class="xfieldimage collection_cover" data-src="/uploads/posts/2022-01/starwars.webp" alt=""></div>
<div class="custom-collection-title">Star Wars Die Komplette Chronologie</div>
</a>
<a href="https://megakino.ms/collection/135-fast-and-furious-chronologischer.html" class="custom-collection">
<a href="https://w1.megakino.do/collection/135-fast-and-furious-chronologischer.html" class="custom-collection">
<div class="custom-collection-image"><img class="xfieldimage collection_cover" data-src="/uploads/posts/2022-01/forsag.webp" alt=""></div>
<div class="custom-collection-title">Fast and Furious - Die Komplette Chronologie</div>
</a>
@ -125,7 +123,7 @@
<div class="side-block js-this-in-mobile-menu">
<div class="side-block__title">Genres</div>
<ul class="side-block__content side-block__menu" data-showitems="10">
<li><a href="https://megakino.ms/multfilm/">Animation</a><span style="float: right">296</span></li><li><a href="https://megakino.ms/action/">Action</a><span style="float: right">1569</span></li><li><a href="https://megakino.ms/adventure/">Adventure</a><span style="float: right">894</span></li><li><a href="https://megakino.ms/comedy/">Comedy</a><span style="float: right">1636</span></li><li><a href="https://megakino.ms/crime/">Crime</a><span style="float: right">743</span></li><li><a href="https://megakino.ms/documentary/">Dokumentationen</a><span style="float: right">73</span></li><li><a href="https://megakino.ms/drama/">Drama</a><span style="float: right">2258</span></li><li><a href="https://megakino.ms/family/">Family</a><span style="float: right">477</span></li><li><a href="https://megakino.ms/fantasy/">Fantasy</a><span style="float: right">636</span></li><li><a href="https://megakino.ms/history/">History</a><span style="float: right">229</span></li><li><a href="https://megakino.ms/horror/">Horror</a><span style="float: right">825</span></li><li><a href="https://megakino.ms/music/">Music</a><span style="float: right">107</span></li><li><a href="https://megakino.ms/mystery/">Mystery</a><span style="float: right">383</span></li><li><a href="https://megakino.ms/romance/">Romance</a><span style="float: right">518</span></li><li><a href="https://megakino.ms/science-fiction/">Sci-Fi</a><span style="float: right">719</span></li><li><a href="https://megakino.ms/tv-movie/">TV Movie</a><span style="float: right">55</span></li><li><a href="https://megakino.ms/thriller/">Thriller</a><span style="float: right">1569</span></li><li><a href="https://megakino.ms/war/">War</a><span style="float: right">142</span></li><li><a href="https://megakino.ms/western/">Western</a><span style="float: right">83</span></li>
<li><a href="https://w1.megakino.do/multfilm/">Animation</a><span style="float: right">300</span></li><li><a href="https://w1.megakino.do/action/">Action</a><span style="float: right">1591</span></li><li><a href="https://w1.megakino.do/adventure/">Adventure</a><span style="float: right">903</span></li><li><a href="https://w1.megakino.do/comedy/">Comedy</a><span style="float: right">1651</span></li><li><a href="https://w1.megakino.do/crime/">Crime</a><span style="float: right">746</span></li><li><a href="https://w1.megakino.do/documentary/">Dokumentationen</a><span style="float: right">75</span></li><li><a href="https://w1.megakino.do/drama/">Drama</a><span style="float: right">2284</span></li><li><a href="https://w1.megakino.do/family/">Family</a><span style="float: right">480</span></li><li><a href="https://w1.megakino.do/fantasy/">Fantasy</a><span style="float: right">642</span></li><li><a href="https://w1.megakino.do/history/">History</a><span style="float: right">232</span></li><li><a href="https://w1.megakino.do/horror/">Horror</a><span style="float: right">839</span></li><li><a href="https://w1.megakino.do/music/">Music</a><span style="float: right">108</span></li><li><a href="https://w1.megakino.do/mystery/">Mystery</a><span style="float: right">388</span></li><li><a href="https://w1.megakino.do/romance/">Romance</a><span style="float: right">523</span></li><li><a href="https://w1.megakino.do/science-fiction/">Sci-Fi</a><span style="float: right">728</span></li><li><a href="https://w1.megakino.do/tv-movie/">TV Movie</a><span style="float: right">55</span></li><li><a href="https://w1.megakino.do/thriller/">Thriller</a><span style="float: right">1596</span></li><li><a href="https://w1.megakino.do/war/">War</a><span style="float: right">144</span></li><li><a href="https://w1.megakino.do/western/">Western</a><span style="float: right">85</span></li>
</ul>
@ -143,25 +141,25 @@
<div class="side-block__content">
<div class="lcomm">
<div class="lcomm__meta d-flex ai-center">
<div class="lcomm__author flex-grow-1 ws-nowrap">Eren</div>
<div class="lcomm__date">20.10.25</div>
<div class="lcomm__author flex-grow-1 ws-nowrap">Madmax91</div>
<div class="lcomm__date">02.11.25</div>
</div>
<div class="lcomm__text">Ich finde es auch Mega cool auch die Grafick seh schön</div>
<a class="lcomm__link ws-nowrap icon-at-left" href="https://megakino.ms/films/5713-demon-slayer-kimetsu-no-yaiba-infinity-castle-teil-1.html#comment"><span class="fal fa-arrow-circle-right"></span>Demon Slayer: Kimetsu no Yaiba Infinity Castle - Teil 1</a>
<div class="lcomm__text">Das Ende ist offen und mehr fragen als Antworten ! Wer war es denn jetzt</div>
<a class="lcomm__link ws-nowrap icon-at-left" href="https://w1.megakino.do/drama/5075-this-is-not-hollywood-staffel-1.html#comment"><span class="fal fa-arrow-circle-right"></span>This Is Not Hollywood - Staffel 1</a>
</div><div class="lcomm">
<div class="lcomm__meta d-flex ai-center">
<div class="lcomm__author flex-grow-1 ws-nowrap">Sung</div>
<div class="lcomm__date">19.10.25</div>
<div class="lcomm__author flex-grow-1 ws-nowrap">Christian</div>
<div class="lcomm__date">02.11.25</div>
</div>
<div class="lcomm__text">Geistes krank war der film richtig gut bin hyped auf part 2</div>
<a class="lcomm__link ws-nowrap icon-at-left" href="https://megakino.ms/films/5713-demon-slayer-kimetsu-no-yaiba-infinity-castle-teil-1.html#comment"><span class="fal fa-arrow-circle-right"></span>Demon Slayer: Kimetsu no Yaiba Infinity Castle - Teil 1</a>
<div class="lcomm__text">Hatte mir etwas mehr versprochen aber sonst war der Film in Ordnung</div>
<a class="lcomm__link ws-nowrap icon-at-left" href="https://w1.megakino.do/films/5817-dracula-die-auferstehung.html#comment"><span class="fal fa-arrow-circle-right"></span>Dracula - Die Auferstehung</a>
</div><div class="lcomm">
<div class="lcomm__meta d-flex ai-center">
<div class="lcomm__author flex-grow-1 ws-nowrap">Zebne</div>
<div class="lcomm__date">19.10.25</div>
<div class="lcomm__author flex-grow-1 ws-nowrap">emily</div>
<div class="lcomm__date">02.11.25</div>
</div>
<div class="lcomm__text">Einfach nur ein geiler film selbst im jahr 2025</div>
<a class="lcomm__link ws-nowrap icon-at-left" href="https://megakino.ms/horror/30-scream.html#comment"><span class="fal fa-arrow-circle-right"></span>Scream 5</a>
<div class="lcomm__text">toller und lustiger film auch die pinguine sind süß!!!</div>
<a class="lcomm__link ws-nowrap icon-at-left" href="https://w1.megakino.do/films/828-mr-poppers-pinguine.html#comment"><span class="fal fa-arrow-circle-right"></span>Mr. Poppers Pinguine</a>
</div>
</div>
</div>
@ -177,7 +175,7 @@
<div id="dle-content"><form name="fullsearch" id="fullsearch" action="https://megakino.ms/index.php?do=search" method="post">
<div id="dle-content"><form name="fullsearch" id="fullsearch" action="https://w1.megakino.do/index.php?do=search" method="post">
<input type="hidden" name="do" id="do" value="search" />
<input type="hidden" name="subaction" id="subaction" value="search" />
<input type="hidden" name="search_start" id="search_start" value="0" />
@ -239,7 +237,7 @@ function full_submit(prm){
</script>
</form>
<a class="poster grid-item d-flex fd-column has-overlay" href="https://megakino.ms/adventure/4804-the-lego-movie-2.html">
<a class="poster grid-item d-flex fd-column has-overlay" href="https://w1.megakino.do/adventure/4804-the-lego-movie-2.html">
<div class="poster__img img-responsive img-responsive--portrait img-fit-cover">
<img data-src="/uploads/posts/2024-10/4977526_jpg-c_310_420_x-f_jpg-q_x-xxyxx.webp" src="/templates/popcornie-dark/images/no-img.png" alt="The LEGO Movie 2">
<div class="poster__label">HD</div>
@ -332,7 +330,7 @@ X
<!--
var dle_root = '/';
var dle_admin = '';
var dle_login_hash = '3b0870e460f86a4c69c332b1350cd140bb46cfb1';
var dle_login_hash = '799cdd3dcd495cd0e270f66359cc616f0ba2a4a9';
var dle_group = 5;
var dle_skin = 'popcornie-dark';
var dle_wysiwyg = '-1';

View file

@ -7,7 +7,7 @@ exports[`Frembed handle battle royal 1`] = `
"countryCodes": [
"fr",
],
"referer": "https://frembed.mom",
"referer": "https://frembed.my",
"title": "Battle Royale",
},
"url": "https://dsvplay.com/e/gtenfs0rffzq",
@ -17,7 +17,7 @@ exports[`Frembed handle battle royal 1`] = `
"countryCodes": [
"fr",
],
"referer": "https://frembed.mom",
"referer": "https://frembed.my",
"title": "Battle Royale",
},
"url": "https://netu.fremtv.lol/e/p0QUHavRbQD0",
@ -27,17 +27,17 @@ exports[`Frembed handle battle royal 1`] = `
"countryCodes": [
"fr",
],
"referer": "https://frembed.mom",
"referer": "https://frembed.my",
"title": "Battle Royale",
},
"url": "https://jilliandescribecompany.com/e/lbeqm6ofmauq",
"url": "https://christopheruntilpoint.com/e/lbeqm6ofmauq",
},
{
"meta": {
"countryCodes": [
"fr",
],
"referer": "https://frembed.mom",
"referer": "https://frembed.my",
"title": "Battle Royale",
},
"url": "https://video.streamtales.cc/player/frvod.php?url=https://streamtales.cc:8443/videos/3176.mp4",
@ -47,7 +47,7 @@ exports[`Frembed handle battle royal 1`] = `
"countryCodes": [
"fr",
],
"referer": "https://frembed.mom",
"referer": "https://frembed.my",
"title": "Battle Royale",
},
"url": "https://uqload.cx/embed-pnxmokgrigu9.html",
@ -62,7 +62,7 @@ exports[`Frembed handle imdb black mirror s4e2 1`] = `
"countryCodes": [
"fr",
],
"referer": "https://frembed.mom",
"referer": "https://frembed.my",
"title": "Black Mirror 4x2",
},
"url": "https://dsvplay.com/e/dfx8me4un4ul",
@ -72,7 +72,7 @@ exports[`Frembed handle imdb black mirror s4e2 1`] = `
"countryCodes": [
"fr",
],
"referer": "https://frembed.mom",
"referer": "https://frembed.my",
"title": "Black Mirror 4x2",
},
"url": "https://netu.fremtv.lol/e/0DFgfkcXOsDP",
@ -82,17 +82,17 @@ exports[`Frembed handle imdb black mirror s4e2 1`] = `
"countryCodes": [
"fr",
],
"referer": "https://frembed.mom",
"referer": "https://frembed.my",
"title": "Black Mirror 4x2",
},
"url": "https://jilliandescribecompany.com/e/cqy9oue7sv0g",
"url": "https://christopheruntilpoint.com/e/cqy9oue7sv0g",
},
{
"meta": {
"countryCodes": [
"fr",
],
"referer": "https://frembed.mom",
"referer": "https://frembed.my",
"title": "Black Mirror 4x2",
},
"url": "https://ds2play.com/e/fzfvfq3ngig0",
@ -107,7 +107,7 @@ exports[`Frembed handle tmdb black mirror s4e2 1`] = `
"countryCodes": [
"fr",
],
"referer": "https://frembed.mom",
"referer": "https://frembed.my",
"title": "Black Mirror 4x2",
},
"url": "https://dsvplay.com/e/dfx8me4un4ul",
@ -117,7 +117,7 @@ exports[`Frembed handle tmdb black mirror s4e2 1`] = `
"countryCodes": [
"fr",
],
"referer": "https://frembed.mom",
"referer": "https://frembed.my",
"title": "Black Mirror 4x2",
},
"url": "https://netu.fremtv.lol/e/0DFgfkcXOsDP",
@ -127,17 +127,17 @@ exports[`Frembed handle tmdb black mirror s4e2 1`] = `
"countryCodes": [
"fr",
],
"referer": "https://frembed.mom",
"referer": "https://frembed.my",
"title": "Black Mirror 4x2",
},
"url": "https://jilliandescribecompany.com/e/cqy9oue7sv0g",
"url": "https://christopheruntilpoint.com/e/cqy9oue7sv0g",
},
{
"meta": {
"countryCodes": [
"fr",
],
"referer": "https://frembed.mom",
"referer": "https://frembed.my",
"title": "Black Mirror 4x2",
},
"url": "https://ds2play.com/e/fzfvfq3ngig0",

View file

@ -7,7 +7,7 @@ exports[`MegaKino handle imdb baymax 1`] = `
"countryCodes": [
"de",
],
"referer": "https://megakino.ms/films/693-baymax-riesiges-robowabohu.html",
"referer": "https://w1.megakino.do/films/693-baymax-riesiges-robowabohu.html",
"title": "Baymax - Riesiges Robowabohu",
},
"url": "https://voe.sx/e/8doq7gwiwtig",
@ -17,7 +17,7 @@ exports[`MegaKino handle imdb baymax 1`] = `
"countryCodes": [
"de",
],
"referer": "https://megakino.ms/films/693-baymax-riesiges-robowabohu.html",
"referer": "https://w1.megakino.do/films/693-baymax-riesiges-robowabohu.html",
"title": "Baymax - Riesiges Robowabohu",
},
"url": "https://watch.gxplayer.xyz/watch?v=MEKI92PU",
@ -32,7 +32,7 @@ exports[`MegaKino lego movie 2 2019 1`] = `
"countryCodes": [
"de",
],
"referer": "https://megakino.ms/adventure/4804-the-lego-movie-2.html",
"referer": "https://w1.megakino.do/adventure/4804-the-lego-movie-2.html",
"title": "The LEGO Movie 2",
},
"url": "https://voe.sx/e/gkd0hqdinrex",
@ -47,17 +47,17 @@ exports[`MegaKino lego movie 2014 1`] = `
"countryCodes": [
"de",
],
"referer": "https://megakino.ms/films/727-the-lego-movie.html",
"referer": "https://w1.megakino.do/films/727-the-lego-movie.html",
"title": "The Lego Movie",
},
"url": "https://voe.sx/e/9ln9fmz2pgru",
"url": "https://voe.sx/e/vquyrlvsvhqy",
},
{
"meta": {
"countryCodes": [
"de",
],
"referer": "https://megakino.ms/films/727-the-lego-movie.html",
"referer": "https://w1.megakino.do/films/727-the-lego-movie.html",
"title": "The Lego Movie",
},
"url": "https://watch.gxplayer.xyz/watch?v=XE0LK8H7",

View file

@ -1,293 +0,0 @@
import { MockAgent, setGlobalDispatcher } from 'undici';
import winston from 'winston';
import { BlockedError, HttpError, NotFoundError, QueueIsFullError, TimeoutError, TooManyRequestsError, TooManyTimeoutsError } from '../error';
import { createTestContext } from '../test';
import { BlockedReason } from '../types';
import { Fetcher } from './Fetcher';
let mockAgent: MockAgent;
const fetcher = new Fetcher(winston.createLogger({ transports: [new winston.transports.Console({ level: 'nope' })] }));
describe('fetch', () => {
const ctx = { ...createTestContext(), ip: '0.0.0.0' };
beforeEach(() => {
mockAgent = new MockAgent({ enableCallHistory: true });
mockAgent.disableNetConnect();
setGlobalDispatcher(mockAgent);
});
test('fetch', async () => {
const mockPool = mockAgent.get('https://some-fetch-url.test');
mockPool.intercept({ path: '/' }).reply(200, 'some text');
expect(await fetcher.fetch(ctx, new URL('https://some-fetch-url.test/'))).toStrictEqual({
body: 'some text',
headers: { age: '0', date: 'Wed, 11 Apr 1990 12:34:56 GMT' },
status: 200,
statusText: 'OK',
ttl: 900000,
url: 'https://some-fetch-url.test/',
});
});
test('text passes successful response through setting headers', async () => {
const mockPool = mockAgent.get('https://some-url.test');
mockPool.intercept({ path: '/' }).reply(200, 'some text');
const responseText1 = await fetcher.text(ctx, new URL('https://user:pass@some-url.test/'));
const responseText2 = await fetcher.text(ctx, new URL('https://user:pass@some-url.test/'), { headers: { 'User-Agent': 'jest' } });
expect(responseText1).toBe('some text');
expect(responseText2).toStrictEqual(responseText1);
expect(mockAgent.getCallHistory()?.firstCall()?.headers).toMatchObject({
'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
'Accept-Language': 'en',
'Authorization': 'Basic dXNlcjpwYXNz',
'Forwarded': 'by=unknown;for=0.0.0.0;host=some-url.test;proto=https',
'Priority': 'u=0',
'User-Agent': 'node',
'X-Forwarded-For': '0.0.0.0',
'X-Forwarded-Host': 'some-url.test',
'X-Forwarded-Proto': 'https',
'X-Real-IP': '0.0.0.0',
});
});
test('textPost ', async () => {
const mockPool = mockAgent.get('https://some-post-url.test');
mockPool.intercept({ path: '/', method: 'POST' }).reply(200, 'some text');
expect(await fetcher.textPost(ctx, new URL('https://some-post-url.test/'), JSON.stringify({ foo: 'bar' }))).toBe('some text');
});
test('head', async () => {
const mockPool = mockAgent.get('https://some-head-url.test');
mockPool.intercept({ path: '/', method: 'HEAD' }).reply(200, 'some text', { headers: { 'X-Fake-Response': 'foo' } });
expect(await fetcher.head(ctx, new URL('https://some-head-url.test/'))).toMatchObject({ 'x-fake-response': 'foo' });
});
test('converts 404 to custom NotFoundError', async () => {
const mockPool = mockAgent.get('https://some-404-url.test');
mockPool.intercept({ path: '/' }).reply(404);
await expect(fetcher.text(ctx, new URL('https://some-404-url.test/'))).rejects.toBeInstanceOf(NotFoundError);
});
test('converts Cloudflare challenge block to custom BlockedError', async () => {
const mockPool = mockAgent.get('https://some-cloudflare-url.test');
mockPool.intercept({ path: '/' }).reply(403, undefined, { headers: { 'cf-mitigated': 'challenge' } });
try {
await fetcher.text(ctx, new URL('https://some-cloudflare-url.test/'));
fail();
} catch (error) {
expect(error).toBeInstanceOf(BlockedError);
expect(error).toMatchObject({ reason: BlockedReason.cloudflare_challenge });
}
});
test('uses FlareSolverr to solve Cloudflare challenge if configured and succeeds', async () => {
process.env['FLARESOLVERR_ENDPOINT'] = 'http://localhost:8191/v1/x';
const mockPool = mockAgent.get('https://some-cloudflare-flaresolverr-success-url.test');
mockPool.intercept({ path: '/' }).reply(403, undefined, { headers: { 'cf-mitigated': 'challenge' } });
const mockPool2 = mockAgent.get('http://localhost:8191');
mockPool2.intercept({ path: '/v1/x', method: 'POST' }).reply(
200,
{
status: 'ok',
solution: {
response: 'some response',
cookies: [
{
name: 'cf_clearance',
value: 'some_value',
expires: Date.now() / 1000 + 12345,
domain: 'some-cloudflare-flaresolverr-success-url.test',
},
{
name: 'irrelevant',
value: 'some_other_value',
expires: Date.now() / 1000 + 12345,
domain: 'some-other.domain',
},
],
userAgent: 'user agent that works',
},
},
);
const response = await fetcher.text(ctx, new URL('https://some-cloudflare-flaresolverr-success-url.test/'));
expect(response).toBe('some response');
// The next request has to use the cookie and user agent we got
mockPool.intercept({ path: '/' }).reply(200, 'some response');
await fetcher.text(ctx, new URL('https://some-cloudflare-flaresolverr-success-url.test/'));
expect(mockAgent.getCallHistory()?.calls()[2]?.headers).toMatchObject({
'Cookie': 'cf_clearance=some_value',
'User-Agent': 'user agent that works',
});
delete process.env['FLARESOLVERR_ENDPOINT'];
});
test('uses FlareSolverr to solve Cloudflare challenge if configured and fails with custom BlockedError', async () => {
process.env['FLARESOLVERR_ENDPOINT'] = 'http://localhost:8191/v1/y';
const mockPool = mockAgent.get('https://some-cloudflare-flaresolverr-fail-url.test');
mockPool.intercept({ path: '/' }).reply(403, undefined, { headers: { 'cf-mitigated': 'challenge' } });
const mockPool2 = mockAgent.get('http://localhost:8191');
mockPool2.intercept({ path: '/v1/y', method: 'POST' }).reply(200, { status: 'nok' });
try {
await fetcher.text(ctx, new URL('https://some-cloudflare-flaresolverr-fail-url.test/'));
fail();
} catch (error) {
expect(error).toBeInstanceOf(BlockedError);
expect(error).toMatchObject({ reason: BlockedReason.flaresolverr_failed });
}
delete process.env['FLARESOLVERR_ENDPOINT'];
});
test('converts generic forbidden to custom BlockedError', async () => {
const mockPool = mockAgent.get('https://some-forbidden-url.test');
mockPool.intercept({ path: '/' }).reply(403);
try {
await fetcher.text(ctx, new URL('https://some-forbidden-url.test/'));
fail();
} catch (error) {
expect(error).toBeInstanceOf(BlockedError);
expect(error).toMatchObject({ reason: BlockedReason.unknown });
}
});
test('converts cloudflare 451 to custom BlockedError', async () => {
const mockPool = mockAgent.get('https://some-cloudflare-forbidden-url.test');
mockPool.intercept({ path: '/' }).reply(451);
try {
await fetcher.text(ctx, new URL('https://some-cloudflare-forbidden-url.test/'));
fail();
} catch (error) {
expect(error).toBeInstanceOf(BlockedError);
expect(error).toMatchObject({ reason: BlockedReason.cloudflare_censor });
}
});
test('converts MediaFlow Proxy forbidden to custom BlockedError', async () => {
const mockPool = mockAgent.get('https://media-flow-proxy-forbidden-url.test');
mockPool.intercept({ path: '/' }).reply(403);
try {
await fetcher.text(createTestContext({ mediaFlowProxyUrl: 'https://media-flow-proxy-forbidden-url.test/' }), new URL('https://media-flow-proxy-forbidden-url.test/'));
fail();
} catch (error) {
expect(error).toBeInstanceOf(BlockedError);
expect(error).toMatchObject({ reason: BlockedReason.media_flow_proxy_auth });
}
});
test('converts 429 to custom TooManyRequestsError', async () => {
const mockPool = mockAgent.get('https://some-rate-limited-url.test');
mockPool.intercept({ path: '/' }).reply(429);
try {
await fetcher.text(ctx, new URL('https://some-rate-limited-url.test/'));
fail();
} catch (error) {
expect(error).toBeInstanceOf(TooManyRequestsError);
expect(error).toMatchObject({ retryAfter: NaN });
}
});
test('converts 429 to custom TooManyRequestsError and blocks consecutive requests', async () => {
const mockPool = mockAgent.get('https://some-rate-limited-retry-after-url.test');
mockPool.intercept({ path: '/' }).reply(429, undefined, { headers: { 'retry-after': '60' } });
mockPool.intercept({ path: '/' }).reply(200);
try {
await fetcher.text(ctx, new URL('https://some-rate-limited-retry-after-url.test/'));
fail();
} catch (error) {
expect(error).toBeInstanceOf(TooManyRequestsError);
expect(error).toMatchObject({ retryAfter: 60 });
}
try {
await fetcher.text(ctx, new URL('https://some-rate-limited-retry-after-url.test/'));
fail();
} catch (error) {
expect(error).toBeInstanceOf(TooManyRequestsError);
}
});
test('retries rate limits with short ttl', async () => {
const mockPool = mockAgent.get('https://some-rate-limited-retry-after-short-url.test');
mockPool.intercept({ path: '/' }).reply(429, undefined, { headers: { 'retry-after': '1' } });
mockPool.intercept({ path: '/' }).reply(200);
const responseText = await fetcher.text(ctx, new URL('https://some-rate-limited-retry-after-short-url.test/'));
expect(responseText).toBe('');
});
test('passes through other error as HttpError after retrying 3 times', async () => {
const mockPool = mockAgent.get('https://some-error-url.test');
mockPool.intercept({ path: '/' }).reply(503, undefined, { headers: { 'x-foo': 'bar' } }).times(4);
try {
await fetcher.text(ctx, new URL('https://some-error-url.test/'));
fail();
} catch (error) {
expect(error).toBeInstanceOf(HttpError);
expect(error).toMatchObject({ status: 503, headers: { 'x-foo': 'bar' } });
}
});
test('passes through exceptions', async () => {
const mockPool = mockAgent.get('https://some-error-url.test');
mockPool.intercept({ path: '/' }).replyWithError((new TypeError('Failed to fetch')));
await expect(fetcher.text(ctx, new URL('https://some-exception-url.test/'))).rejects.toBeInstanceOf(TypeError);
});
test('times out, retries and times out again', async () => {
const mockPool = mockAgent.get('https://some-timeout-url.test');
mockPool.intercept({ path: '/' }).reply(200).delay(20).persist();
await expect(fetcher.text(ctx, new URL('https://some-timeout-url.test/'), { timeout: 10 })).rejects.toBeInstanceOf(TimeoutError);
});
test('queues requests and throws if queue is full', async () => {
const mockPool = mockAgent.get('https://some-full-queue-url.test');
mockPool.intercept({ path: '/' }).reply(200).delay(20).persist();
const allPromises = Promise.all([
fetcher.text(ctx, new URL('https://some-full-queue-url.test/'), { queueLimit: 1, queueTimeout: 10 }),
fetcher.text(ctx, new URL('https://some-full-queue-url.test/'), { queueLimit: 1, queueTimeout: 10 }),
fetcher.text(ctx, new URL('https://some-full-queue-url.test/'), { queueLimit: 1, queueTimeout: 10 }),
fetcher.text(ctx, new URL('https://some-full-queue-url.test/'), { queueLimit: 1, queueTimeout: 10 }),
fetcher.text(ctx, new URL('https://some-full-queue-url.test/'), { queueLimit: 1, queueTimeout: 10 }),
]);
await expect(allPromises).rejects.toBeInstanceOf(QueueIsFullError);
});
test('throws if too many recent requests timed-out', async () => {
const mockPool = mockAgent.get('https://too-many-recent-timeouts-url.test');
mockPool.intercept({ path: '/' }).reply(200).delay(20).persist();
await expect(fetcher.text(ctx, new URL('https://too-many-recent-timeouts-url.test/'), { timeout: 10, timeoutsCountThrow: 2 })).rejects.toBeInstanceOf(TimeoutError);
await expect(fetcher.text(ctx, new URL('https://too-many-recent-timeouts-url.test/'), { timeout: 10, timeoutsCountThrow: 2 })).rejects.toBeInstanceOf(TimeoutError);
await expect(fetcher.text(ctx, new URL('https://too-many-recent-timeouts-url.test/'), { timeout: 10, timeoutsCountThrow: 2 })).rejects.toBeInstanceOf(TooManyTimeoutsError);
});
test('stats returns something', async () => {
const stats = fetcher.stats();
expect(stats).toHaveProperty('httpCache');
expect(stats.httpCache).toBeTruthy();
});
});

View file

@ -1,24 +1,17 @@
import { gunzipSync, gzipSync } from 'zlib';
/* istanbul ignore file */
import { Mutex, Semaphore, SemaphoreInterface, withTimeout } from 'async-mutex';
import { AxiosError, AxiosInstance, AxiosRequestConfig, AxiosResponse } from 'axios';
import { Cacheable, CacheableMemory, Keyv } from 'cacheable';
import CachePolicy from 'http-cache-semantics';
import { HttpProxyAgent } from 'http-proxy-agent';
import { HttpsProxyAgent } from 'https-proxy-agent';
import { minimatch } from 'minimatch';
import { SocksProxyAgent } from 'socks-proxy-agent';
import { Cookie, CookieJar } from 'tough-cookie';
import { fetch, Headers, RequestInit, Response } from 'undici';
import winston from 'winston';
import { BlockedError, HttpError, NotFoundError, QueueIsFullError, TimeoutError, TooManyRequestsError, TooManyTimeoutsError } from '../error';
import { BlockedReason, Context } from '../types';
import { getProxyAgent, getProxyForUrl } from './dispatcher';
import { envGet } from './env';
export interface HttpCacheItem {
body: string;
headers: CachePolicy.Headers;
status: number;
statusText: string;
ttl: number;
url: string;
}
interface FlareSolverrResult {
status: string;
message: string;
@ -44,11 +37,8 @@ interface FlareSolverrResult {
version: string;
}
export type CustomRequestInit = RequestInit & {
export type CustomRequestConfig = AxiosRequestConfig & {
minCacheTtl?: number;
noCache?: boolean;
noFlareSolverr?: boolean;
noProxyHeaders?: boolean;
queueLimit?: number;
queueTimeout?: number;
timeout?: number;
@ -56,7 +46,6 @@ export type CustomRequestInit = RequestInit & {
};
export class Fetcher {
private readonly MIN_CACHE_TTL = 900000; // 15m
private readonly DEFAULT_TIMEOUT = 10000;
private readonly DEFAULT_QUEUE_LIMIT = 10;
private readonly DEFAULT_QUEUE_TIMEOUT = 10000;
@ -64,13 +53,11 @@ export class Fetcher {
private readonly TIMEOUT_CACHE_TTL = 3600000; // 1h
private readonly MAX_WAIT_RETRY_AFTER = 10000;
private readonly axios: AxiosInstance;
private readonly logger: winston.Logger;
private readonly httpCache = new Cacheable({
primary: new Keyv({ store: new CacheableMemory({ lruSize: 1024 }) }),
stats: true,
});
// eslint-disable-next-line @typescript-eslint/no-explicit-any
private readonly proxyAgents = new Map<string, Record<'httpAgent' | 'httpsAgent', any>>();
private readonly rateLimitedCache = new Cacheable({ primary: new Keyv({ store: new CacheableMemory({ lruSize: 1024 }) }) });
private readonly semaphores = new Map<string, SemaphoreInterface>();
private readonly hostUserAgentMap = new Map<string, string>();
@ -79,92 +66,160 @@ export class Fetcher {
private readonly timeoutsCountCache = new Cacheable({ primary: new Keyv({ store: new CacheableMemory({ lruSize: 1024 }) }) });
private readonly timeoutsCountMutex = new Mutex();
public constructor(logger: winston.Logger) {
public constructor(axios: AxiosInstance, logger: winston.Logger) {
this.axios = axios;
this.logger = logger;
}
public stats() {
return {
httpCache: this.httpCache.stats,
};
return {};
};
public async fetch(ctx: Context, url: URL, init?: CustomRequestInit): Promise<HttpCacheItem> {
return await this.cachedFetch(ctx, url, init);
public async fetch(ctx: Context, url: URL, requestConfig?: CustomRequestConfig): Promise<AxiosResponse> {
return await this.queuedFetch(ctx, url, requestConfig);
};
public async text(ctx: Context, url: URL, init?: CustomRequestInit): Promise<string> {
return (await this.cachedFetch(ctx, url, init)).body;
public async text(ctx: Context, url: URL, requestConfig?: CustomRequestConfig): Promise<string> {
return (await this.queuedFetch(ctx, url, requestConfig)).data;
};
public async textPost(ctx: Context, url: URL, body: string, init?: CustomRequestInit): Promise<string> {
return (await this.cachedFetch(ctx, url, { ...init, method: 'POST', body })).body;
public async textPost(ctx: Context, url: URL, data: string, requestConfig?: CustomRequestConfig): Promise<string> {
return (await this.queuedFetch(ctx, url, { ...requestConfig, method: 'POST', data })).data;
};
public async head(ctx: Context, url: URL, init?: CustomRequestInit): Promise<CachePolicy.Headers> {
return (await this.cachedFetch(ctx, url, { ...init, method: 'HEAD' })).headers;
public async head(ctx: Context, url: URL, requestConfig?: CustomRequestConfig): Promise<AxiosResponse['headers']> {
return (await this.queuedFetch(ctx, url, { ...requestConfig, method: 'HEAD' })).headers;
};
// eslint-disable-next-line @typescript-eslint/no-explicit-any
public async json(ctx: Context, url: URL, init?: CustomRequestInit): Promise<any> {
const jsonInit = {
public async json(ctx: Context, url: URL, requestConfig?: CustomRequestConfig): Promise<any> {
const jsonRequestConfig = {
headers: {
Accept: 'application/json,text/plain,*/*',
},
...init,
...requestConfig,
};
return JSON.parse(await this.text(ctx, url, jsonInit));
return JSON.parse(await this.text(ctx, url, jsonRequestConfig));
}
private getInit(ctx: Context, url: URL, init?: CustomRequestInit): CustomRequestInit {
const cookieString = this.cookieJar.getCookieStringSync(url.href);
const noProxyHeaders = init?.noProxyHeaders ?? false;
protected async fetchWithTimeout(ctx: Context, url: URL, requestConfig?: CustomRequestConfig, tryCount = 0): Promise<AxiosResponse> {
const proxyUrl = this.getProxyForUrl(url);
const forwardedProto = url.protocol.slice(0, -1);
let message = `Fetch ${requestConfig?.method ?? 'GET'} ${url}`;
/* istanbul ignore if */
if (requestConfig?.headers && requestConfig?.headers['Referer']) {
message += ' with referer ' + requestConfig?.headers['Referer'];
}
/* istanbul ignore if */
if (proxyUrl) {
message += ' via proxy ' + proxyUrl;
}
this.logger.info(message, ctx);
return {
...init,
headers: {
'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
'Accept-Language': 'en',
...(url.username && { Authorization: 'Basic ' + Buffer.from(`${url.username}:${url.password}`).toString('base64') }),
'Priority': 'u=0',
'User-Agent': this.hostUserAgentMap.get(url.host) ?? 'node',
...(cookieString && { Cookie: cookieString }),
...(ctx.ip && !noProxyHeaders && {
'Forwarded': `by=unknown;for=${ctx.ip};host=${url.host};proto=${forwardedProto}`,
'X-Forwarded-For': ctx.ip,
'X-Forwarded-Host': url.host,
'X-Forwarded-Proto': forwardedProto,
'X-Real-IP': ctx.ip,
}),
...init?.headers,
},
};
};
const isRateLimitedRaw = await this.rateLimitedCache.getRaw<true>(url.host);
/* istanbul ignore if */
if (isRateLimitedRaw && isRateLimitedRaw.value && isRateLimitedRaw.expires) {
const ttl = isRateLimitedRaw.expires - Date.now();
if (ttl <= this.MAX_WAIT_RETRY_AFTER && tryCount < 1) {
this.logger.info(`Wait out rate limit for ${url}`, ctx);
private async handleHttpCacheItem(ctx: Context, httpCacheItem: HttpCacheItem, url: URL, init?: CustomRequestInit): Promise<HttpCacheItem> {
const triggeredCloudflareTurnstile = httpCacheItem.body.includes('cf-turnstile');
await this.sleep(ttl);
if (httpCacheItem.status && httpCacheItem.status >= 200 && httpCacheItem.status <= 399 && !triggeredCloudflareTurnstile) {
return httpCacheItem;
return await this.fetchWithTimeout(ctx, url, { ...requestConfig, queueLimit: 1 }, ++tryCount);
}
throw new TooManyRequestsError(url, (isRateLimitedRaw.expires as number - Date.now()) / 1000);
}
if (httpCacheItem.status === 404) {
const timeouts = (await this.timeoutsCountCache.get<number>(url.host)) ?? 0;
if (timeouts >= (requestConfig?.timeoutsCountThrow ?? this.DEFAULT_TIMEOUTS_COUNT_THROW)) {
throw new TooManyTimeoutsError(url);
}
let response;
try {
const finalUrl = new URL(url.href);
finalUrl.username = '';
finalUrl.password = '';
const cookieString = this.cookieJar.getCookieStringSync(url.href);
const forwardedProto = url.protocol.slice(0, -1);
const hostUserAgent = this.hostUserAgentMap.get(url.host);
response = await this.axios.request({
...requestConfig,
headers: {
'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
'Accept-Language': 'en',
...(url.username && { Authorization: 'Basic ' + Buffer.from(`${url.username}:${url.password}`).toString('base64') }),
'Priority': 'u=0',
'User-Agent': this.hostUserAgentMap.get(url.host) ?? 'Mozilla',
...(hostUserAgent && { 'User-Agent': hostUserAgent }),
...(cookieString && { Cookie: cookieString }),
...(ctx.ip && {
'Forwarded': `by=unknown;for=${ctx.ip};host=${url.host};proto=${forwardedProto}`,
'X-Forwarded-For': ctx.ip,
'X-Forwarded-Host': url.host,
'X-Forwarded-Proto': forwardedProto,
'X-Real-IP': ctx.ip,
}),
...(proxyUrl && this.getProxyAgents(proxyUrl)),
...requestConfig?.headers,
},
url: finalUrl.href,
timeout: this.DEFAULT_TIMEOUT,
transformResponse: [data => data],
validateStatus: () => true,
});
} catch (error) {
this.logger.info(`Got error ${error} for ${url}`, ctx);
if (error instanceof AxiosError && error.code === 'ECONNABORTED') {
await this.increaseTimeoutsCount(url);
throw new TimeoutError(url);
}
throw error;
}
this.logger.info(`Got ${response.status} (${response.statusText}) for ${url}`, ctx);
await this.decreaseTimeoutsCount(url);
if (response.status === 429) {
const retryAfter = parseInt(`${response.headers['retry-after']}`) * 1000;
if (retryAfter <= this.MAX_WAIT_RETRY_AFTER && tryCount < 1) {
this.logger.info(`Wait out rate limit for ${url.host}`, ctx);
await this.sleep(retryAfter);
return await this.fetchWithTimeout(ctx, url, { ...requestConfig, queueLimit: 1 }, ++tryCount);
}
}
const triggeredCloudflareTurnstile = 'cf-turnstile' in response.headers;
if (response.status && response.status >= 200 && response.status <= 399 && !triggeredCloudflareTurnstile) {
return response;
}
if (response.status === 404) {
throw new NotFoundError();
}
if (httpCacheItem.headers['cf-mitigated'] === 'challenge' || triggeredCloudflareTurnstile) {
const noFlareSolverr = init?.noFlareSolverr ?? false;
if (response.headers['cf-mitigated'] === 'challenge' || triggeredCloudflareTurnstile) {
const flareSolverrEndpoint = envGet('FLARESOLVERR_ENDPOINT');
if (noFlareSolverr || !flareSolverrEndpoint) {
throw new BlockedError(url, BlockedReason.cloudflare_challenge, httpCacheItem.headers);
if (!flareSolverrEndpoint) {
throw new BlockedError(url, BlockedReason.cloudflare_challenge, response.headers);
}
this.logger.info(`Query FlareSolverr for ${url.href}`, ctx);
const body = { cmd: 'request.get', url: url.href, session: 'default' };
// @ts-expect-error idjaow awdiajwdoajwdoiajwdoi
const challengeResult = await (await this.queuedFetch(ctx, new URL(flareSolverrEndpoint), { method: 'POST', body: JSON.stringify(body), headers: { 'Content-Type': 'application/json' }, queueLimit: 1, timeout: 15000 })).json() as FlareSolverrResult;
if (challengeResult.status !== 'ok') {
this.logger.warn(`FlareSolverr issue: ${JSON.stringify(challengeResult)}`, ctx);
@ -189,25 +244,25 @@ export class Fetcher {
this.hostUserAgentMap.set(url.host, challengeResult.solution.userAgent);
httpCacheItem.body = challengeResult.solution.response;
response.data = challengeResult.solution.response;
return httpCacheItem;
return response;
}
if (httpCacheItem.status === 403) {
if (response.status === 403) {
if (ctx.config.mediaFlowProxyUrl && url.href.startsWith(ctx.config.mediaFlowProxyUrl)) {
throw new BlockedError(url, BlockedReason.media_flow_proxy_auth, httpCacheItem.headers);
throw new BlockedError(url, BlockedReason.media_flow_proxy_auth, response.headers);
}
throw new BlockedError(url, BlockedReason.unknown, httpCacheItem.headers);
throw new BlockedError(url, BlockedReason.unknown, response.headers);
}
if (httpCacheItem.status === 451) {
throw new BlockedError(url, BlockedReason.cloudflare_censor, httpCacheItem.headers);
if (response.status === 451) {
throw new BlockedError(url, BlockedReason.cloudflare_censor, response.headers);
}
if (httpCacheItem.status === 429) {
const retryAfter = parseInt(`${httpCacheItem.headers['retry-after']}`);
if (response.status === 429) {
const retryAfter = parseInt(`${response.headers['retry-after']}`);
if (!isNaN(retryAfter)) {
await this.rateLimitedCache.set<true>(url.host, true, retryAfter * 1000);
}
@ -215,161 +270,7 @@ export class Fetcher {
throw new TooManyRequestsError(url, retryAfter);
}
throw new HttpError(url, httpCacheItem.status, httpCacheItem.statusText, httpCacheItem.headers);
};
private determineCacheKey(url: URL, init?: CustomRequestInit): string {
return `${url.href}_${init?.body?.toString()}`;
}
private determineCacheTtl(status: number, policy: CachePolicy, init?: CustomRequestInit): number {
if ((status >= 200 && status <= 299) || status === 404) {
return Math.max(policy.timeToLive(), init?.minCacheTtl ?? this.MIN_CACHE_TTL);
}
return 0;
};
private async cacheGet(key: string): Promise<HttpCacheItem | undefined> {
const buffer = await this.httpCache.get<Buffer>(key);
return buffer ? JSON.parse(gunzipSync(buffer).toString()) : undefined;
}
private async cacheSet(key: string, httpCacheItem: HttpCacheItem) {
if (httpCacheItem.ttl <= 0) {
return;
}
await this.httpCache.set<Buffer>(key, gzipSync(JSON.stringify(httpCacheItem)), httpCacheItem.ttl);
}
private headersToObject(headers: Headers): Record<string, string> {
const obj: Record<string, string> = {};
headers.forEach((value, name) => {
obj[name] = value;
});
return obj;
};
private async cachedFetch(ctx: Context, url: URL, init?: CustomRequestInit): Promise<HttpCacheItem> {
const newInit = this.getInit(ctx, url, init);
const request: CachePolicy.Request = { url: url.href, method: newInit.method ?? 'GET', headers: {} };
const cacheKey = this.determineCacheKey(url, init);
let httpCacheItem = await this.cacheGet(cacheKey);
const disableCache = init?.noCache;
if (httpCacheItem && !disableCache) {
this.logger.info(`Cached fetch ${request.method} ${url}: ${httpCacheItem.status} (${httpCacheItem.statusText})`, ctx);
return this.handleHttpCacheItem(ctx, httpCacheItem, url, init);
}
const response = await this.queuedFetch(ctx, url, newInit);
const body = await response.text();
const policy = new CachePolicy(request, { status: response.status, headers: this.headersToObject(response.headers) }, { shared: false });
const ttl = this.determineCacheTtl(response.status, policy, init);
httpCacheItem = { headers: policy.responseHeaders(), status: response.status, statusText: response.statusText, body, ttl, url: response.url };
await this.cacheSet(cacheKey, httpCacheItem);
return this.handleHttpCacheItem(ctx, httpCacheItem, url, init);
};
protected async fetchWithTimeout(ctx: Context, url: URL, init?: CustomRequestInit, tryCount = 0): Promise<Response> {
const proxyUrl = getProxyForUrl(url);
const headers = init?.headers as Record<string, string> | undefined;
let message = `Fetch ${init?.method ?? 'GET'} ${url}`;
/* istanbul ignore if */
if (headers && headers['Referer']) {
message += ' with referer ' + headers['Referer'];
}
/* istanbul ignore if */
if (proxyUrl) {
message += ' via proxy ' + proxyUrl;
}
this.logger.info(message, ctx);
const isRateLimitedRaw = await this.rateLimitedCache.getRaw<true>(url.host);
/* istanbul ignore if */
if (isRateLimitedRaw && isRateLimitedRaw.value && isRateLimitedRaw.expires) {
const ttl = isRateLimitedRaw.expires - Date.now();
if (ttl <= this.MAX_WAIT_RETRY_AFTER && tryCount < 1) {
this.logger.info(`Wait out rate limit for ${url}`, ctx);
await this.sleep(ttl);
return await this.fetchWithTimeout(ctx, url, { ...init, queueLimit: 1 }, ++tryCount);
}
throw new TooManyRequestsError(url, (isRateLimitedRaw.expires as number - Date.now()) / 1000);
}
const timeouts = (await this.timeoutsCountCache.get<number>(url.host)) ?? 0;
if (timeouts >= (init?.timeoutsCountThrow ?? this.DEFAULT_TIMEOUTS_COUNT_THROW)) {
throw new TooManyTimeoutsError(url);
}
let response;
try {
const finalUrl = new URL(url.href);
finalUrl.username = '';
finalUrl.password = '';
const finalInit = {
...init,
keepalive: true,
signal: AbortSignal.timeout(init?.timeout ?? this.DEFAULT_TIMEOUT),
...(/* istanbul ignore next */ proxyUrl && { dispatcher: getProxyAgent(proxyUrl) }),
};
response = await fetch(finalUrl, finalInit);
} catch (error) {
this.logger.info(`Got error ${error} for ${url}`, ctx);
if (error instanceof DOMException && ['AbortError', 'TimeoutError'].includes(error.name)) {
await this.increaseTimeoutsCount(url);
throw new TimeoutError(url);
}
if (tryCount < 3) {
this.logger.warn(`Retrying fetch ${init?.method ?? 'GET'} ${url} because of an unexpected error`, ctx);
await this.sleep(333);
return await this.fetchWithTimeout(ctx, url, init, ++tryCount);
}
throw error;
}
this.logger.info(`Got ${response.status} (${response.statusText}) for ${url}`, ctx);
await this.decreaseTimeoutsCount(url);
if (response.status === 429) {
const retryAfter = parseInt(`${response.headers.get('retry-after')}`) * 1000;
if (retryAfter <= this.MAX_WAIT_RETRY_AFTER && tryCount < 1) {
this.logger.info(`Wait out rate limit for ${url.host}`, ctx);
await this.sleep(retryAfter);
return await this.fetchWithTimeout(ctx, url, { ...init, queueLimit: 1 }, ++tryCount);
}
}
if ([503, 504].includes(response.status) && tryCount < 3) {
this.logger.warn(`Retrying fetch ${init?.method ?? 'GET'} ${url} because of a temporary server error`, ctx);
await this.sleep(333);
return await this.fetchWithTimeout(ctx, url, init, ++tryCount);
}
return response;
throw new HttpError(url, response.status, response.statusText, response.headers);
};
private async increaseTimeoutsCount(url: URL) {
@ -399,7 +300,7 @@ export class Fetcher {
return sem;
}
private async queuedFetch(ctx: Context, url: URL, init?: CustomRequestInit): Promise<Response> {
private async queuedFetch(ctx: Context, url: URL, init?: CustomRequestConfig): Promise<AxiosResponse> {
const queueLimit = init?.queueLimit ?? this.DEFAULT_QUEUE_LIMIT;
const queueTimeout = init?.queueTimeout ?? this.DEFAULT_QUEUE_TIMEOUT;
@ -417,4 +318,41 @@ export class Fetcher {
private sleep(ms: number): Promise<void> {
return new Promise(sleep => setTimeout(sleep, ms));
}
private getProxyForUrl(url: URL): URL | undefined {
const proxyConfig = process.env['PROXY_CONFIG'];
if (proxyConfig) {
for (const rule of proxyConfig.split(',')) {
const [hostPattern, proxy] = rule.split(/:(.+)/);
if (!hostPattern || !proxy) {
throw new Error(`Proxy rule "${rule}" is invalid.`);
}
if (hostPattern === '*' || minimatch(url.host, hostPattern)) {
return proxy === 'false' ? undefined : new URL(proxy);
}
}
} else if (process.env['ALL_PROXY']) {
return new URL(process.env['ALL_PROXY']);
}
return undefined;
}
// eslint-disable-next-line @typescript-eslint/no-explicit-any
private getProxyAgents(proxyUrl: URL): Record<'httpAgent' | 'httpsAgent', any> {
let proxyAgents = this.proxyAgents.get(proxyUrl.href);
if (!proxyAgents) {
proxyAgents = {
httpAgent: proxyUrl.protocol === 'socks5:' ? new SocksProxyAgent(proxyUrl) : new HttpProxyAgent(proxyUrl),
httpsAgent: proxyUrl.protocol === 'socks5:' ? new SocksProxyAgent(proxyUrl) : new HttpsProxyAgent(proxyUrl),
};
this.proxyAgents.set(proxyUrl.href, proxyAgents);
}
return proxyAgents;
}
}

View file

@ -1,52 +1,51 @@
/* istanbul ignore file */
import crypto from 'crypto';
import fs from 'node:fs';
import CachePolicy from 'http-cache-semantics';
import axios, { AxiosResponse, InternalAxiosRequestConfig } from 'axios';
import slugify from 'slugify';
import { RequestInit } from 'undici';
import winston from 'winston';
import { NotFoundError } from '../error';
import { Context } from '../types';
import { envGet } from './env';
import { Fetcher, HttpCacheItem } from './Fetcher';
import { CustomRequestConfig, Fetcher } from './Fetcher';
export class FetcherMock extends Fetcher {
private readonly fixturePath: string;
public constructor(fixturePath: string) {
super(winston.createLogger({ transports: [new winston.transports.Console({ level: 'nope' })] }));
super(axios, winston.createLogger({ transports: [new winston.transports.Console({ level: 'nope' })] }));
this.fixturePath = fixturePath;
}
public override async fetch(ctx: Context, url: URL, init?: RequestInit): Promise<HttpCacheItem> {
public override async fetch(ctx: Context, url: URL, requestConfig?: CustomRequestConfig): Promise<AxiosResponse> {
let path: string;
if (init?.method === 'POST') {
const body = init.body as string;
path = `${this.fixturePath}/post-${this.slugifyUrl(url)}-${slugify(body)}`;
} else if (init?.method === 'HEAD') {
if (requestConfig?.method === 'POST') {
const data = requestConfig.data as string;
path = `${this.fixturePath}/post-${this.slugifyUrl(url)}-${slugify(data)}`;
} else if (requestConfig?.method === 'HEAD') {
path = `${this.fixturePath}/head-${this.slugifyUrl(url)}`;
} else {
path = `${this.fixturePath}/${this.slugifyUrl(url)}`;
}
return this.fetchInternal(path, ctx, url, init);
return this.fetchInternal(path, ctx, url, requestConfig);
};
public override async text(ctx: Context, url: URL, init?: RequestInit): Promise<string> {
public override async text(ctx: Context, url: URL, requestConfig?: CustomRequestConfig): Promise<string> {
const path = `${this.fixturePath}/${this.slugifyUrl(url)}`;
return (await this.fetchInternal(path, ctx, url, init)).body;
return (await this.fetchInternal(path, ctx, url, requestConfig)).data;
};
public override async textPost(ctx: Context, url: URL, body: string, init?: RequestInit): Promise<string> {
const path = `${this.fixturePath}/post-${this.slugifyUrl(url)}-${slugify(body)}`;
public override async textPost(ctx: Context, url: URL, data: string, requestConfig?: CustomRequestConfig): Promise<string> {
const path = `${this.fixturePath}/post-${this.slugifyUrl(url)}-${slugify(data)}`;
return (await this.fetchInternal(path, ctx, url, { ...init, method: 'POST', body })).body;
return (await this.fetchInternal(path, ctx, url, { ...requestConfig, method: 'POST', data })).data;
};
public override async head(ctx: Context, url: URL, init?: RequestInit): Promise<CachePolicy.Headers> {
public override async head(ctx: Context, url: URL, init?: CustomRequestConfig): Promise<AxiosResponse['headers']> {
const path = `${this.fixturePath}/head-${this.slugifyUrl(url)}`;
return (await this.fetchInternal(path, ctx, url, { ...init, method: 'HEAD' })).headers;
@ -62,10 +61,10 @@ export class FetcherMock extends Fetcher {
return slugifiedUrl;
};
private readonly fetchInternal = async (path: string, ctx: Context, url: URL, init?: RequestInit): Promise<HttpCacheItem> => {
private readonly fetchInternal = async (path: string, ctx: Context, url: URL, requestConfig?: CustomRequestConfig): Promise<AxiosResponse> => {
const errorPath = `${path}.error`;
const isHead = init?.method === 'HEAD';
const isHead = requestConfig?.method === 'HEAD';
if (fs.existsSync(errorPath)) {
const message = fs.readFileSync(errorPath).toString();
@ -78,18 +77,17 @@ export class FetcherMock extends Fetcher {
const data = fs.readFileSync(path).toString();
return {
body: isHead ? '' : data,
data: isHead ? '' : data,
headers: isHead ? JSON.parse(data) : {},
status: 200,
statusText: 'OK',
ttl: 0,
url: url.href,
config: { } as InternalAxiosRequestConfig,
};
} else {
let response;
try {
if (envGet('TEST_UPDATE_FIXTURES')) {
response = await super.fetchWithTimeout(ctx, url, init);
response = await super.fetchWithTimeout(ctx, url, requestConfig);
} else {
console.error(`No fixture found at "${path}".`);
process.exit(1);
@ -107,26 +105,19 @@ export class FetcherMock extends Fetcher {
let result;
if (isHead) {
const headers: Record<string, string> = {};
response.headers.forEach((value, key) => {
headers[key] = value;
});
result = JSON.stringify(headers);
result = JSON.stringify(response.headers);
} else {
result = await response.text();
result = response.data;
}
fs.writeFileSync(path, result);
return {
body: isHead ? '' : result,
data: isHead ? '' : result,
headers: isHead ? JSON.parse(result) : {},
status: 200,
statusText: 'OK',
ttl: 0,
url: url.href,
config: { } as InternalAxiosRequestConfig,
};
}
};

View file

@ -1,39 +0,0 @@
import { socksDispatcher } from 'fetch-socks';
import { minimatch } from 'minimatch';
import { Dispatcher, ProxyAgent } from 'undici';
export const getProxyForUrl = (url: URL): URL | undefined => {
const proxyConfig = process.env['PROXY_CONFIG'];
if (proxyConfig) {
for (const rule of proxyConfig.split(',')) {
const [hostPattern, proxy] = rule.split(/:(.+)/);
if (!hostPattern || !proxy) {
throw new Error(`Proxy rule "${rule}" is invalid.`);
}
if (hostPattern === '*' || minimatch(url.host, hostPattern)) {
return proxy === 'false' ? undefined : new URL(proxy);
}
}
} else if (process.env['ALL_PROXY']) {
return new URL(process.env['ALL_PROXY']);
}
return undefined;
};
const proxyAgents = new Map<string, Dispatcher>();
export const getProxyAgent = (proxyUrl: URL): Dispatcher => {
let proxyAgent = proxyAgents.get(proxyUrl.href);
if (!proxyAgent) {
proxyAgent = proxyUrl.protocol === 'socks5:'
? socksDispatcher({ type: 5, host: proxyUrl.hostname, port: parseInt(proxyUrl.port) })
: new ProxyAgent({ uri: proxyUrl.href });
proxyAgents.set(proxyUrl.href, proxyAgent);
}
return proxyAgent;
};

View file

@ -3,14 +3,14 @@ import KeyvSqlite from '@keyv/sqlite';
import { Cacheable, CacheableMemory, Keyv } from 'cacheable';
import { Context } from '../types';
import { getCacheDir } from './env';
import { CustomRequestInit, Fetcher } from './Fetcher';
import { CustomRequestConfig, Fetcher } from './Fetcher';
const playlistHeightCache = new Cacheable({
primary: new Keyv({ store: new CacheableMemory({ lruSize: 16384 }) }),
secondary: new Keyv(new KeyvSqlite(`sqlite://${getCacheDir()}/webstreamr-playlist-height-cache.sqlite`)),
});
export const guessHeightFromPlaylist = async (ctx: Context, fetcher: Fetcher, playlistUrl: URL, embedUrl: URL, init?: CustomRequestInit): Promise<number | undefined> => {
export const guessHeightFromPlaylist = async (ctx: Context, fetcher: Fetcher, playlistUrl: URL, embedUrl: URL, init?: CustomRequestConfig): Promise<number | undefined> => {
let height = await playlistHeightCache.get<number>(embedUrl.href);
/* istanbul ignore if */
if (height) {

View file

@ -2,7 +2,7 @@ import { Mutex } from 'async-mutex';
import { NotFoundError } from '../error';
import { Context } from '../types';
import { envGetRequired } from './env';
import { CustomRequestInit, Fetcher } from './Fetcher';
import { CustomRequestConfig, Fetcher } from './Fetcher';
import { ImdbId, TmdbId } from './id';
interface FindResponsePartial {
@ -32,7 +32,7 @@ interface TvDetailsResponsePartial {
const mutexes = new Map<string, Mutex>();
const tmdbFetch = async (ctx: Context, fetcher: Fetcher, path: string, searchParams?: Record<string, string | undefined>): Promise<unknown> => {
const config: CustomRequestInit = {
const config: CustomRequestConfig = {
headers: {
'Authorization': 'Bearer ' + envGetRequired('TMDB_ACCESS_TOKEN'),
'Content-Type': 'application/json',