11// ==UserScript==
22// @name Speedrun.com Helper
33// @namespace https://github.com/jc3213/userscript
4- // @version 1.5 .0
4+ // @version 1.6 .0
55// @description Easy way for speedrun.com to open record window
66// @author jc3213
77// @match https://www.speedrun.com/*
@@ -15,7 +15,7 @@ let srFixed = fixedPanePlayer();
1515let srDrag ;
1616let srY ;
1717let srX ;
18- let srPane = 0 ;
18+ let srPane = - 1 ;
1919let srWatch = location . pathname . split ( '/' ) ?. [ 1 ] ;
2020var { clientWidth, clientHeight} = document . documentElement ;
2121
@@ -54,7 +54,7 @@ document.querySelector('main').addEventListener('contextmenu', (event) => {
5454} ) ;
5555
5656function mainboard ( event ) {
57- speedrunRecord ( event , 'div.flex.flex-row.flex-wrap.items-start.justify-start.p-2 ' , ( record ) => {
57+ speedrunRecord ( event , 'div.cursor-pointer.x-focus-outline-offset.overflow-hidden ' , ( record ) => {
5858 let [ rank , time , player ] = record . querySelectorAll ( 'a > .truncate, a.x-username-truncate' ) ;
5959 return { url : rank . parentNode . href , rank, player, time} ;
6060 } ) ;
@@ -94,19 +94,19 @@ async function speedrunRecord(event, selector, callback) {
9494 return ;
9595 }
9696 worker [ id ] = true ;
97- let title = ' <div>Rank: ' + rank . innerHTML + ' </div><div>Player: ' + player . innerHTML + ' </div><div>Time: ' + time . textContent + ' </div>' ;
97+ let title = ` <div>Rank: ${ rank . innerHTML } </div><div>Player: ${ player . innerHTML } </div><div>Time: ${ time . textContent } </div>` ;
9898 if ( speedrun [ id ] ) {
9999 worker [ id ] = false ;
100100 speedrun [ id ] . style . cssText = style [ id ] = fixedPanePosition ( speedrun [ id ] . offset ) ;
101101 return document . body . appendChild ( speedrun [ id ] ) ;
102102 }
103103 let response = await fetch ( url ) ;
104104 let html = await response . text ( ) ;
105- let xml = document . createElement ( 'div' ) ;
106- xml . innerHTML = html ;
107- let iframe = xml . querySelector ( 'iframe[class]' ) ;
105+ let start = html . indexOf ( '<iframe' ) ;
106+ let end = html . indexOf ( '</iframe>' , start ) + 9 ;
107+ let iframe = html . substring ( start , end ) ;
108+ console . log ( iframe ) ;
108109 createRecordWindow ( id , title , top , iframe ) ;
109- xml . remove ( ) ;
110110}
111111
112112const recordHandlers = {
@@ -153,13 +153,19 @@ document.addEventListener('drop', (event) => {
153153function createRecordWindow ( id , title , top , player ) {
154154 let pane = document . createElement ( 'div' ) ;
155155 pane . id = 'speedrun-' + id ;
156- pane . offset = srPane * 30 ;
156+ pane . offset = ++ srPane * 30 ;
157157 pane . className = 'speedrun-window' ;
158158 pane . draggable = true ;
159- pane . innerHTML = `<div class="speedrun-record">${ title } </div>
160- <div class="speedrun-menu"><div id="speedrun-minimum">➖</div><div id="speedrun-restore">🔳</div><div id="speedrun-maximum">🔲</div><div id="speedrun-remove">❌</div></div>` ;
159+ pane . innerHTML = `
160+ <div class="speedrun-record">${ title } </div>
161+ <div class="speedrun-menu">
162+ <div id="speedrun-minimum">➖</div>
163+ <div id="speedrun-restore">🔳</div>
164+ <div id="speedrun-maximum">🔲</div>
165+ <div id="speedrun-remove">❌</div>
166+ </div>
167+ ${ player } `;
161168 pane . style . cssText = style [ id ] = fixedPanePosition ( pane . offset ) ;
162- pane . appendChild ( player ) ;
163169 pane . addEventListener ( 'click' , ( event ) => {
164170 let handler = recordHandlers [ event . target . id ] ;
165171 if ( handler ) {
@@ -168,7 +174,6 @@ function createRecordWindow(id, title, top, player) {
168174 } ) ;
169175 document . body . appendChild ( pane ) ;
170176 speedrun [ id ] = pane ;
171- ++ srPane ;
172177 worker [ id ] = false ;
173178}
174179
0 commit comments