@@ -11,30 +11,44 @@ await page.goto(`${KIRANICO_URL}/${weaponPrefix}`);
1111
1212const skins : Skin [ ] = [ ] ;
1313
14- const skinLinks = await page . locator ( 'table' ) . first ( ) . locator ( 'a' ) . all ( ) ;
14+ const skinElements = await page . locator ( 'td[rowspan]' ) . all ( ) ;
15+
1516const skinUrls = await Promise . all (
16- skinLinks . map ( ( skinLink : Locator ) => skinLink . getAttribute ( 'href' ) ) ,
17+ skinElements . map ( async ( td : Locator ) => {
18+ try {
19+ const firstLink = td . locator ( 'a' ) . first ( ) ;
20+ return await firstLink . getAttribute ( 'href' ) ;
21+ } catch ( error ) {
22+ const innerText = await td . innerText ( ) ;
23+ console . log (
24+ `Weapon ${ weaponId } - Error getting skin URL for ${ innerText } :` ,
25+ error ,
26+ ) ;
27+ return null ;
28+ }
29+ } ) ,
1730) ;
1831
19- for ( const skinUrl of skinUrls ) {
20- if ( skinUrl ) {
21- const skinPage = await browser . newPage ( ) ;
22- await skinPage . goto ( skinUrl ) ;
23-
24- const skinName = await skinPage . locator ( 'rt' ) . first ( ) . innerText ( ) ;
25- const skinId = await skinPage . evaluate ( ( ) => {
26- const div = document . querySelector ( 'div#model-viewer.center-block' ) ;
27- if ( div ) {
28- const bgImage = window . getComputedStyle ( div ) . backgroundImage ;
29- return bgImage . replace ( / \D / g, '' ) ;
30- }
31- return 'Not found' ;
32- } ) ;
33-
34- console . log ( `Weapon ${ weaponId } - Skin ${ skinId } : ${ skinName } ` ) ;
35- skins . push ( { id : skinId , name : skinName } ) ;
36- await skinPage . close ( ) ;
37- }
32+ const filteredSkinUrls = skinUrls . filter ( ( url ) => url !== null ) ;
33+ console . log ( `Found ${ filteredSkinUrls . length } skins for weapon ${ weaponId } ` ) ;
34+
35+ for ( const skinUrl of filteredSkinUrls ) {
36+ const skinPage = await browser . newPage ( ) ;
37+ await skinPage . goto ( skinUrl ) ;
38+
39+ const skinName = await skinPage . locator ( 'rt' ) . first ( ) . innerText ( ) ;
40+ const skinId = await skinPage . evaluate ( ( ) => {
41+ const div = document . querySelector ( 'div#model-viewer.center-block' ) ;
42+ if ( div ) {
43+ const bgImage = window . getComputedStyle ( div ) . backgroundImage ;
44+ return bgImage . replace ( / \D / g, '' ) ;
45+ }
46+ return 'Not found' ;
47+ } ) ;
48+
49+ console . log ( `Weapon ${ weaponId } - Skin ${ skinId } : ${ skinName } ` ) ;
50+ skins . push ( { id : skinId , name : skinName } ) ;
51+ await skinPage . close ( ) ;
3852}
3953
4054await page . close ( ) ;
0 commit comments