BGGからゲーム情報を簡単に取得するブックマークレット(新版2)
せっかくなのでAI壁打ちでブックマークレットを進化してみました。あと発売年がうまく取れない。
ソースはあえて全く見てません。
せっかくなのでAI壁打ちでブックマークレットを進化してみました。あと発売年がうまく取れない。
ソースはあえて全く見てません。
javascript:(function(){function q(s){return document.querySelector(s);}function t(e){return e?(e.textContent||e.innerText||%27%27).trim().replace(/\s+/g,%27 %27):%27%27;}setTimeout(function(){var ta=document.createElement(%27textarea%27);ta.style.cssText=%27position:fixed;top:10px;left:10px;width:380px;height:220px;z-index:999999;font-size:14px;padding:10px;background:#fff;border:3px solid #c00;box-shadow:0 0 15px rgba(0,0,0,0.5);font-family:monospace;resize:both;';var title=t(q('h1 a'))||'不明';var year='不明';var h1=q('h1');if(h1){var h1txt=t(h1).replace(/[\s\n\r\t]+/g,' ');var m=h1txt.match(/\(\s*(\d{4})\s*\)/);if(m)year=m[1]+'年';}var pub=t(q('a[href*="/boardgamepublisher/"]'))||'不明';var players='不明',time='不明';var header=q('main, .game-header, [data-test-id*="game"]');if(header){var rows=header.querySelectorAll('[class*="row"], [class*="info"], .info-bar-row');for(var i=0;i<rows.length;i++){var r=rows[i];var label=t(r.querySelector('[class*="label"], .label'));var value=t(r.querySelector('[class*="value"], .value'));if(label&&/players|人数/i.test(label))players=value;if(label&&/time|playing|時間/i.test(label))time=value;}}if(players==='不明'){var bodyTxt=document.body.innerText.substring(0,10000);var pm=bodyTxt.match(/(?:Players?|人数)[\s:–\-\—]*(\d+)(?:[\s–\-\—]+(\d+))?/i);if(pm){if(pm[2]){players=pm[1]+'〜'+pm[2]+'人';}else{players=pm[1]+'人';}}}if(time==='不明'){var bodyTxt=document.body.innerText.substring(0,10000);var tm=bodyTxt.match(/(?:Playing Time|Time)[\s:–\-\—]*(\d+)(?:[\s–\-\—]+(\d+))?\s*(min|minutes|分)?/i);if(tm){if(tm[2]){time=tm[1]+'〜'+tm[2]+'分';}else{time=tm[1]+'分';}}}players=players.replace(/[–\-\—]/g,'〜').replace(/players?|人数/gi,'人').replace(/\s+/g,'');time=time.replace(/[–\-\—]/g,'〜').replace(/min|minutes/gi,'分').replace(/\s+/g,'');ta.value='原題:'+title+'\n作成:'+pub+'\n発売:'+year+'\nプレイ人数:'+players+'\nプレイ時間:'+time;document.body.appendChild(ta);ta.focus();ta.select();},1000);})();プレイ人数、プレイ時間が単独の場合も幅がある場合も対応するようにしてみたバージョンです。

コメント