Refactor and Added Images and Videos Services

pull/1/head
Jéluchu 5 years ago
parent 001e15f446
commit 03596d5ae9

387
package-lock.json generated

@ -4,68 +4,15 @@
"lockfileVersion": 1,
"requires": true,
"dependencies": {
"@babel/runtime": {
"version": "7.10.2",
"resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.10.2.tgz",
"integrity": "sha512-6sF3uQw2ivImfVIl62RZ7MXhO2tap69WeWK57vAaimT6AZbE4FbqjdEJIN1UqoD6wI6B+1n9UiagafH1sxjOtg==",
"requires": {
"regenerator-runtime": "^0.13.4"
}
},
"@sindresorhus/is": {
"version": "2.1.1",
"resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-2.1.1.tgz",
"integrity": "sha512-/aPsuoj/1Dw/kzhkgz+ES6TxG0zfTMGLwuK2ZG00k/iJzYHTLCE8mVU8EPqEOp/lmxPoq1C1C9RYToRKb2KEfg=="
},
"@szmarczak/http-timer": {
"version": "4.0.5",
"resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-4.0.5.tgz",
"integrity": "sha512-PyRA9sm1Yayuj5OIoJ1hGt2YISX45w9WcFbh6ddT0Z/0yaFxOtGLInr4jUfU1EAFVs0Yfyfev4RNwBlUaHdlDQ==",
"requires": {
"defer-to-connect": "^2.0.0"
}
},
"@types/cacheable-request": {
"version": "6.0.1",
"resolved": "https://registry.npmjs.org/@types/cacheable-request/-/cacheable-request-6.0.1.tgz",
"integrity": "sha512-ykFq2zmBGOCbpIXtoVbz4SKY5QriWPh3AjyU4G74RYbtt5yOc5OfaY75ftjg7mikMOla1CTGpX3lLbuJh8DTrQ==",
"requires": {
"@types/http-cache-semantics": "*",
"@types/keyv": "*",
"@types/node": "*",
"@types/responselike": "*"
}
},
"@types/debug": {
"version": "0.0.31",
"resolved": "https://registry.npmjs.org/@types/debug/-/debug-0.0.31.tgz",
"integrity": "sha512-LS1MCPaQKqspg7FvexuhmDbWUhE2yIJ+4AgVIyObfc06/UKZ8REgxGNjZc82wPLWmbeOm7S+gSsLgo75TanG4A=="
},
"@types/http-cache-semantics": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/@types/http-cache-semantics/-/http-cache-semantics-4.0.0.tgz",
"integrity": "sha512-c3Xy026kOF7QOTn00hbIllV1dLR9hG9NkSrLQgCVs8NF6sBU+VGWjD3wLPhmh1TYAc7ugCFsvHYMN4VcBN1U1A=="
},
"@types/keyv": {
"version": "3.1.1",
"resolved": "https://registry.npmjs.org/@types/keyv/-/keyv-3.1.1.tgz",
"integrity": "sha512-MPtoySlAZQ37VoLaPcTHCu1RWJ4llDkULYZIzOYxlhxBqYPB0RsRlmMU0R6tahtFe27mIdkHV+551ZWV4PLmVw==",
"requires": {
"@types/node": "*"
}
},
"@types/node": {
"version": "13.7.1",
"resolved": "https://registry.npmjs.org/@types/node/-/node-13.7.1.tgz",
"integrity": "sha512-Zq8gcQGmn4txQEJeiXo/KiLpon8TzAl0kmKH4zdWctPj05nWwp1ClMdAVEloqrQKfaC48PNLdgN/aVaLqUrluA=="
},
"@types/responselike": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/@types/responselike/-/responselike-1.0.0.tgz",
"integrity": "sha512-85Y2BjiufFzaMIlvJDvTTB8Fxl2xfLo4HgmHzVBz08w4wDePCTjYw66PdrolO0kzli3yam/YCgRufyo1DdQVTA==",
"requires": {
"@types/node": "*"
}
"version": "14.0.10",
"resolved": "https://registry.npmjs.org/@types/node/-/node-14.0.10.tgz",
"integrity": "sha512-Bz23oN/5bi0rniKT24ExLf4cK0JdvN3dH/3k0whYkdN4eI4vS2ZW/2ENNn2uxHCzWcbdHIa/GRuWQytfzCjRYw=="
},
"accepts": {
"version": "1.3.7",
@ -77,9 +24,9 @@
}
},
"ajv": {
"version": "6.11.0",
"resolved": "https://registry.npmjs.org/ajv/-/ajv-6.11.0.tgz",
"integrity": "sha512-nCprB/0syFYy9fVYU1ox1l2KN8S9I+tziH8D4zdZuLT3N6RMlGSGt5FSTpAiHB/Whv8Qs1cWHma1aMKZyaHRKA==",
"version": "6.12.2",
"resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.2.tgz",
"integrity": "sha512-k+V+hzjm5q/Mr8ef/1Y9goCmlsK4I6Sm74teeyGvFk1XrOsbsKLjEdrvny42CZ+a8sXbk8KWpY/bDwS+FLL2UQ==",
"requires": {
"fast-deep-equal": "^3.1.1",
"fast-json-stable-stringify": "^2.0.0",
@ -87,16 +34,6 @@
"uri-js": "^4.2.2"
}
},
"animeflv-scrapper": {
"version": "0.2.12",
"resolved": "https://registry.npmjs.org/animeflv-scrapper/-/animeflv-scrapper-0.2.12.tgz",
"integrity": "sha512-EvASm0nj9tCtopOZ6L9JF5jX0c0Nmv1ROYEg4/wKcGlX2rINvtXNoW6jqM7SGWG4POrh4RI1AjkpbiaP/cMibA==",
"requires": {
"@babel/runtime": "^7.8.7",
"cloudscraper": "^4.6.0",
"node-html-parser": "^1.2.12"
}
},
"array-flatten": {
"version": "2.1.2",
"resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-2.1.2.tgz",
@ -126,9 +63,9 @@
"integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg="
},
"aws4": {
"version": "1.9.1",
"resolved": "https://registry.npmjs.org/aws4/-/aws4-1.9.1.tgz",
"integrity": "sha512-wMHVg2EOHaMRxbzgFJ9gtjOOCrI80OHLG14rxi28XwOW8ux6IiEbRCGGGqCtdAIg4FQCbW20k9RsT4y3gJlFug=="
"version": "1.10.0",
"resolved": "https://registry.npmjs.org/aws4/-/aws4-1.10.0.tgz",
"integrity": "sha512-3YDiu347mtVtjpyV3u5kVqQLP242c06zwDOgpeRnybmXlYYsLbtTrUBUm8i8srONt+FWobl5aibnU1030PeeuA=="
},
"axios": {
"version": "0.19.2",
@ -174,16 +111,6 @@
"qs": "6.7.0",
"raw-body": "2.4.0",
"type-is": "~1.6.17"
},
"dependencies": {
"debug": {
"version": "2.6.9",
"resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
"integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
"requires": {
"ms": "2.0.0"
}
}
}
},
"boolbase": {
@ -201,25 +128,6 @@
"resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz",
"integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg=="
},
"cacheable-lookup": {
"version": "5.0.3",
"resolved": "https://registry.npmjs.org/cacheable-lookup/-/cacheable-lookup-5.0.3.tgz",
"integrity": "sha512-W+JBqF9SWe18A72XFzN/V/CULFzPm7sBXzzR6ekkE+3tLG72wFZrBiBZhrZuDoYexop4PHJVdFAKb/Nj9+tm9w=="
},
"cacheable-request": {
"version": "7.0.1",
"resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-7.0.1.tgz",
"integrity": "sha512-lt0mJ6YAnsrBErpTMWeu5kl/tg9xMAWjavYTN6VQXM1A/teBITuNcccXsCxF0tDQQJf9DfAaX5O4e0zp0KlfZw==",
"requires": {
"clone-response": "^1.0.2",
"get-stream": "^5.1.0",
"http-cache-semantics": "^4.0.0",
"keyv": "^4.0.0",
"lowercase-keys": "^2.0.0",
"normalize-url": "^4.1.0",
"responselike": "^2.0.0"
}
},
"camelize": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/camelize/-/camelize-1.0.0.tgz",
@ -243,19 +151,6 @@
"parse5": "^3.0.1"
}
},
"cheerio-tableparser": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/cheerio-tableparser/-/cheerio-tableparser-1.0.1.tgz",
"integrity": "sha1-5VrS3LU2G4wyOmy7jAzUbjy98c0="
},
"clone-response": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/clone-response/-/clone-response-1.0.2.tgz",
"integrity": "sha1-0dyXOSAxTfZ/vrlCI7TuNQI56Ws=",
"requires": {
"mimic-response": "^1.0.0"
}
},
"cloudscraper": {
"version": "4.6.0",
"resolved": "https://registry.npmjs.org/cloudscraper/-/cloudscraper-4.6.0.tgz",
@ -376,33 +271,13 @@
"integrity": "sha1-bYCcnNDPe7iVLYD8hPoT1H3bEwg="
},
"debug": {
"version": "3.1.0",
"resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz",
"integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==",
"version": "2.6.9",
"resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
"integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
"requires": {
"ms": "2.0.0"
}
},
"decompress-response": {
"version": "6.0.0",
"resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-6.0.0.tgz",
"integrity": "sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==",
"requires": {
"mimic-response": "^3.1.0"
},
"dependencies": {
"mimic-response": {
"version": "3.1.0",
"resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-3.1.0.tgz",
"integrity": "sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ=="
}
}
},
"defer-to-connect": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-2.0.0.tgz",
"integrity": "sha512-bYL2d05vOSf1JEZNx5vSAtPuBMkX8K9EUutg7zlKvTqKXHt7RhWJFbmd7qakVuf13i+IkGmp6FwSsONOf6VYIg=="
},
"delayed-stream": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz",
@ -478,14 +353,6 @@
"resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz",
"integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k="
},
"end-of-stream": {
"version": "1.4.4",
"resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz",
"integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==",
"requires": {
"once": "^1.4.0"
}
},
"entities": {
"version": "1.1.2",
"resolved": "https://registry.npmjs.org/entities/-/entities-1.1.2.tgz",
@ -548,14 +415,6 @@
"resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz",
"integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI="
},
"debug": {
"version": "2.6.9",
"resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
"integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
"requires": {
"ms": "2.0.0"
}
},
"safe-buffer": {
"version": "5.1.2",
"resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
@ -605,16 +464,6 @@
"parseurl": "~1.3.3",
"statuses": "~1.5.0",
"unpipe": "~1.0.0"
},
"dependencies": {
"debug": {
"version": "2.6.9",
"resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
"integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
"requires": {
"ms": "2.0.0"
}
}
}
},
"follow-redirects": {
@ -623,6 +472,16 @@
"integrity": "sha512-0V5l4Cizzvqt5D44aTXbFZz+FtyXV1vrDN6qrelxtfYQKW0KO0W2T/hkE8xvGa/540LkZlkaUjO4ailYTFtHVQ==",
"requires": {
"debug": "=3.1.0"
},
"dependencies": {
"debug": {
"version": "3.1.0",
"resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz",
"integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==",
"requires": {
"ms": "2.0.0"
}
}
}
},
"forever-agent": {
@ -655,14 +514,6 @@
"resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz",
"integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac="
},
"get-stream": {
"version": "5.1.0",
"resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.1.0.tgz",
"integrity": "sha512-EXr1FOzrzTfGeL0gQdeFEvOMm2mzMOglyiOXSTpPC+iAjAKftbr3jpCMWynogwYnM+eSj9sHGc6wjIcDvYiygw==",
"requires": {
"pump": "^3.0.0"
}
},
"getpass": {
"version": "0.1.7",
"resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz",
@ -671,25 +522,6 @@
"assert-plus": "^1.0.0"
}
},
"got": {
"version": "11.2.0",
"resolved": "https://registry.npmjs.org/got/-/got-11.2.0.tgz",
"integrity": "sha512-68pBow9XXXSdVRV5wSx0kWMCZsag4xE3Ru0URVe0PWsSYmU4SJrUmEO6EVYFlFHc9rq/6Yqn6o1GxIb9torQxg==",
"requires": {
"@sindresorhus/is": "^2.1.1",
"@szmarczak/http-timer": "^4.0.5",
"@types/cacheable-request": "^6.0.1",
"@types/responselike": "^1.0.0",
"cacheable-lookup": "^5.0.3",
"cacheable-request": "^7.0.1",
"decompress-response": "^6.0.0",
"get-stream": "^5.1.0",
"http2-wrapper": "^1.0.0-beta.4.5",
"lowercase-keys": "^2.0.0",
"p-cancelable": "^2.0.0",
"responselike": "^2.0.0"
}
},
"har-schema": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz",
@ -704,11 +536,6 @@
"har-schema": "^2.0.0"
}
},
"he": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/he/-/he-1.1.1.tgz",
"integrity": "sha1-k0EP0hsAlzUVH4howvJx80J+I/0="
},
"helmet": {
"version": "3.22.0",
"resolved": "https://registry.npmjs.org/helmet/-/helmet-3.22.0.tgz",
@ -797,11 +624,6 @@
"readable-stream": "^3.1.1"
}
},
"http-cache-semantics": {
"version": "4.1.0",
"resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.0.tgz",
"integrity": "sha512-carPklcUh7ROWRK7Cv27RPtdhYhUsela/ue5/jKzjegVvXDqM2ILE9Q2BGn9JZJh1g87cp56su/FgQSzcWS8cQ=="
},
"http-errors": {
"version": "1.7.2",
"resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.7.2.tgz",
@ -824,15 +646,6 @@
"sshpk": "^1.7.0"
}
},
"http2-wrapper": {
"version": "1.0.0-beta.4.6",
"resolved": "https://registry.npmjs.org/http2-wrapper/-/http2-wrapper-1.0.0-beta.4.6.tgz",
"integrity": "sha512-9oB4BiGDTI1FmIBlOF9OJ5hwJvcBEmPCqk/hy314Uhy2uq5TjekUZM8w8SPLLlUEM+mxNhXdPAXfrJN2Zbb/GQ==",
"requires": {
"quick-lru": "^5.0.0",
"resolve-alpn": "^1.0.0"
}
},
"iconv-lite": {
"version": "0.4.24",
"resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz",
@ -852,9 +665,9 @@
"integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4="
},
"ipaddr.js": {
"version": "1.9.0",
"resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.0.tgz",
"integrity": "sha512-M4Sjn6N/+O6/IXSJseKqHoFc+5FdGJ22sXqnjTpdZweHK64MzEPAyQZyEU3R/KRv2GLoa7nNtg/C2Ev6m7z+eA=="
"version": "1.9.1",
"resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz",
"integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g=="
},
"is-typedarray": {
"version": "1.0.0",
@ -896,11 +709,6 @@
"resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz",
"integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM="
},
"json-buffer": {
"version": "3.0.1",
"resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz",
"integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ=="
},
"json-schema": {
"version": "0.2.3",
"resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz",
@ -927,24 +735,11 @@
"verror": "1.10.0"
}
},
"keyv": {
"version": "4.0.1",
"resolved": "https://registry.npmjs.org/keyv/-/keyv-4.0.1.tgz",
"integrity": "sha512-xz6Jv6oNkbhrFCvCP7HQa8AaII8y8LRpoSm661NOKLr4uHuBwhX4epXrPQgF3+xdJnN4Esm5X0xwY4bOlALOtw==",
"requires": {
"json-buffer": "3.0.1"
}
},
"lodash": {
"version": "4.17.15",
"resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz",
"integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A=="
},
"lowercase-keys": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz",
"integrity": "sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA=="
},
"media-typer": {
"version": "0.3.0",
"resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz",
@ -966,23 +761,18 @@
"integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg=="
},
"mime-db": {
"version": "1.43.0",
"resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.43.0.tgz",
"integrity": "sha512-+5dsGEEovYbT8UY9yD7eE4XTc4UwJ1jBYlgaQQF38ENsKR3wj/8q8RFZrF9WIZpB2V1ArTVFUva8sAul1NzRzQ=="
"version": "1.44.0",
"resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.44.0.tgz",
"integrity": "sha512-/NOTfLrsPBVeH7YtFPgsVWveuL+4SjjYxaQ1xtM1KMFj7HdxlBlxeyNLzhyJVx7r4rZGJAZ/6lkKCitSc/Nmpg=="
},
"mime-types": {
"version": "2.1.26",
"resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.26.tgz",
"integrity": "sha512-01paPWYgLrkqAyrlDorC1uDwl2p3qZT7yl806vW7DvDoxwXi46jsjFbg+WdwotBIk6/MbEhO/dh5aZ5sNj/dWQ==",
"version": "2.1.27",
"resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.27.tgz",
"integrity": "sha512-JIhqnCasI9yD+SsmkquHBxTSEuZdQX5BuQnS2Vc7puQQQ+8yiP5AY5uWhpdv4YL4VM5c6iliiYWPgJ/nJQLp7w==",
"requires": {
"mime-db": "1.43.0"
"mime-db": "1.44.0"
}
},
"mimic-response": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz",
"integrity": "sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ=="
},
"ms": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
@ -1020,19 +810,6 @@
"nan": "^2.13.2"
}
},
"node-html-parser": {
"version": "1.2.18",
"resolved": "https://registry.npmjs.org/node-html-parser/-/node-html-parser-1.2.18.tgz",
"integrity": "sha512-DypklUSTuY9JDfYWz/NZYZA8mvgKmjRmHZe7at0H6O4KoXcs8QSpnH5mFk888gLsqXXRMVNmJGk/FdqaO9T1UQ==",
"requires": {
"he": "1.1.1"
}
},
"normalize-url": {
"version": "4.5.0",
"resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-4.5.0.tgz",
"integrity": "sha512-2s47yzUxdexf1OhyRi4Em83iQk0aPvwTddtFz4hnSSw9dCEsLEGf6SwIO8ss/19S9iBb5sJaOuTvTGDeZI00BQ=="
},
"npm": {
"version": "6.14.5",
"resolved": "https://registry.npmjs.org/npm/-/npm-6.14.5.tgz",
@ -4165,19 +3942,6 @@
"ee-first": "1.1.1"
}
},
"once": {
"version": "1.4.0",
"resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
"integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=",
"requires": {
"wrappy": "1"
}
},
"p-cancelable": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-2.0.0.tgz",
"integrity": "sha512-wvPXDmbMmu2ksjkB4Z3nZWTSkJEb9lqVdMaCKpZUGJG9TMiNp9XcbG3fn9fPKjem04fJMJnXoyFPk2FmgiaiNg=="
},
"parse5": {
"version": "3.0.3",
"resolved": "https://registry.npmjs.org/parse5/-/parse5-3.0.3.tgz",
@ -4202,27 +3966,18 @@
"integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns="
},
"proxy-addr": {
"version": "2.0.5",
"resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.5.tgz",
"integrity": "sha512-t/7RxHXPH6cJtP0pRG6smSr9QJidhB+3kXu0KgXnbGYMgzEnUxRQ4/LDdfOwZEMyIh3/xHb8PX3t+lfL9z+YVQ==",
"version": "2.0.6",
"resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.6.tgz",
"integrity": "sha512-dh/frvCBVmSsDYzw6n926jv974gddhkFPfiN8hPOi30Wax25QZyZEGveluCgliBnqmuM+UJmBErbAUFIoDbjOw==",
"requires": {
"forwarded": "~0.1.2",
"ipaddr.js": "1.9.0"
"ipaddr.js": "1.9.1"
}
},
"psl": {
"version": "1.7.0",
"resolved": "https://registry.npmjs.org/psl/-/psl-1.7.0.tgz",
"integrity": "sha512-5NsSEDv8zY70ScRnOTn7bK7eanl2MvFrOrS/R6x+dBt5g1ghnj9Zv90kO8GwT8gxcu2ANyFprnFYB85IogIJOQ=="
},
"pump": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz",
"integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==",
"requires": {
"end-of-stream": "^1.1.0",
"once": "^1.3.1"
}
"version": "1.8.0",
"resolved": "https://registry.npmjs.org/psl/-/psl-1.8.0.tgz",
"integrity": "sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ=="
},
"punycode": {
"version": "2.1.1",
@ -4234,11 +3989,6 @@
"resolved": "https://registry.npmjs.org/qs/-/qs-6.7.0.tgz",
"integrity": "sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ=="
},
"quick-lru": {
"version": "5.1.1",
"resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-5.1.1.tgz",
"integrity": "sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA=="
},
"range-parser": {
"version": "1.2.1",
"resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz",
@ -4256,9 +4006,9 @@
}
},
"readable-stream": {
"version": "3.5.0",
"resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.5.0.tgz",
"integrity": "sha512-gSz026xs2LfxBPudDuI41V1lka8cxg64E66SGe78zJlsUofOg/yqwezdIcdfwik6B4h8LFmWPA9ef9X3FiNFLA==",
"version": "3.6.0",
"resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz",
"integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==",
"requires": {
"inherits": "^2.0.3",
"string_decoder": "^1.1.1",
@ -4270,11 +4020,6 @@
"resolved": "https://registry.npmjs.org/referrer-policy/-/referrer-policy-1.2.0.tgz",
"integrity": "sha512-LgQJIuS6nAy1Jd88DCQRemyE3mS+ispwlqMk3b0yjZ257fI1v9c+/p6SD5gP5FGyXUIgrNOAfmyioHwZtYv2VA=="
},
"regenerator-runtime": {
"version": "0.13.5",
"resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.5.tgz",
"integrity": "sha512-ZS5w8CpKFinUzOwW3c83oPeVXoNsrLsaCoLtJvAClH135j/R77RuymhiSErhm2lKcwSCIpmvIWSbDkIfAqKQlA=="
},
"request": {
"version": "2.88.2",
"resolved": "https://registry.npmjs.org/request/-/request-2.88.2.tgz",
@ -4328,19 +4073,6 @@
"lodash": "^4.17.15"
}
},
"resolve-alpn": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/resolve-alpn/-/resolve-alpn-1.0.0.tgz",
"integrity": "sha512-rTuiIEqFmGxne4IovivKSDzld2lWW9QCjqv80SYjPgf+gS35eaCAjaP54CCwGAwBtnCsvNLYtqxe1Nw+i6JEmA=="
},
"responselike": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/responselike/-/responselike-2.0.0.tgz",
"integrity": "sha512-xH48u3FTB9VsZw7R+vvgaKeLKzT6jOogbQhEe/jewwnZgzPcnyWui2Av6JpoYZF/91uueC+lqhWqeURw5/qhCw==",
"requires": {
"lowercase-keys": "^2.0.0"
}
},
"rss-to-json": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/rss-to-json/-/rss-to-json-1.1.1.tgz",
@ -4351,9 +4083,9 @@
}
},
"safe-buffer": {
"version": "5.2.0",
"resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.0.tgz",
"integrity": "sha512-fZEwUGbVl7kouZs1jCdMLdt95hdIv0ZeHg6L7qPeciMZhZ+/gdesW4wgTARkrFWEpspjEATAzUGPG8N2jJiwbg=="
"version": "5.2.1",
"resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz",
"integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ=="
},
"safer-buffer": {
"version": "2.1.2",
@ -4380,21 +4112,6 @@
"statuses": "~1.5.0"
},
"dependencies": {
"debug": {
"version": "2.6.9",
"resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
"integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
"requires": {
"ms": "2.0.0"
},
"dependencies": {
"ms": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
"integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g="
}
}
},
"ms": {
"version": "2.1.1",
"resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz",
@ -4546,11 +4263,6 @@
"extsprintf": "^1.2.0"
}
},
"wrappy": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
"integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8="
},
"x-xss-protection": {
"version": "1.3.0",
"resolved": "https://registry.npmjs.org/x-xss-protection/-/x-xss-protection-1.3.0.tgz",
@ -4565,15 +4277,6 @@
"joi": "^13.1.2",
"node-expat": "^2.3.18"
}
},
"youtube-search-without-api-key": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/youtube-search-without-api-key/-/youtube-search-without-api-key-1.0.2.tgz",
"integrity": "sha512-WAQZYBmgarclZCvptB9HnPA9lbTA5b08Q0Qj+l/92PNilZltcCF6fwC1LUFZxEQ40Mc88zOJrivlReR9SHcLHw==",
"requires": {
"cheerio": "^1.0.0-rc.3",
"got": "^11.1.2"
}
}
}
}

@ -41,10 +41,8 @@
"url": "https://github.com/aruppi/aruppi-api.git"
},
"dependencies": {
"animeflv-scrapper": "^0.2.12",
"body-parser": "^1.19.0",
"cheerio": "^1.0.0-rc.3",
"cheerio-tableparser": "^1.0.1",
"cloudscraper": "^4.6.0",
"compose-middleware": "^5.0.1",
"cors": "^2.8.5",

@ -1,6 +1,5 @@
const rss = require('rss-to-json');
const cloudscraper = require('cloudscraper');
const animeflv = require("animeflv-scrapper");
const {
animeflvInfo,
@ -13,40 +12,14 @@ const {
} = require('../utils/index');
const {
BASE_ANIMEFLV, BASE_ANIMEFLV_JELU, BASE_JIKAN, BASE_IVOOX, BASE_KUDASAI, BASE_PALOMITRON, BASE_RAMENPARADOS
BASE_ANIMEFLV, BASE_ANIMEFLV_JELU, BASE_JIKAN, BASE_IVOOX, BASE_QWANT, BASE_YOUTUBE
} = require('./urls');
const schedule = async (day) =>{
const data = await cloudscraper.get(`${BASE_JIKAN}schedule/${day}`);
const data = await cloudscraper.get(`${BASE_JIKAN}schedule/${day.current}`);
const body = JSON.parse(data)[day.current]
const promises = []
let body;
switch (day) {
case "monday":
body = JSON.parse(data).monday;
break;
case "tuesday":
body = JSON.parse(data).tuesday;
break;
case "wednesday":
body = JSON.parse(data).wednesday;
break;
case "thursday":
body = JSON.parse(data).thursday;
break;
case "friday":
body = JSON.parse(data).friday;
break;
case "saturday":
body = JSON.parse(data).saturday;
break;
case "sunday":
body = JSON.parse(data).sunday;
break;
default:
body = JSON.parse(data).monday;
}
body.map(doc =>{
@ -55,27 +28,32 @@ const schedule = async (day) =>{
malid: doc.mal_id,
image: doc.image_url
});
});
return Promise.all(promises);
return promises;
};
const top = async (type, subtype, page) =>{
const data = await cloudscraper.get(`${BASE_JIKAN}top/${type}/${page}/${subtype}`);
let body = JSON.parse(data).top;
return Promise.all(body);
return JSON.parse(data).top;
};
const getAllAnimes = async () =>{
const data = await cloudscraper.get(`${BASE_ANIMEFLV}api/animes/list`);
let body = JSON.parse(data);
return Promise.all(body);
const body = JSON.parse(data);
return body.map(item => ({
index: item[0],
animeId: item[3],
title: item[1],
id: item[2],
type: item[4]
}));
};
@ -112,61 +90,35 @@ const getAnitakume = async () =>{
});
return Promise.all(promises);
return promises;
};
const getNews = async () =>{
const getNews = async (pageRss) =>{
const promises = []
await rss.load(BASE_KUDASAI).then(rss => {
const body = JSON.parse(JSON.stringify(rss, null, 3)).items
body.map(doc =>{
promises.push({
title: doc.title,
url: doc.link,
author: 'Kudasai',
content: doc.content_encoded
});
});
});
await rss.load(BASE_PALOMITRON).then(rss => {
const body = JSON.parse(JSON.stringify(rss, null, 3)).items
body.map(doc =>{
for(let i = 0; i <= pageRss.length -1; i++) {
promises.push({
title: doc.title,
url: doc.link,
author: 'Palomitron',
content: doc.description
});
});
await rss.load(pageRss[i].url).then(rss => {
});
const body = JSON.parse(JSON.stringify(rss, null, 3)).items
body.map(doc => {
await rss.load(BASE_RAMENPARADOS).then(rss => {
promises.push({
title: doc.title,
url: doc.link,
author: pageRss[i].author,
content: doc[pageRss[i].content]
});
const body = JSON.parse(JSON.stringify(rss, null, 3)).items
body.map(doc =>{
promises.push({
title: doc.title,
url: doc.link,
author: 'Ramen para dos',
content: doc.content
});
});
});
}
return Promise.all(promises);
return promises;
};
@ -186,7 +138,7 @@ const season = async (year, type) =>{
});
});
return Promise.all(promises);
return promises;
};
@ -207,64 +159,14 @@ const getLastEpisodes = async () =>{
});
});
return Promise.all(promises);
};
const getMovies = async (type, page) =>{
const data = await cloudscraper.get(`${BASE_ANIMEFLV_JELU}Movies/${type}/${page}`);
let body = JSON.parse(data).movies;
const promises = []
body.map(doc =>{
promises.push({
id: doc.id,
title: doc.title,
banner: doc.banner,
image: doc.poster,
synopsis: doc.synopsis,
status: doc.debut,
rate: doc.rating,
genres: doc.genres.map(x => x),
episodes: doc.episodes.map(x => x)
});
});
return Promise.all(promises);
};
const getOvas = async (type, page) =>{
const data = await cloudscraper.get(`${BASE_ANIMEFLV_JELU}Ova/${type}/${page}`);
let body = JSON.parse(data).ova;
const promises = []
body.map(doc =>{
promises.push({
id: doc.id,
title: doc.title,
banner: doc.banner,
image: doc.poster,
synopsis: doc.synopsis,
status: doc.debut,
rate: doc.rating,
genres: doc.genres.map(x => x),
episodes: doc.episodes.map(x => x)
});
});
return Promise.all(promises);
return promises;
};
const getSpecials = async (type, page) =>{
const getSpecials = async (type, subType, page) =>{
const data = await cloudscraper.get(`${BASE_ANIMEFLV_JELU}Special/${type}/${page}`);
let body = JSON.parse(data).special;
const data = await cloudscraper.get(`${BASE_ANIMEFLV_JELU}${type.url}/${subType}/${page}`);
let body = JSON.parse(data)[type.prop];
const promises = []
body.map(doc =>{
@ -282,60 +184,40 @@ const getSpecials = async (type, page) =>{
});
});
return Promise.all(promises);
return promises;
};
const getTv = async (type, page) =>{
const data = await cloudscraper.get(`${BASE_ANIMEFLV_JELU}Tv/${type}/${page}`);
let body = JSON.parse(data).tv;
const promises = []
body.map(doc =>{
promises.push({
id: doc.id,
title: doc.title,
banner: doc.banner,
image: doc.poster,
synopsis: doc.synopsis,
status: doc.debut,
rate: doc.rating,
genres: doc.genres.map(x => x),
episodes: doc.episodes.map(x => x)
});
});
return Promise.all(promises);
};
const getMoreInfo = async (title) =>{
const promises = []
let animeTitle =""
let animeId = ""
let animeType = ""
let animeTitle = ''
let animeId = ''
let animeType = ''
let animeIndex = ''
await animeflv.searchAnime(title).then(data => {
await getAllAnimes().then(data => {
data.forEach(function (anime) {
if (anime.label.split('\t')[0] === title.split('\t')[0] || anime.label === `${title} (TV)`) {
if (anime.label.includes('(TV)', 0)) { animeTitle = anime.label.split('\t')[0].replace(' (TV)', '') }
else { animeTitle = anime.label.split('\t')[0] }
animeId = anime.animeId
if (anime.title.split('\t')[0] === title.split('\t')[0] || anime.title === `${title} (TV)`) {
if (anime.title.includes('(TV)', 0)) { animeTitle = anime.title.split('\t')[0].replace(' (TV)', '') }
else { animeTitle = anime.title.split('\t')[0] }
animeId = anime.id
animeIndex = anime.index
animeType = anime.type.toLowerCase()
}
}
)
});
try{
switch (animeType) {
case "anime":
promises.push(await animeflvInfo(animeId).then(async extra => ({
case "tv":
promises.push(await animeflvInfo(animeId, animeIndex).then(async extra => ({
title: animeTitle || null,
poster: await imageUrlToBase64(extra.animeExtraInfo[0].poster) || null,
synopsis: extra.animeExtraInfo[0].synopsis || null,
@ -355,7 +237,7 @@ const getMoreInfo = async (title) =>{
})
})));
break;
case "película":
case "movie":
promises.push(await animeflvInfo(animeId).then(async extra => ({
title: animeTitle || null,
poster: await imageUrlToBase64(extra.animeExtraInfo[0].poster) || null,
@ -396,7 +278,8 @@ const getMoreInfo = async (title) =>{
console.log(err)
}
return Promise.all(promises);
return promises;
};
const getAnimeServers = async (id) => {
@ -404,12 +287,52 @@ const getAnimeServers = async (id) => {
const data = await cloudscraper.get(`${BASE_ANIMEFLV_JELU}GetAnimeServers/${id}`);
let body = JSON.parse(data).servers;
return Promise.all(await transformUrlServer(body));
return await transformUrlServer(body);
};
const search = async (title) =>{ return await searchAnime(title); };
const getImages = async (query) => {
const data = await cloudscraper.get(`${BASE_QWANT}count=${query.count}&q=${query.title}&t=${query.type}&safesearch=${query.safesearch}&locale=${query.country}&uiv=4`);
const body = JSON.parse(data).data.result.items;
const promises = []
body.map(doc =>{
promises.push({
type: doc.thumb_type,
thumbnail: `https:${doc.thumbnail}`,
fullsize: `https:${doc.media_fullsize}`
});
});
return promises;
};
const search = async (title) =>{
return await searchAnime(title);
const getYoutubeVideos = async (channelId) => {
const data = await cloudscraper.get(`${BASE_YOUTUBE}${channelId.id}&part=${channelId.part}&order=${channelId.order}&maxResults=${channelId.maxResults}`);
const body = JSON.parse(data)[channelId.prop];
const promises = []
body.map(doc =>{
promises.push({
title: doc.snippet.title,
videoId: doc.id.videoId,
thumbDefault: doc.snippet.thumbnails.default.url,
thumbMedium: doc.snippet.thumbnails.medium.url,
thumbHigh: doc.snippet.thumbnails.high.url
});
});
return promises;
};
module.exports = {
@ -420,11 +343,10 @@ module.exports = {
getNews,
season,
getLastEpisodes,
getMovies,
getOvas,
getSpecials,
getTv,
getMoreInfo,
getAnimeServers,
search
search,
getImages,
getYoutubeVideos
};

@ -24,7 +24,9 @@ router.get('/', (req, res) => {
'Tv': '/api/v2/tv/:type/:page',
'MoreInfo': '/api/v2/moreInfo/:title',
'GetAnimeServers': '/api/v2/getAnimeServers/:id',
'Search': '/api/v2/search/:title'
'Search': '/api/v2/search/:title',
'Images': '/api/v2/images/:query',
'Videos': '/api/v2/videos/:channelId'
}
]
});

@ -2,9 +2,11 @@ const express = require('express');
const router = express.Router();
const api = require('../api');
const { BASE_KUDASAI, BASE_PALOMITRON, BASE_RAMENPARADOS } = require('../urls');
router.get('/schedule/:day' , (req, res) =>{
let day = req.params.day;
let day = {current: req.params.day}
api.schedule(day)
.then(day =>{
@ -62,7 +64,13 @@ router.get('/anitakume' , (req, res) =>{
router.get('/news' , (req, res) =>{
api.getNews()
let pagesRss = [
{ url: BASE_KUDASAI, author: 'Kudasai', content: 'content_encoded' },
{ url: BASE_PALOMITRON, author: 'Palomitron', content: 'description' },
{ url: BASE_RAMENPARADOS, author: 'Ramen para dos', content: 'content' }
];
api.getNews(pagesRss)
.then(news =>{
res.status(200).json({
news
@ -104,10 +112,11 @@ router.get('/lastEpisodes' , (req, res) =>{
router.get('/movies/:type/:page' , (req, res) =>{
let type = req.params.type;
let type = {url: 'Movies', prop: 'movies'}
let subType = req.params.type;
let page = req.params.page;
api.getMovies(type, page)
api.getSpecials(type, subType, page)
.then(movies =>{
res.status(200).json({
movies
@ -120,10 +129,11 @@ router.get('/movies/:type/:page' , (req, res) =>{
router.get('/ovas/:type/:page' , (req, res) =>{
let type = req.params.type;
let type = {url: 'Ova', prop: 'ova'}
let subType = req.params.type;
let page = req.params.page;
api.getOvas(type, page)
api.getSpecials(type, subType, page)
.then(ovas =>{
res.status(200).json({
ovas
@ -136,10 +146,11 @@ router.get('/ovas/:type/:page' , (req, res) =>{
router.get('/specials/:type/:page' , (req, res) =>{
let type = req.params.type;
let type = {url: 'Special', prop: 'special'}
let subType = req.params.type;
let page = req.params.page;
api.getSpecials(type, page)
api.getSpecials(type, subType, page)
.then(specials =>{
res.status(200).json({
specials
@ -152,10 +163,11 @@ router.get('/specials/:type/:page' , (req, res) =>{
router.get('/tv/:type/:page' , (req, res) =>{
let type = req.params.type;
let type = {url: 'Tv', prop: 'tv'}
let subType = req.params.type;
let page = req.params.page;
api.getSpecials(type, page)
api.getSpecials(type, subType, page)
.then(tv =>{
res.status(200).json({
tv
@ -171,26 +183,10 @@ router.get('/moreInfo/:title' , (req, res) =>{
let title = req.params.title;
api.getMoreInfo(title)
.then(body =>{
const data = JSON.stringify(body);
const myEscapedJSONString = data
.replace(/\\n/g, "\\n")
.replace(/\\'/g, "\\'")
.replace(/\\"/g, '\\"')
.replace(/\\&/g, "\\&")
.replace(/\\r/g, "\\r")
.replace(/\\t/g, "\\t")
.replace(/\\b/g, "\\b")
.replace(/\\f/g, "\\f");
const info = JSON.parse(myEscapedJSONString)
if (info.length > 0) {
res.status(200).json({
info
});
} else { res.status(400) }
.then(info =>{
res.status(200).json({
info
});
}).catch((err) =>{
console.error(err);
});
@ -227,5 +223,34 @@ router.get('/search/:title' , (req, res) =>{
});
router.get('/images/:query' , (req, res) =>{
let query = { title: req.params.query, count: '51', type: 'images', safesearch: '1', country: 'es_ES', uiv: '4' };
api.getImages(query)
.then(images =>{
res.status(200).json({
images
});
}).catch((err) =>{
console.error(err);
});
});
router.get('/videos/:channelId' , (req, res) =>{
let channelId = { id: req.params.channelId, part: 'snippet,id', order: 'date', maxResults: '50', prop: 'items' };
api.getYoutubeVideos(channelId)
.then(videos =>{
res.status(200).json({
videos
});
}).catch((err) =>{
console.error(err);
});
});
module.exports = router;

@ -1,11 +1,13 @@
module.exports = {
BASE_ANIMEFLV: 'https://animeflv.net/',
BASE_ANIMEFLV_JELU: 'https://aruppi.jeluchu.xyz/apis/animeflv/v1/',
BASE_YOUTUBE: 'https://aruppi.jeluchu.xyz/apis/youtube/v3/search?channelId=',
BASE_JIKAN: 'https://aruppi.jeluchu.xyz/apis/jikan/v3/',
BASE_IVOOX: 'https://www.ivoox.com/podcast-anitakume_fg_f1660716_filtro_1.xml',
BASE_KUDASAI: 'https://somoskudasai.com/feed/',
BASE_PALOMITRON: 'https://elpalomitron.com/category/animemanga/feed/',
BASE_RAMENPARADOS: 'https://ramenparados.com/category/noticias/anime/feed/',
SEARCH_URL: 'https://animeflv.net/browse?q=',
BASE_EPISODE_IMG_URL: 'https://cdn.animeflv.net/screenshots/'
BASE_EPISODE_IMG_URL: 'https://cdn.animeflv.net/screenshots/',
BASE_QWANT: 'https://api.qwant.com/search/images?'
};

@ -6,11 +6,11 @@ const {
BASE_ANIMEFLV, BASE_JIKAN, BASE_EPISODE_IMG_URL, SEARCH_URL
} = require('../api/urls');
const animeflvInfo = async(id) =>{
const animeflvInfo = async (id, index) =>{
try{
const res = await cloudscraper(`${BASE_ANIMEFLV}anime/${id}`);
const body = await res;
const $ = cheerio.load(body);
const $ = cheerio.load(res);
const scripts = $('script');
const anime_info_ids = [];
const anime_eps_data = [];
@ -18,7 +18,6 @@ const animeflvInfo = async(id) =>{
const genres = [];
let listByEps;
let animeTitle = $('body div.Wrapper div.Body div div.Ficha.fchlt div.Container h2.Title').text();
let poster = `${BASE_ANIMEFLV}` + $('body div div div div div aside div.AnimeCover div.Image figure img').attr('src')
const banner = poster.replace('covers' , 'banners').trim();
let synopsis = $('body div div div div div main section div.Description p').text().trim();
@ -28,7 +27,6 @@ const animeflvInfo = async(id) =>{
animeExtraInfo.push({
title: animeTitle,
poster: poster,
banner: banner,
synopsis: synopsis,
@ -48,8 +46,8 @@ const animeflvInfo = async(id) =>{
const $script = $(scripts[k]);
const contents = $script.html();
if((contents || '').includes('var anime_info = [')) {
let anime_info = contents.split('var anime_info = ')[1].split(';')[0];
let dat_anime_info = JSON.parse(JSON.stringify(anime_info));//JSON.parse(anime_info);
let anime_info = contents.split('var anime_info = ')[1].split(';\n')[0];
let dat_anime_info = JSON.parse(anime_info);
anime_info_ids.push(dat_anime_info);
}
if((contents || '').includes('var episodes = [')) {
@ -58,9 +56,10 @@ const animeflvInfo = async(id) =>{
anime_eps_data.push(eps_data);
}
});
const AnimeThumbnailsId = anime_info_ids[0].split(',')[0].split('"')[1];
const AnimeThumbnailsId = index;
const animeId = id;
let nextEpisodeDate = anime_info_ids[0].split('"')[7] || null
let nextEpisodeDate = anime_info_ids[0][3] || null;
const amimeTempList = [];
for(const [key , value] of Object.entries(anime_eps_data)){
let episode = anime_eps_data[key].map(x => x[0]);
@ -74,7 +73,7 @@ const animeflvInfo = async(id) =>{
let id = data[1];
let imagePreview = `${BASE_EPISODE_IMG_URL}${AnimeThumbnailsId}/${episode}/th_3.jpg`
let link = `${id}/${animeId}-${episode}`
// @ts-ignore
animeListEps.push({
episode: episode,
id: link,
@ -88,6 +87,7 @@ const animeflvInfo = async(id) =>{
}catch(err){
console.error(err)
}
};
const getAnimeCharacters = async(title) =>{
@ -237,7 +237,7 @@ const animeExtraInfo = async(title) =>{
const imageUrlToBase64 = async(url) => {
Buffer.clear
return await base64.encode(url, {string:true});
return base64.encode(url, {string:true});
};
const search = async() =>{ }
@ -277,13 +277,13 @@ const transformUrlServer = async(urlReal) =>{
for(i = 0; i <= urlReal.length -1; i++){
switch (urlReal[i].server) {
case "amus": // Izanagi
case "amus":
res = await cloudscraper(urlReal[i].code.replace("embed","check"));
body = await res;
urlReal[i].code = JSON.parse(body).file
urlReal[i].direct = true
break;
case "natsuki": // Natsuki
case "natsuki":
res = await cloudscraper(urlReal[i].code.replace("embed","check"));
body = await res;
urlReal[i].code = JSON.parse(body).file

Loading…
Cancel
Save