discord-player-deezer
Advanced tools
Comparing version
@@ -24,2 +24,6 @@ import { Track, ExtractorStreamable, BaseExtractor, ExtractorSearchContext, Playlist as Playlist$1, ExtractorInfo, Player } from 'discord-player'; | ||
}; | ||
declare const Warnings: { | ||
readonly MissingDecryption: "Decryption Key missing! This is needed for extracting streams."; | ||
}; | ||
type Warnings = (typeof Warnings)[keyof typeof Warnings]; | ||
declare class DeezerExtractor extends BaseExtractor<DeezerExtractorOptions> { | ||
@@ -67,2 +71,2 @@ static identifier: string; | ||
export { type ArrayOrObject, DeezerExtractor, type DeezerExtractorOptions, type DeezerSearchTrackResponse, type DeezerUserInfo, buildTrackFromSearch, deezerRegex, extractTrackId, getCrypto, searchOneTrack, streamTrack, validate }; | ||
export { type ArrayOrObject, DeezerExtractor, type DeezerExtractorOptions, type DeezerSearchTrackResponse, type DeezerUserInfo, Warnings, buildTrackFromSearch, deezerRegex, extractTrackId, getCrypto, searchOneTrack, streamTrack, validate }; |
@@ -34,2 +34,3 @@ "use strict"; | ||
DeezerExtractor: () => DeezerExtractor, | ||
Warnings: () => Warnings, | ||
buildTrackFromSearch: () => buildTrackFromSearch, | ||
@@ -52,2 +53,3 @@ deezerRegex: () => deezerRegex, | ||
var import_stream = require("stream"); | ||
var import_blowfish_node = __toESM(require("blowfish-node")); | ||
var IV = Buffer.from(Array.from({ length: 8 }, (_, x) => x)); | ||
@@ -160,12 +162,9 @@ var rawCrypto; | ||
} | ||
const blowfishDecrypter = new import_blowfish_node.default(new Uint8Array(trackKey), import_blowfish_node.default.MODE.CBC, import_blowfish_node.default.PADDING.NULL); | ||
blowfishDecrypter.setIv(new Uint8Array(IV)); | ||
while (buffer.length >= bufferSize) { | ||
const bufferSized = buffer.subarray(0, bufferSize); | ||
if (i % 3 === 0) { | ||
const decipher = crypto.createDecipheriv( | ||
"bf-cbc", | ||
trackKey, | ||
IV | ||
).setAutoPadding(false); | ||
passThrough.write(decipher.update(bufferSized)); | ||
passThrough.write(decipher.final()); | ||
const decipher = Buffer.from(blowfishDecrypter.decode(new Uint8Array(bufferSized), import_blowfish_node.default.TYPE.UINT8_ARRAY)); | ||
passThrough.write(decipher); | ||
} else { | ||
@@ -191,5 +190,8 @@ passThrough.write(bufferSized); | ||
// src/DeezerExtractor.ts | ||
var Warnings = { | ||
MissingDecryption: "Decryption Key missing! This is needed for extracting streams." | ||
}; | ||
var DeezerExtractor = class extends import_discord_player2.BaseExtractor { | ||
async activate() { | ||
if (!this.options.decryptionKey) process.emitWarning("Decryption Key missing! This is needed for extracting streams."); | ||
if (!this.options.decryptionKey) process.emitWarning(Warnings.MissingDecryption); | ||
else { | ||
@@ -236,2 +238,6 @@ const crypto = await getCrypto(); | ||
async handle(query, context) { | ||
if (deezerRegex.share.test(query)) { | ||
const redirect = await fetch(query); | ||
query = redirect.url; | ||
} | ||
const metadata = await (0, import_deezer_music_metadata.getData)(query); | ||
@@ -271,2 +277,3 @@ if (metadata?.type === "song") return this.createResponse(null, [this.buildTrack(metadata, context)]); | ||
DeezerExtractor, | ||
Warnings, | ||
buildTrackFromSearch, | ||
@@ -273,0 +280,0 @@ deezerRegex, |
{ | ||
"name": "discord-player-deezer", | ||
"version": "2.0.0", | ||
"version": "2.1.0", | ||
"description": "A custom extractor made for discord-player that enables you to extract from Deezer.", | ||
@@ -10,3 +10,4 @@ "main": "dist/index.js", | ||
"dependencies": { | ||
"@mithron/deezer-music-metadata": "^1.0.3" | ||
"@mithron/deezer-music-metadata": "^1.0.3", | ||
"blowfish-node": "^1.1.4" | ||
}, | ||
@@ -25,3 +26,4 @@ "devDependencies": { | ||
"lint": "tslint -p tsconfig.json", | ||
"npm:publish": "yarn build && npm publish --access public" | ||
"npm:publish": "yarn build && npm publish --access public", | ||
"prepare": "tsup" | ||
}, | ||
@@ -28,0 +30,0 @@ "repository": { |
@@ -35,10 +35,2 @@ # Discord Player Deezer | ||
}) | ||
``` | ||
# Important information | ||
As Node has migrated from openssl for decryption, we must use the `--openssl-legacy-provider` flag when starting our application with stream extraction | ||
```bash | ||
$ node --openssl-legacy-provider yourfile.js | ||
``` |
36354
53.6%11
37.5%640
75.34%2
100%35
-18.6%6
20%+ Added
+ Added