extract credits from mobygames - I'm using a temporary email for this greasyfork so don't expect updates <3
// ==UserScript==
// @name Moby Credits Textifier 2024
// @namespace http://tampermonkey.net/
// @version 0.2
// @copyright https://en.wikipedia.org/wiki/WTFPL
// @license WTFPL
// @description extract credits from mobygames - I'm using a temporary email for this greasyfork so don't expect updates <3
// @author Curious, aren't we?
// @match https://www.mobygames.com/game/*/*/credits/*
// @icon https://www.google.com/s2/favicons?sz=64&domain=mobygames.com
// @require https://code.jquery.com/jquery-3.7.1.min.js
// @grant none
// ==/UserScript==
(function() {
'use strict';
// Your code here...
function waitForElm(selector) {
return new Promise(resolve => {
if (document.querySelector(selector)) {
return resolve(document.querySelector(selector));
}
const observer = new MutationObserver(mutations => {
if (document.querySelector(selector)) {
observer.disconnect();
resolve(document.querySelector(selector));
}
});
// If you get "parameter 1 is not of type 'Node'" error, see https://stackoverflow.com/a/77855838/492336
observer.observe(document.body, {
childList: true,
subtree: true
});
});
}
waitForElm('main#main').then((elm) => {
var $ = window.jQuery;
$('h1').after('<textarea style="background-color: LemonChiffon;" id="mobyex-txt"></textarea><button id="mobyex-btn">allText</button>');
$('#mobyex-btn').click(function(){
var txtCredits = '';
$('table.table-credits > tbody > tr').each(function(){
$(this).find('th h4').each(function(){
txtCredits += '\n\n' + $(this).text();
});
if ( $(this).find('td').length ) {
$(this).find('td:nth-child(1)').each(function(){
txtCredits += '\n\n' + $(this).text();
});
//$(this).find('td:nth-child(2) ul li').each(function(){ // not since 2024-03-14 or so
$(this).find('td:nth-child(2)').text().split(', ').forEach(function(item, index){
//txtCredits += '\n' + $(this).text();
txtCredits += '\n' + item;
});
}
});
$('#mobyex-txt').text(txtCredits.trim());
});
});
})();