mirror of
https://github.com/murdos/musicbrainz-userscripts
synced 2024-12-14 20:22:27 +00:00
Merge pull request #104 from madmouser1/Takealot
Takealot importer fixes
This commit is contained in:
commit
682d355296
1 changed files with 83 additions and 14 deletions
|
@ -1,7 +1,7 @@
|
||||||
// ==UserScript==
|
// ==UserScript==
|
||||||
// @name Import Takealot releases to MusicBrainz
|
// @name Import Takealot releases to MusicBrainz
|
||||||
// @description Add a button to import Takealot releases to MusicBrainz
|
// @description Add a button to import Takealot releases to MusicBrainz
|
||||||
// @version 2016.03.15.1
|
// @version 2016.03.15.2
|
||||||
// @namespace https://github.com/murdos/musicbrainz-userscripts
|
// @namespace https://github.com/murdos/musicbrainz-userscripts
|
||||||
// @include http*://www.takealot.com/*
|
// @include http*://www.takealot.com/*
|
||||||
// @downloadURL https://raw.github.com/murdos/musicbrainz-userscripts/master/takealot_importer.user.js
|
// @downloadURL https://raw.github.com/murdos/musicbrainz-userscripts/master/takealot_importer.user.js
|
||||||
|
@ -22,7 +22,7 @@ this.$ = this.jQuery = jQuery.noConflict(true);
|
||||||
if (!unsafeWindow) unsafeWindow = window;
|
if (!unsafeWindow) unsafeWindow = window;
|
||||||
|
|
||||||
var DEBUG = false;
|
var DEBUG = false;
|
||||||
//DEBUG = false;
|
//DEBUG = true;
|
||||||
if (DEBUG) {
|
if (DEBUG) {
|
||||||
LOGGER.setLevel('debug');
|
LOGGER.setLevel('debug');
|
||||||
}
|
}
|
||||||
|
@ -34,6 +34,7 @@ if (DEBUG) {
|
||||||
* - http://www.takealot.com/theuns-jordaan-roeper-cd/PLID17284867 - working (Single artist release)
|
* - http://www.takealot.com/theuns-jordaan-roeper-cd/PLID17284867 - working (Single artist release)
|
||||||
* - http://www.takealot.com/various-artists-still-the-one-3cd/PLID40723650 - a dirty example
|
* - http://www.takealot.com/various-artists-still-the-one-3cd/PLID40723650 - a dirty example
|
||||||
* - http://www.takealot.com/now-71-various-artists-cd/PLID40688034 - working (Various Artists and Multi Disc)
|
* - http://www.takealot.com/now-71-various-artists-cd/PLID40688034 - working (Various Artists and Multi Disc)
|
||||||
|
* - http://www.takealot.com/various-clubtraxxx-15-cd/PLID41391268 - working - do check if tracklist not in product info then look if tracklist in description
|
||||||
*/
|
*/
|
||||||
|
|
||||||
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
|
@ -64,7 +65,7 @@ function insertMbUI(mbUI) {
|
||||||
|
|
||||||
// Insert links in Takealot page
|
// Insert links in Takealot page
|
||||||
function insertMBSection(release) {
|
function insertMBSection(release) {
|
||||||
LOGGER.debug("insertMBsection Firing");
|
//LOGGER.debug("insertMBsection Firing");
|
||||||
|
|
||||||
var mbUI = $('<div class="section musicbrainz"><h3>MusicBrainz</h3></div>').hide();
|
var mbUI = $('<div class="section musicbrainz"><h3>MusicBrainz</h3></div>').hide();
|
||||||
|
|
||||||
|
@ -191,12 +192,10 @@ function ParseTakealotPage() {
|
||||||
var currentdiscnumber = parseInt(disctracktitle[1]);
|
var currentdiscnumber = parseInt(disctracktitle[1]);
|
||||||
|
|
||||||
if (currentdiscnumber == k) {
|
if (currentdiscnumber == k) {
|
||||||
|
|
||||||
var track = new Object();
|
var track = new Object();
|
||||||
track.number = parseInt(disctracktitle[2]);
|
track.number = parseInt(disctracktitle[2]);
|
||||||
track.title = disctracktitle[3];
|
track.title = disctracktitle[3];
|
||||||
LOGGER.debug("The track object: ", currentdiscnumber + ' - ' + track.number + " - " + track.title);
|
LOGGER.debug("The track object: ", currentdiscnumber + ' - ' + track.number + " - " + track.title);
|
||||||
|
|
||||||
tracklistarray.push(track);
|
tracklistarray.push(track);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -212,9 +211,7 @@ function ParseTakealotPage() {
|
||||||
|
|
||||||
// Logic added to derive the release title from the heading if missing from product info
|
// Logic added to derive the release title from the heading if missing from product info
|
||||||
if (releasetitle == "") {
|
if (releasetitle == "") {
|
||||||
// sample header "Huisgenoot Se 20 Country-Treffers - Various Artists (CD)"
|
|
||||||
var MediaHeading = document.querySelectorAll("h1.fn");
|
var MediaHeading = document.querySelectorAll("h1.fn");
|
||||||
// LOGGER.debug(MediaHeading[0].innerText);
|
|
||||||
var TitleStr = MediaHeading[0].innerText;
|
var TitleStr = MediaHeading[0].innerText;
|
||||||
var TitleRegex = /(.*)-(.*)+\s\(([^)]+)\)/;
|
var TitleRegex = /(.*)-(.*)+\s\(([^)]+)\)/;
|
||||||
var HeadArray = TitleStr.match(TitleRegex);
|
var HeadArray = TitleStr.match(TitleRegex);
|
||||||
|
@ -227,9 +224,83 @@ function ParseTakealotPage() {
|
||||||
releasetitle = HeadArray[1].trim();
|
releasetitle = HeadArray[1].trim();
|
||||||
}
|
}
|
||||||
LOGGER.debug("Release Title from heading:", releasetitle);
|
LOGGER.debug("Release Title from heading:", releasetitle);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
var thediscnumber = 0;
|
||||||
|
var descriptionarray = [];
|
||||||
|
|
||||||
|
if (lastdiscnumber > 0) {
|
||||||
|
LOGGER.debug("** Tracklist present in Product Info tab **");
|
||||||
|
} else {
|
||||||
|
LOGGER.debug(" ** No tracks in Product Info tab let's have a look in description tab");
|
||||||
|
|
||||||
|
// Select all data in the "Description" div id = prod-desc
|
||||||
|
var allprodinfo = document.querySelectorAll("div#prod-desc > br");
|
||||||
|
for (var k = 0; k < allprodinfo.length - 1; k++) {
|
||||||
|
descriptionrow = allprodinfo[k].nextSibling.textContent.trim();
|
||||||
|
// LOGGER.debug("PROD-INFO > BR > ",descriptionrow);
|
||||||
|
// regex to find Disc 1 and add 1 to a group ^Disc+(.\d)
|
||||||
|
descriptionrowregex = /^Disc+(.\d)/;
|
||||||
|
var founddisc = descriptionrow.match(descriptionrowregex);
|
||||||
|
// LOGGER.debug(" **** DISC FOUND ****", founddisc);
|
||||||
|
if (founddisc != null) {
|
||||||
|
var thediscnumber = parseInt(founddisc[1]);
|
||||||
|
// LOGGER.debug(" **** DISC FOUND NUMBER ****", thediscnumber);
|
||||||
|
}
|
||||||
|
// LOGGER.debug("PROD-INFO > BR > ",thediscnumber + '-' + descriptionrow);
|
||||||
|
|
||||||
|
// regex to split the description row into track, title and artist (^\d).(.*)-(.*)
|
||||||
|
var descriptionrowregex = /(^\d+).(.*)-(.*)/;
|
||||||
|
var descriptionrow_tracktitleartist = descriptionrow.match(descriptionrowregex);
|
||||||
|
|
||||||
|
// do the same as in tracklist and push the disc numbers into an array
|
||||||
|
descriptiontrack = new Object();
|
||||||
|
|
||||||
|
if (descriptionrow_tracktitleartist != null) {
|
||||||
|
descriptiontrack.disc = thediscnumber;
|
||||||
|
descriptiontrack.track = descriptionrow_tracktitleartist[1];
|
||||||
|
descriptiontrack.title = descriptionrow_tracktitleartist[2];
|
||||||
|
descriptiontrack.artist = descriptionrow_tracktitleartist[3];
|
||||||
|
|
||||||
|
//to get the last disc number via iterate
|
||||||
|
var description_lastdisc = parseInt(thediscnumber);
|
||||||
|
descriptionarray.push(descriptiontrack);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// Discs
|
||||||
|
var disclistarray = new Array(); // create the tracklist array to use later
|
||||||
|
|
||||||
|
|
||||||
|
for (var desc_discs = 0; desc_discs < description_lastdisc; desc_discs++) {
|
||||||
|
var tracklistarray = new Array();
|
||||||
|
for (var desc__track = 0; desc__track < descriptionarray.length; desc__track++) {
|
||||||
|
|
||||||
|
var desc_currentdiscnumber = descriptionarray[desc__track].disc;
|
||||||
|
if (desc_currentdiscnumber == desc_discs + 1) {
|
||||||
|
var track = new Object();
|
||||||
|
var track_artist_credit = new Array();
|
||||||
|
|
||||||
|
track.number = descriptionarray[desc__track].track;
|
||||||
|
track.title = descriptionarray[desc__track].title;
|
||||||
|
|
||||||
|
var track_artist_credit_object = new Object();
|
||||||
|
track_artist_credit_object.artist_name = descriptionarray[desc__track].artist;
|
||||||
|
track_artist_credit.push(track_artist_credit_object);
|
||||||
|
//track_artist_credit.artist_name = descriptionarray[desc__track].artist;
|
||||||
|
track.artist_credit = track_artist_credit;
|
||||||
|
tracklistarray.push(track);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
disclistarray.push(tracklistarray);
|
||||||
|
}
|
||||||
|
lastdiscnumber = description_lastdisc;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
release = new Object();
|
release = new Object();
|
||||||
|
|
||||||
// Release artist credit
|
// Release artist credit
|
||||||
|
@ -256,8 +327,8 @@ function ParseTakealotPage() {
|
||||||
|
|
||||||
release.discs = new Array();
|
release.discs = new Array();
|
||||||
for (var l = 0; l < lastdiscnumber; l++) {
|
for (var l = 0; l < lastdiscnumber; l++) {
|
||||||
LOGGER.debug("Disc position:", l + 1);
|
// LOGGER.debug("Disc position:", l + 1);
|
||||||
LOGGER.debug("Tracklist for the selected disc: ", disclistarray[l]);
|
// LOGGER.debug("Tracklist for the selected disc: ", disclistarray[l]);
|
||||||
var disc = {
|
var disc = {
|
||||||
'position': l + 1,
|
'position': l + 1,
|
||||||
'tracks': disclistarray[l]
|
'tracks': disclistarray[l]
|
||||||
|
@ -271,8 +342,9 @@ function ParseTakealotPage() {
|
||||||
release.urls = new Array();
|
release.urls = new Array();
|
||||||
release.urls.push({
|
release.urls.push({
|
||||||
'url': window.location.href,
|
'url': window.location.href,
|
||||||
'link_type': MBImport.URL_TYPES.purchase_for_download
|
'link_type': MBImport.URL_TYPES.purchase_for_mail_order
|
||||||
}); //type 74 is purchase for download
|
}); //type 74 is purchase for download
|
||||||
|
// TODO check if CD then add purchase medium
|
||||||
|
|
||||||
// Release date
|
// Release date
|
||||||
var releasedate = releasedaterel;
|
var releasedate = releasedaterel;
|
||||||
|
@ -298,12 +370,9 @@ function ParseTakealotPage() {
|
||||||
// Takealot -> MusicBrainz mapping //
|
// Takealot -> MusicBrainz mapping //
|
||||||
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
|
||||||
var Languages = new Array();
|
var Languages = new Array();
|
||||||
Languages["Afrikaans"] = "afr";
|
Languages["Afrikaans"] = "afr";
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
var Countries = new Array();
|
var Countries = new Array();
|
||||||
Countries["Afghanistan"] = "AF";
|
Countries["Afghanistan"] = "AF";
|
||||||
Countries["Albania"] = "AL";
|
Countries["Albania"] = "AL";
|
||||||
|
|
Loading…
Reference in a new issue