Compare commits

..

2 Commits

Author SHA1 Message Date
HugoPoi
67a78c2de2 1.0.7 2020-09-06 16:56:00 +02:00
HugoPoi
c1ff3fe5a0 fix: spotify doesn't embed the payload anymore 2020-09-06 16:55:23 +02:00
3 changed files with 27 additions and 11 deletions

View File

@ -15,18 +15,30 @@ require('dotenv').config();
async function getSpotifyPlaylist(playListUrl){ async function getSpotifyPlaylist(playListUrl){
const spotifyPlaylistPageContent = await fetch(playListUrl) const spotifyPlaylistPageContent = await fetch(playListUrl, {
headers: {
'User-Agent': 'Mozilla/5.0 (X11; Linux x86_64; rv:80.0) Gecko/20100101 Firefox/80.0',
}
})
.then(res => res.text()) .then(res => res.text())
const $ = Cheerio.load(spotifyPlaylistPageContent); const $ = Cheerio.load(spotifyPlaylistPageContent);
let playlist; let config;
$('script').each(function(i, elem){ $('script#config').each(function(i, elem){
const content = $(this).html(); config = JSON.parse($(this).html());
if(/Spotify.Entity/.test(content)){
playlist = vm.runInNewContext(content);
}
}); });
debug('config=%O', config);
const playlistSpotifyId = /\/playlist\/([^\/]+)\/?$/.exec(playListUrl)[1];
const playlist = await fetch(`https://api.spotify.com/v1/playlists/${playlistSpotifyId}?type=track%2Cepisode`, {
headers: {
'User-Agent': 'Mozilla/5.0 (X11; Linux x86_64; rv:80.0) Gecko/20100101 Firefox/80.0',
Authorization: `Bearer ${config.accessToken}`
}
}).then(res => res.json());
return playlist; return playlist;
} }
@ -55,7 +67,7 @@ async function searchOnVkMusic(query){
} }
async function searchOnMyFreeMp3(query){ async function searchOnMyFreeMp3(query){
const url = new URL('https://myfreemp3cc.com/api/search.php?callback=callback'); const url = new URL('https://myfreemp3cc.com/api/search.php?callback=jQuery666');
return await fetch(url, { return await fetch(url, {
method: 'POST', method: 'POST',
@ -65,7 +77,11 @@ async function searchOnMyFreeMp3(query){
}), }),
}) })
.then(res => res.text()) .then(res => res.text())
.then(jsonp => vm.runInNewContext(jsonp, { callback: (payload) => payload.response })) .then(page => {
debug('page=%O', page);
return page;
})
.then(jsonp => vm.runInNewContext(jsonp, { jQuery666: (payload) => payload.response }))
.then(items => _.filter(items, item => !_.isString(item))); .then(items => _.filter(items, item => !_.isString(item)));
} }

2
package-lock.json generated
View File

@ -1,6 +1,6 @@
{ {
"name": "vk-music-dl", "name": "vk-music-dl",
"version": "1.0.6", "version": "1.0.7",
"lockfileVersion": 1, "lockfileVersion": 1,
"requires": true, "requires": true,
"dependencies": { "dependencies": {

View File

@ -1,6 +1,6 @@
{ {
"name": "vk-music-dl", "name": "vk-music-dl",
"version": "1.0.6", "version": "1.0.7",
"description": "Download Spotify playlist as mp3 from VKontakte", "description": "Download Spotify playlist as mp3 from VKontakte",
"main": "index.js", "main": "index.js",
"scripts": { "scripts": {