Skip to content

Instantly share code, notes, and snippets.

@krasnobaev
Created February 6, 2017 21:30
Show Gist options
  • Save krasnobaev/0cc99f41abca65061548619751a2237f to your computer and use it in GitHub Desktop.
Save krasnobaev/0cc99f41abca65061548619751a2237f to your computer and use it in GitHub Desktop.
work with audio
/*
Trackid – 0 : "456239225"

ownerid – 1 : "212204800"

? – 2 : ""

track name – 3 : "Emotion"

track artist – 4 : "FGFC820"

? – 5 : 313

album id – 6 : 83025823

? – 7 : 0

? – 8 : ""

? – 9 : 5993455

? – 10 : 518
? – 11 : ""

? – 12 : "[]"

? – 13 : "/d3a121904b72b7c10d/06224d9074e50401b7"

*/
/* fetch tracks data from another account */
/**
* Store track list
*
* All tracks should be visible on audios page
*
* @param {<type>} acc The acc
* @return {<type>} { description_of_the_return_value }
*/
var storeTrackList = function (acc) {
if (typeof acc === 'undefined') {
return;
}
var aplayer = getAudioPlayer();
return aplayer.getPlaylist('album', acc).getAudiosList();
};
JSON.stringify(storeTrackList()); // tracklist.json
/**
* Store albums
*
* @return {Array} { description_of_the_return_value }
*/
var storeAlbums = function () {
var albums = [];
// document.querySelectorAll('.audio_albums_wrap .audio_album_item')
document.querySelectorAll('.ui_rmenu_pr .audio_album_item')
.forEach(function (album) {
albums.push({
albumowner: album.id.split('_').splice(-2)[0],
albumid: album.id.split('_').splice(-2)[1],
title: album.getElementsByClassName('audio_album_title')[0].innerText,
});
});
return albums;
};
JSON.stringify(storeAlbums()); // albums.json
/* add tracks and albums */
/**
* Adds tracks
*
* @todo implement chaining via (Promises)
*
* @param {string} acc The acc
* @param {<type>} arrTracks The arr tracks
*/
var addTracks = function (acc, arrTracks) {
arrTracks.forEach(function (track) {
setTimeout(function () {
AudioUtils.addAudio(this('#audio_' + acc + '_' + track + ' .audio_info'));
}.bind($), 3000);
});
};
/**
* Adds tracks via Promises
*
* @param {string} acc The acc
* @param {<type>} arrTracks The arr tracks
*/
var addTracksPromises = function (acc, arrTracks) {
var sequence = Promise.resolve();
var aTasks = arrTracks.map(function (track, i) {
sequence = sequence.then(function () {
var processTrack = function (track, i) {
var chain = null;
var dialogIsOpen = new Promise(function (resolve, reject) {
var checkSelector = setInterval(function () {
if (document.getElementsByClassName('box_title_wrap').length) {
console.log('captcha box is open');
} else {
console.log('captcha box is not open');
console.log(i + ': ' + track);
resolve(i, track);
clearInterval(checkSelector);
}
}, 1000);
});
return dialogIsOpen;
};
return processTrack(track, i).then(function () {
AudioUtils.addAudio(document.getElementById('audio_' + acc + '_' + track)
.getElementsByClassName('audio_info')[0]
);
});
}.bind(this));
});
};
/**
* createAlbum('sex', ["456239216", "456239215", "456239213"])
*
* @param {string} title
* @param {[string]} aTrackIds
*/
var createAlbum = function (title, aTrackIds) {
AudioPage($('#ui_rmenu_audio_album_add>span>div')).createAlbum(new MouseEvent(0));
$('#album_name').value = title;
AudioPage.saveAlbum(aTrackIds, $('button.flat_button'), 0);
};
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment