66// @description Powerful picture viewing tool online, which can popup/scale/rotate/batch save pictures or find the HD original picture automatically
77// @description :zh-CN NLF 的围观图修改版,增加高清原图查找显示(在线看图工具,支持图片翻转、旋转、缩放、弹出大图、批量保存、查找原图)
88// @description :zh-TW NLF 的圍觀圖修改版,增加高清原圖查詢顯示(線上看圖工具,支援圖片翻轉、旋轉、縮放、彈出大圖、批量儲存、查詢原圖)
9- // @version 2017.2.21 .1
9+ // @version 2017.2.27 .1
1010// @created 2011-6-15
1111// @namespace http://userscripts.org/users/NLF
1212// @homepage http://hoothin.com
1313// @connect www.google.com
14+ // @connect www.google.com.hk
15+ // @connect www.google.co.jp
16+ // @connect ipv4.google.com
1417// @connect image.baidu.com
1518// @connect www.tineye.com
1619// @grant GM_getValue
@@ -8317,6 +8320,7 @@ background-image:url("'+ prefs.icons.magnifier +'");\
83178320 if ( searchState ) searchState . innerHTML = words ;
83188321 }
83198322
8323+ var searchSort = [ "Tineye" , "Google" , "Baidu" ] ;
83208324 function searchImgByImg ( imgSrc , callBack , onError , noneResult , searchFrom ) {
83218325 let srcs = [ ] ;
83228326 var searchBaidu = function ( ) {
@@ -8330,7 +8334,7 @@ background-image:url("'+ prefs.icons.magnifier +'");\
83308334 setTimeout ( function ( ) {
83318335 setSearchState ( "" ) ;
83328336 } , 2000 ) ;
8333- if ( noneResult ) noneResult ( ) ;
8337+ searchNext ( ) ;
83348338 return ;
83358339 }
83368340 if ( baiduJson . data [ 0 ] ) {
@@ -8340,13 +8344,13 @@ background-image:url("'+ prefs.icons.magnifier +'");\
83408344 srcs . push ( imgData . objURL ) ;
83418345 }
83428346 setSearchState ( "百度识图结束,共找到" + srcs . length + "张匹配图片" ) ;
8343- callBack ( srcs , 2 ) ;
8347+ callBackFun ( srcs ) ;
83448348 } else {
83458349 setSearchState ( "未找到原图" ) ;
83468350 setTimeout ( function ( ) {
83478351 setSearchState ( "" ) ;
83488352 } , 2000 ) ;
8349- if ( noneResult ) noneResult ( ) ;
8353+ searchNext ( ) ;
83508354 return ;
83518355 }
83528356 } , onError ) ;
@@ -8361,17 +8365,18 @@ background-image:url("'+ prefs.icons.magnifier +'");\
83618365 getUrl ( "https://www.google.com" + sizeUrl . getAttribute ( "href" ) , function ( d ) {
83628366 googleHtml . documentElement . innerHTML = d . responseText ;
83638367 let imgs = googleHtml . querySelectorAll ( "div.rg_meta" ) ;
8368+ if ( imgs . length == 0 ) { searchNext ( ) ; return ; }
83648369 srcs = [ ] ;
83658370 for ( let img of imgs ) {
83668371 if ( srcs . length > 2 ) break ;
83678372 let jsonData = JSON . parse ( img . innerHTML ) ;
83688373 srcs . push ( jsonData . ou ) ;
83698374 }
83708375 setSearchState ( "谷歌识图结束,共找到" + srcs . length + "张匹配图片" ) ;
8371- callBack ( srcs , 3 ) ;
8376+ callBackFun ( srcs ) ;
83728377 } , onError ) ;
83738378 } else {
8374- searchBaidu ( ) ;
8379+ searchNext ( ) ;
83758380 }
83768381 } , onError ) ;
83778382 } ;
@@ -8388,26 +8393,38 @@ background-image:url("'+ prefs.icons.magnifier +'");\
83888393 srcs . push ( img . href ) ;
83898394 }
83908395 setSearchState ( "Tineye识图结束,共找到" + srcs . length + "张匹配图片" ) ;
8391- callBack ( srcs , 1 ) ;
8396+ callBackFun ( srcs ) ;
83928397 } else {
8393- searchGoogle ( ) ;
8398+ searchNext ( ) ;
83948399 }
83958400 } , onError ) ;
83968401 } ;
8397- switch ( searchFrom ) {
8398- case 3 :
8399- searchBaidu ( ) ;
8400- break ;
8401- case 2 :
8402- searchGoogle ( ) ;
8403- break ;
8404- case 1 :
8405- searchTineye ( ) ;
8406- break ;
8407- default :
8408- searchTineye ( ) ;
8409- break ;
8410- }
8402+ var searchNext = function ( ) {
8403+ searchFrom ++ ;
8404+ if ( searchFrom <= 3 ) switchSearch ( ) ;
8405+ else if ( noneResult ) noneResult ( ) ;
8406+ } ;
8407+ var callBackFun = function ( srcs ) {
8408+ callBack ( srcs , searchFrom ) ;
8409+ } ;
8410+ if ( ! searchFrom ) searchFrom = 1 ;
8411+ var switchSearch = function ( ) {
8412+ switch ( searchSort [ searchFrom - 1 ] ) {
8413+ case "Baidu" :
8414+ searchBaidu ( ) ;
8415+ break ;
8416+ case "Google" :
8417+ searchGoogle ( ) ;
8418+ break ;
8419+ case "Tineye" :
8420+ searchTineye ( ) ;
8421+ break ;
8422+ default :
8423+ searchTineye ( ) ;
8424+ break ;
8425+ }
8426+ } ;
8427+ switchSearch ( ) ;
84118428 }
84128429
84138430 init2 ( ) ;
0 commit comments