File size: 1,483 Bytes
028f29e
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
const axios = require('axios');

const cheerio = require('cheerio');



async function spotifydl(url) {

    try {

        if (!url.includes('open.spotify.com')) throw new Error('Invalid url.');

        

        const rynn = await axios.get('https://spotdl.io/', {

            headers: {

                'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36'

            }

        });

        const $ = cheerio.load(uzip.data);

        

        const api = axios.create({

            baseURL: 'https://spotdl.io',

            headers: {

                cookie: uzip.headers['set-cookie'].join('; '),

                'content-type': 'application/json',

                'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36',

                'x-csrf-token': $('meta[name="csrf-token"]').attr('content')

            }

        });

        

        const [{ data: meta }, { data: dl }] = await Promise.all([

            api.post('/getTrackData', { spotify_url: url }),

            api.post('/convert', { urls: url })

        ]);

        

        return {

            ...meta,

            download_url: dl.url

        };

    } catch (error) {

        throw new Error(error.message);

    }

}



// Usage:

const resp = await spotifydl('https://open.spotify.com/track/6yID3RbYKiwn2p2LPz0OkK');

console.log(resp);