14
14
self . SERVICE_ID = 'PXV' ;
15
15
self . SITE_NAME = 'Pixiv' ;
16
16
17
- self . ID_FANTASY_DISPLAY = 'ankpixiv-fantasy-display' ,
17
+ self . ID_FANTASY_DISPLAY = 'ankpixiv-fantasy-display' ;
18
+
19
+ var _images = null ;
20
+ var _imagesOriginal = null ;
18
21
19
22
/********************************************************************************
20
23
* プロパティ
88
91
} ;
89
92
let ( e = illust . mediumImage ) {
90
93
if ( e )
91
- return e . parentNode ;
94
+ return e . parentNode . parentNode ;
92
95
} ;
93
96
} ,
94
97
@@ -171,9 +174,9 @@ try {
171
174
172
175
get mediumImage ( ) {
173
176
return (
174
- query ( '.works_display > a > img' )
177
+ query ( '.works_display > a > div > img' )
175
178
||
176
- query ( '.works_display > * > a > img' )
179
+ query ( '.works_display > * > a > div > img' )
177
180
||
178
181
query ( '.works_display canvas' )
179
182
) ;
@@ -333,6 +336,19 @@ try {
333
336
self . info . path . _getImage ( AnkBase . Prefs . get ( 'downloadOriginalSize' , false ) ) , // }}}
334
337
335
338
_getImage : function ( mangaOriginalSizeCheck ) {
339
+ if ( ! mangaOriginalSizeCheck ) {
340
+ if ( ! _images )
341
+ _images = self . info . path . _getImageMain ( mangaOriginalSizeCheck ) ;
342
+ return _images ;
343
+ }
344
+ else {
345
+ if ( ! _imagesOriginal )
346
+ _imagesOriginal = self . info . path . _getImageMain ( mangaOriginalSizeCheck ) ;
347
+ return _imagesOriginal ;
348
+ }
349
+ } ,
350
+
351
+ _getImageMain : function ( mangaOriginalSizeCheck ) {
336
352
if ( self . in . ugoira ) {
337
353
// うごイラ
338
354
return {
@@ -359,12 +375,26 @@ try {
359
375
// TODO pixivの構成変更で見開き表示が正しく表示されなくなったので、pixivが直してくれるまで見開き対応は無効化
360
376
let im = [ ] ;
361
377
let fp = [ ] ;
362
- AnkUtils . A ( doc . querySelectorAll ( '.manga > .item-container > img' ) ) .
363
- some ( function ( v ) {
378
+ if ( ! mangaOriginalSizeCheck ) {
379
+ AnkUtils . A ( doc . querySelectorAll ( '.manga > .item-container > img' ) ) .
380
+ some ( function ( v ) {
381
+ if ( im . length > MAX )
382
+ return true ;
383
+ im . push ( v . getAttribute ( 'data-src' ) ) ;
384
+ } ) ;
385
+ }
386
+ else {
387
+ AnkUtils . A ( doc . querySelectorAll ( '.manga > .item-container > a' ) ) .
388
+ some ( function ( a ) {
364
389
if ( im . length > MAX )
365
390
return true ;
366
- im . push ( v . getAttribute ( 'data-src' ) ) ;
391
+ let href = indexPage ;
392
+ href = href . replace ( / ^ ( h t t p s ? : \/ \/ .+ ?) (?: \/ .* ) $ / , "$1" ) + a . href ;
393
+ AnkUtils . dump ( href ) ;
394
+ let doc = AnkUtils . createHTMLDocument ( AnkUtils . httpGET ( href , indexPage ) ) ;
395
+ im . push ( doc . querySelector ( 'img' ) . src ) ;
367
396
} ) ;
397
+ }
368
398
369
399
if ( im . length > 0 ) {
370
400
if ( fp . length > 0 && fp [ fp . length - 1 ] < fp . length ) {
@@ -376,30 +406,6 @@ try {
376
406
fp = null ;
377
407
}
378
408
379
- if ( mangaOriginalSizeCheck ) {
380
- function replaceMangaImageUrl ( v ) {
381
- return ( v . match ( / _ b i g _ p \d + \. / ) ? v : v . replace ( / _ p ( \d + ) \. / , '_big_p$1.' ) ) ;
382
- }
383
-
384
- let bigurl = replaceMangaImageUrl ( im [ 0 ] ) ;
385
- if ( bigurl ) {
386
- const cookieManager = Cc [ "@mozilla.org/cookiemanager;1" ] . getService ( Ci . nsICookieManager2 ) ;
387
- cookieManager . add (
388
- '.pixiv.net' ,
389
- '/' ,
390
- 'pixiv_embed' ,
391
- 'pix' ,
392
- false ,
393
- false ,
394
- false ,
395
- new Date ( ) . getTime ( ) + ( 1000 * 60 * 60 * 24 * 365 )
396
- ) ;
397
-
398
- if ( AnkUtils . remoteFileExists ( bigurl ) )
399
- im = im . map ( function ( v ) replaceMangaImageUrl ( v ) ) ;
400
- }
401
- }
402
-
403
409
return { images : im , facing : fp , } ;
404
410
}
405
411
}
@@ -461,7 +467,7 @@ try {
461
467
} // }}}
462
468
463
469
// 大画像関係
464
- if ( ! mod . elements . illust . ugoiraContainer ) {
470
+ if ( ! mod . in . ugoira ) {
465
471
if ( AnkBase . Prefs . get ( 'largeOnMiddle' , true ) && AnkBase . Prefs . get ( 'largeOnMiddle.' + mod . SITE_NAME , true ) ) {
466
472
new AnkViewer (
467
473
mod ,
0 commit comments