From ff857cc28ec4392140ce3baceab45f18970bbfc2 Mon Sep 17 00:00:00 2001 From: sigonasr2 Date: Mon, 13 Apr 2020 12:35:54 +0900 Subject: [PATCH] Add in a retry system for failed images, so they get another chance to send a request and try again if needed. --- Tagger/Tagger.jar | Bin 7485858 -> 7486416 bytes Tagger/src/PixivManager.java | 273 +++++++++++++++++++---------------- Tagger/src/imageTag.java | 1 + 3 files changed, 152 insertions(+), 122 deletions(-) diff --git a/Tagger/Tagger.jar b/Tagger/Tagger.jar index 02e660ca37394397aa72cbdcac553d23beda7643..b7f6f04f060ece8ec6fa4a60687a5cfb7c649be4 100644 GIT binary patch delta 22290 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 delta 21733 zcmZu%2RxVG_s^s3z4y%CdzF!7L`Jk^XV1?kN%JEqWh9B4OTP%28Oh)ShUL_?uS zNmBjKG%5gdYwMr?{n_C=bk&C`#cZ7-=#l2eV3liX)XOymL*G=mMkgpOlMQV zPJ31xn6NPakWF|SYRiu5d6AZo4}ICs{Ev@)supH!QR8RH z;yEI9R_2(lRJZN>*3$TKcyXXpK^JB!Op89{m#A>u9I<{UCW%)TV=oW8|*t=A-cNO z%Elt1&w(!SVa>_Tz3p9zJ(sK$ z1#Uy0?B7TC zl*g%-)f{qL(L(1V+dJ)5u=DCl{SSkkYWAJCqf6P_wQgK{U@f~nL5$rcp+IrdZoN|q zBIKh5hCB)Kt#{XAwxe$~oW50V`n}vx<*TSHhmc;zvyiHD?)BAcD3KpcweMV$ZP;mb zHto#v9`_zIOEs_If&|IuO#1yj59Ge^%x{^YKmEmOCjRbauKUL=G_%)8#ji;A&1iMn zwszH~CS?&8#xjR6W*w2F+7rjmZyHlfzb+qQE4}tl$75y{uVr&qhf0U*G;i`UJh!rn z-IcU&g`ie;!`ec#g+WAtQN*+aA2=<}(&4kbOO{y6Em^{|WXTez;Mm|82cHO^K!38j zUzpGK?G>Au_qx8l@~80X&QJF82HD$gFHd3OIJpX2ZgJd|@lG4pavlL&J2v0f^4l}m z>;u|1Gd+wKcy!J6;*Qc={OH^kcm956?zK-hB=3u<>FeujeKvEYk5XUzdB>iR+=A_a z_m(fMZW&>75|F!^aDxqnR3QGz~7KzwKOnuooKF^6NywPe;*3hy+RI~lGMBlOKj z_OW}@rO@0L`OAYkR;4?UjVwwpy|8i0J#EpmY?+nu_(L(p03(5oid&kr`SkM@rB5=H z(5FW|VamD1zvgk&t!4EO5rzBu(+WRSD>qVX^Z9X3>Z;d|oDV4NExD?5(nh{q)PVW4 zi#7i_o}}As$V6zPr^j~N(APKC9{Qpy-lNK0oY1^f*Q1?{l~1=N;KbAEn(U(!#hW_W z>XtwFz1o8u=)x5EVK&a{dDBXvB!#?LDfefuVsB;fr%t4NI$2ugO?scAf z)b!*idxBATxnA;@_6Hp<0Wu#P*ZgAEx!ID^p@gpO*LtcZDfy_HTYUWWHr*0>ijUp5 zqcbFim|-49eUhreRrmIQdlYMX^VdgsCFP!cm&>R&-}h_t+K&PnmrS;kUY^!LPj<-x|IF_6rXr)EE#Ouy17Zwu6>Nhrb;+K!$HLmEQTyHcg7kz5fhn*Z?BXTLl z`llHWC-1v;JQwcWcV6}6ylg`FiH&)baxn$htvtu>) zh<(y2lMLQpS?smEs(WVkT$TAgv9zPgJ;tQEr1`#mVX0uZVRc5yV3zK%?NO3x-Xn=7 z-p0+m6c3O5*ohJ28E*|iBWndkb)Jn5pGvk?DkT_^mPuEY588|TKJqBCz(hsB;4S4` zpH!K4ha^jZ$=c&rMsB@)Wb-&>d3XNUD%P0~4LmI{dUU`UVH z9{fOF;gWn_wRTR@(qDpg74Bn^2E$v;e@7|$&ZUmmZyVQhDemQ2C+W3mWbEP5vDWP0 z=5gZN>3x26{&{b!fa-fOU-xZ=fNZA8oA zcjsoFb!GpqQ~X)x7%yNq`}4u-+iY{|wVEEaE}L+i$^I?Das0@Q?4gJZfrv+T!Bt<~ znRR}71k|V7o%&5zqar^PAX7cjeQgJ!WMiF>GYHPnx%twu=jPiojaJaWri->2HWM*?i|GSfy0{j+@>FA zSlcIS>Ah5f_Na~J?2O5+-liz>Xe#AlqhI#Apym*@%<0CQn)&(yx_chscU_6VhkHZnau|E%rww!#}JlE#xPJ8$z=lmDbKt(Wu8aR1_m z<;A8>_*e_|uR8s>J9=KMX~=s<_-MwNyYj_9&mQx7&3;U^tRUBA`>Woq?~*B&itE}^ zZDhi1I`d}LZUub#p1W7er2XjN_PZKWy`OHlULG~uF^@(mZ$=GHyxb@M*^c5p_uxJA zCrb3Z#_!cptq(SxqJJs$?&|iLpSdO(az3oTPmfe;?{{PP#ya#T`np=&@U~h#WAC(vZrzL9pPuM+DB0OzE~!8c5WT2)%D*gS^`MAs-4iPo zjn#L`qJA*jw56ZRpd8HGyW^5irT$KbBX*Z4VZ)90&aST>m>6n&yCL2Ab|YtI!L_k% z7AulV?a!01ZqSOi;C3$V;rsIC^Qm&S`K%F6% zo1!W)Q5WEze=v5cz|&CV8D&kzv*_-fj-C~xTl2FzTJGFB{VeCpCh57Vb*a&&1{YWB z7ObG4w<{w!e}7~yF3n!8`Oa+n7((|)W7>-|EKRl;rg150te_MFzpWqonOVrrrFG9 z6z{L;@|rz7-F~{7&%kKrW`?>?OMgwL+Ozlvxy1+7{U0n1Ydee8jn=vqtmn^u&!=(P zPeWNS{G7VPmplF6JDDx_53f(AB${TgP&mrCucDSB8xZxm{PVGy@7A(Mcc+V-SS|QL z)X?LLk<_yG(kuE;2mRanQ`NK63Z4bkbH56@WBJ8|)wMNf|NSchH^+=xYYQ%%Y4mO@ zz02|G!-w?c%CQ{VE2git?mPSPr2L0*;Z1?R-n`r=wzH1u)M*t*Ej>rA-`O3m*C=nV z>}5^A^LTsN)$&hE2W>k}-m{!HkPax+lzx8Xfitx>kA2Kd8{cHiO`8gN-5Q>n(Ec|5>~~&a$w;5>bj|R$ia#!= zbvC}8z5a^7!9eRP84^C9fBbskzba=n!#%YRYsbHDDcEWiUi|7vx_#^BmZ8f}5AY^- zx0y>}1Jd;{J`Gxt{?#(|xo)tL#Zg~`=_`9V_<)2>!UK=INU5+lUO!@V* z=lPQ7qeZVt{q}nXbSuK;9b|8RTaG-XH*T=D&B#fmXloQa{!k|4J|a?IXLNROXv0L^ zZL>9Mw{l%sRPt=QtBu@t@J!GCFezn|<|;2!%Sqaqn|()3Bib^*id0&=TIM>}VRnfs zW+kP2n>ydTbviKbJi9Hit&pSWtB+|uLl7m;fbG3=gYn8aO@n(sf=_b#(ouGq(9ig> zU%b4R$<37V^Q%>;z?s*g2^mf6K0mK~7+twL=&M8WG~2taez&qC0}_|zKB&5K1v5!9 z%D?ha^CJC6=g!Yxr>gafl-RqZ$4!zB<+p6&Q*;s8YH8R$wj!lfc4*}=SFN<_*J}*U z<0@bB&>FwQ$|LEX@0oJKV@1@kzRzcVseie4|D2e}zTcXZ4atVxRxLr({AV9^@jZLr zDlq$a%DX#DR+HtEsCd<}0XOWD^f&Fo(53yhpP2bJk0bvVqAQQ4#F`;c6PA{VHu)^x5KVOmu~x)Hc7lx+2w)O{TKl zt#e4tb|j-c{tuwUf1e2N`I%b zE62U9wRvOo(t53~?V6$ob&d^nNn2gvc_*Q-=A?XYSVg?8IIiDLpnmyUVb-pXyGgIg z8Si86qW5by22>ZC#cLdy*La&Uy`n9__mcVbw|nmgji_~#2HFcK$~F79`3NM}>7}*= zpV=9s%Tcqy#8p%QSlPc^5(tTyR zuCw=V6zJ~fIyJmYZ|H4P=1rx7!ZTAn7NglcV*;bS0;31Bd#21YEALN#78tcu?x@;- zU1E}>I7exJpme~tb(MQ4uk1$57+wopV_QD-ZP&^_6T9?M&CX2)*3C<8C7Xnn=(7EetFjL}b@!RS+@0_)#VHlbdRJW)B5`@p(lf1cg~K$*FTY41(+ynTE86nn zgD+MT9eN@2eO9+n!6Dgr@0Oe_Hir`<{LwKM%=zLE_s!|>39Wvx$Bq8GuFCh;Nz`~wF#{EWZ!EW1v-fAbF$mEe7)+xu7WR_0jb+rhs&}DjF=24jb-ub zb$Jb~#*xD{kB1~y^*Hwp>^f!oaYx{uresUG8mVcMjP)(sj;O6KUv*|^lkKOS8NDl? zz3WM{tPyw0Ihkp=hHg*UKJjC>sszVtlHRAShS=i4g zjkHI~7fvO)%nrS!+j1~?(~+L)gzk>lly+r_hEPpb(Mh_nwlJX!YfhCiXi7F#FWKXi zT;`nUSX_`1EB)z?Ou>%iDXz7#EbOx)Bc9DKV(H%xd8ii2sFrNrw2p4?DRnE^iQ7M- zSD-9V{Hm;8H0YgK!K9`yUKSovUhC$QI>A}vZtiVm{Q`1aF})~-x)sPk*MGZPrLA*{hQ`&gRtd+)N#Vuv3msQdF@%hc1% zjQOhMlW@|oPDv?jn~HkW)d+y0`D2 zpPlDv%&f1n-X*xlZHVl4OTm@>r>o#4*Rm>#SN`F$C&CR|@{c-R)N5E%(R$_Ms(~W) z_VZ8W2QGLf#b=%Heh2^ajq} zJal|+<3OMpJ?HcH!xlfWy|+Bmtj8;2pX}$BsM$G8+QX7KA=%D5(=p}$bH8ehWOL6< z?o`SzO3aGTCRVTd!Nm9DoFlt_^3I<7r6g7_+0HtHrcVD7oUQw%wzvIv;NFe&H_t20 z-h9`#woiB7JU1C#$&9sfPn8T2os_LOIK{BP{M(R1U(EG$t&{834iyGBPHmqc&$~1- zG(C>EE!w9xdnHD2f62?V!4Qq%oqgY@$Ps22|JzEBXRQs|Jj2x+8#$I z;wB=l<$YG9yiJ*t@wm0K!Km_6vE!t;f8OSek4(?0ykBv-C$m=4-_GQQ-Nr{x_pjSnS)j+wga?8pR{}*yViF2MXtZ`9xea zc>H1S?)a>lw+6*`fAgvNRG8AEUxrT~J}7sr{^g&uu71+?y{b^{xZ3NjhUWEON>Azx zvviOR-diO_@JdDnl%MW?JfZl0e$$$Rr|AOktunURSrk7lRdT?+QE=?Tx|svHei}Eg zCGYa;*p>R}UC_qcS=E%3Pxm&%Letlh^@g&!6F&rPf?^ z;P>DE=67xjXZ(*mvsn{6@$yXf!a4ogdaE4H){GwGhO+ANzyv>@>-1{&(uL7xte#=p zuOFN!nPpjVUcOsOXdU?=$M>JU+;_Dc#w%kfUpcN1HFrD{-|qBHV~TS8+k*xH@89F4 zl=f(8H4i7V8~aZxv@~5@!gzsuZjTO~`}3PSox2N5wzhm0&$7F4Xf`jh?(|-;f@{?R2hczDT6!59GjdfJY7hnD-Qg%9` zl{f5qYSY1KmC*w%b7GY>6^WD&)6=YVU92^^8<*YllS)i?m`Hw>W3Z+?@KySYjh##H z_)SY@Y^+JyA9Eq!>`#L4{2|8QUL@|{ht;pEO>DAr`FgL;&&ZZuM#=Ww>7A#lY<{s96y@C!v$AxRQBXepa$DN6@}fzX321z85d0Ky2u1i}o$ z0>TQy2Eq=)0m2Ew1;P!&1Huc!2f_~`03rw?1R@L~0wM|`1|kk30U`+^1tJY11A@o0 z97GO89z+2|5kv_@8AJs{6+{h09Yg~}6GRI{8$<_07eo(4AH)E}5X1;soLh;sUZB#1+I1WCO@X zkWC<)LAHRngKP!y0PzIz0`ac5l=T@tK{3osb`pN@MzZVZj)+bI6W;rYuKsx7jteApS)L$~FnZRsp*;&@gu>E@c-GBK>q3;Pto5VNzc zre=A1NZE$5pB`6CABO1N+_Eg1cXRR<$=avSzL$l36EpiNHo>^k+N@SmgtAkg(wKex z5WP|0`&U1kzW?aP&#;m(@f&qfpy6WQFCr?5GyB^l;z?zhpM=+&|G*qw7;c~45L zU42cK)58@%?;N{ZdrhKW+hs~X&_6AhBA-wY^1{l3wWsX}>D?K>v3v1thtzj*yTpb} zxSi4da<oa)goPT=xt26VuC1uXC-7hcssOuWJSNiPt*-+*q zJx|_HDXn-`xAWmZDD&%}S5C)CiHBP^$w+IuoHof70S=4 zIHL>2YiEw%TF$vTX_-aSO52wAO_C+4x$~zB_eaFT6DMy|X*J zK{-a#>)c1VxU6`OogtIA1ABL@Pu1T>KX|eT zxV$iB7w_^+tO_1_a2tz24szG~hH$lBF#=H#D5maI*y9P4IDs}Jm~%;qVhH%!{kU%CD2Yva<_ zLdSTq_SB^oTY1zIrL~?_7?QkP8GM%|MTritI=Y9yTJfjTows$%&t2}!d6Xh#5@)x{V6Y|q_Teh>+a6y==ysFlwH?>--M%GMsbpw5R?iq?kK8_Ojep&wL zm!i(dWyvj9YHm%BsNJbFiu*aG&mWmD9P$3h;rbD}H98sVgxF^1$aKoQ{7O^#A`&Op z#M;=|-EP#oZcX8N*B5X{OkhK9fzSP$oRUsczkN%uHC{W+Ic#a4rn6f{g`;g-s(6`N z&%D3Rk0XcEhW+lWP@5*__IKWvd#au5Vv>7ic!VX(bE2!DJYA|`|6Ui1D@%>Homq9( zp6j4=-II4tOE_PjoZq{pC2(@He0;&WO;F= ztlQz;d27u-?slz9)KI!WI=`+y__JTAq-y4pU0Vew=d*XocO2Z=JbZWj>&ZRz1MUJ! zg$b9(wJ)#FDz)~qW9zXg(46(_o#MZwp2R20U!JtJ*Z1&Hf~1jvWQSsa&Ye`>gkbFh zYn5+y+|;kARx1wF7WqP%l~9pZA8(QI3#hmd^nkCA^>acfy@tD0(mj`tn~`{J^2hyg z3U2eqpXF@0ZtFPqNcs_wszB@;Rime$BATR^v0XiNIqM$T zA*)PGmW{Gwu%m}zD)`~Z8E=a8+;mcR!kS%KX@WBfre$uf_f-mN?0yVLUpX<&vefX) z=Ji{;M+^tAcs7%Y$M*8K7lqz9B3r0?_M6(1;dU2Q*|Rw(_t<1mOr|%zGCP(jSgoA) zG_T_7kt=6kTzeeRpj+1AM<19f_$c}n_l@+yx5rpjf@bV4R=iG)R=K_DkOLECiqSe- zrZ9H>$6P~Yu^T%^p07}Ad(TxSE>IB__a`=t^zcPe?>a5Bt{$GoRNm)V)~u;7c5yeh z4W&JKU$qCD*fp*&b;(8|U##((dXdTVT+6{-j9+&xy_8wv+R$|%P;KLwEhlf=miW2@ zG5U|cnAp6y^Esfs$T;?l%XJ9_!wn?LH-@~EoNir%O!+mMXW6CfrWx`dZV+>M^if(- z+^SvWlYDMrZsi;4xr0+Aq5K_2dHaR_+;16I5c&Qvq_JtgSl~7NH=2Db5AU^{d|))t zJ6<}o)ikl@X@OBLIo6uvbI6Qm^Tm+LKZ|W{-yWi0jRQ<7SE@R^%HA z5+7H@|0(9wC>dl9%gGdIZkqB>F)E#3adVYX*!frvua@56NFm2z(b$xjh_?D!7UNrr zb?g6(oY|G$yl!tsw4~bA)Er5_Q4OthmPU;!1>RQ6e2J~it)*W_<0vO0cDYU-2);N} zHou=T?m};2Y?~yk8-4 zYMsJ^0`DBFj~^8#f0as&XYo(*wkgf7?mf)B)rYOn|Lpv#!%3vyZ#R4v!X9`EKYXd} zX%Tbm?P`i>$-@oG1r@5oRbumZWNrAezC38el(Ir@w36>vd4~z?&f41YMpW9jB&BOJ zk>AA~`QZi>{f3L3Sf8JZrUMT*R^}=p( zRnejBGY9yUe`_CFtHK;Qq{hW`KIy!xry1E=KU**_Yr6gqeIi$r4~Q>_AILTke~ zK#(AiV2}`yP>?W?aF7U)$a=1(s4-8h#1s7zCmF%l6v$A5^yBa66v$YTWTg84y(EX@ z)WW|r2VS$$zA{G#_L2BdjU-8eiCKEd5;$!I64V4xn43Iemm-Ns{eP#kzaIb8AZsa- zF*bZ19h4%OF8g}ZXUPsE%|PZutg<8?G%iKrz-)WaycEfVKBmV9-FoUHhrFaoiu84W z=$`rLp(a2W!xQvDnxu&-K0%@~Bm>O(36fSJ@uOfFk}?**0L0N{95gP1%3Zz;I3tF{ zWucO}Mf#yRi3!!nkVFwh0chi=xF2yedC!*-#i{tQqHMSpPS)FR^~M^eXLE&_8`P?ySqTBesMJs7@i8TtbZ z+9OMnL{Vki*pRC{7*s48RQ35RLl<#onuf_zAZcS3&j}x3!iM}6AWbQYO!EPM7Iaeq z3iU2B=8ORxNL&#Z`4>bfsa+&yv=e8d78rRn)DKm4DT1FXi;RR4Ne!D@1m;O3RM!(GUuZY9!6EO!xXJx&rtYn8#@*G0xDFmNf6>nJ(MwNXD_N(p_#ZT2q!FRXjv zR}EFFK!c^8ie+?;_CTDCTh@!11YGH6zSHX z19)U{pMts2VJJygNDxE2gO(wU8zf=$O$}m*Qz0p!Dwz-tv|b%N+rJ{JX&&-nLbWm^ z5fmj45ubXs5Koo{NdtTJ3TbJO*3-$NYBi{!OoOCO7li*Ufuvr9E=BViP}y06sQehp zjMixa@tz>!R)sO4LLlfBhkQ`8Xaqmn#Y|>H6PhrUOr{aL7Rii$Y!3+37$xB| zJ}l_C78EJ{`j^+jZquXJ`Y>Y6wP9YVa1bC{n`Dl;2;)E+-4OLVvcFlR^@ zXzIaaq_ZVJ*jit{EPWCiiVK1UT+$BEKItcDh>*7;upD=U&UHepCZ zN16C>BX3hEGHL}yge?f2=1xCGq_Kvy8gsUyVT#s3Q}t|Vn0?leZ%J#C7G`euFKte@ z5jk6v4A3`gNY)OQf3>X0!v;2cTURR0jG8z237~!(XzcB1DlLiZY=OzxNo9CZg)Mme z5l=8fb|eNAe#lRhXoks=f71Tv5Y>tmQS3-2m~s-8vBpx5Q2`S&wI{J7u5`#D^Z^%& zUkeF&o&LWD4fZgXXK>x}jDK}2v7PxejAXGNCz>yW|BmhhcfIydq_lw6zyVg4^A~Ui zws8j-raVm~0aWh*hAtPWv?n%RMg_v?@H%LGW);DhJHkPSs|L1u^{r3`qazeexJ=dA zVW;}2ML7}2OFuSLj=<3H)jwI9@Bi0|0mZ(8!-9qrWWMY5|LRhmU?F(Ngl zTyzCLCq;3fg*YX)E#^?q4RTl_j?;mdm^1D`86980O)P5zv_xe+PAH)Qw{83=1ZPIv zkk)1}Y2E;XD=?S}mZIaE;MDOkbQ>?xIh!|vdu@TDZtg%g6ybCfw(|`BYlOtMLd^TmEx5=k-NsFrT9y5i zeCASIZ-B~Q!f{#30QOZe5AZeHj*2}<>L}{|Hcr$W2UQ%xY40wa4#kpR;J-S^{OvY4 zNDaV$j-HTZoW$%mwi3Z(rRPzo2E zj24=z=nKA1C@$E+iI)j+sQ51&ZMe`5Re#zsYNY(vXwVmC){x;}VylTiH?e#K`hi1b z*T1TB8~pi+C9e-xZQQt^LQ>mciLP+}YnQVPCQ!X6POLy2{t!ON4+jV6JdwFSX=PRb zti$UA7xeHqGm68BmS8H86$slVDeNzfgqYF-Av5bD{*po9I5G;yCMY5ZmMCWmN)LsO z>^cAqe-#Ag-UkR~WiV9GkVt^CVAx(glL*kC;t#tReyUJB{ZEp{3kieC5LoOZPx~{W ztHEFuedZr4!_!nNeXQ;b4h)c2C2!ljNl@XvM3}Uysh64?B^SZwP zGTr^(f}#=*xmCPF=wiZ2tFSBWcq5gwNRXKVZ`kCr0meXu~ovzj7aKpDHjKxKr8;5(wh(14vvb0Co&uo7M6 zBp7(8gT(U$FrvI2czJFbnmz`4sEU_{k@12@wj(j%@j5>ZJ%}6D3sV_EG$|FpgqQ=s zci2v_<`DZ|9SnC#G=}R!B>vU$6AcWC1)c438eMZN4B$w4D&vaIpFcv@45EG;W}ZZpH+#p;srM7wdQbW3VR{H}J)V_Tazr$Z3B751QBq z*&nA6jM;vO!}JgVE+q!=65EYU(m#IKjt~ZWlLCa06a~sZPaznaG+>f&=1LmD3{c>C zuk{20yeDE6*V^E$02C!2oV`8~9w9o;V!%qsR3@dUh4qzdk z`A!`GC&Q7=-o0frj353>p*SM8kYP2E(k>g_!jg@_9pa^00=>#Ov2{!pfpRC9%1J zL0kG7a9SSC-w5PFTNmhU7NoWj3aZ9FhV(ytm*Fr^Erp)h}qB4s42NHp!?@(n6J5z z51v0XOhg`R$>JE|F2;A(e7M?smj~l5X(^R)zy=wpKm>K=gVS3~1f$6sq>L&GA(iiV zf@s@(k&9};g(~g@!*y!`#LC7)LnreEi4ldJ3!$x(f`raXBuEse;c`}lVBo%U85)v@ z8%ihfATDA}RV;!cVQ{g5$Nitd!YEe84#TBIF$~)|?I2#1768$G!>vcPaXJ8NFvfq? zk><)EDa2NS&tUw)p|==pGFDJ^%t-k(g#2{_!GvuN;zZe}AuQX?RE7!tJPjk*&Ygyd zD1ihOco59v5=ifi7Xc!Ci3+(;@ENG<(fh9++D9{*%_D zy9tBl6i5ccJ{SUdXQ5o%J{tPxS?J@HaWu@e_#keiQV)4ZItTS~C(!7Q9fpj4l=v?R zKX8NIL>dE|^Uxd{xX-{-2K9;~&C~x`zc>%p_u+>?1Bb$akcL6qJ z`&=qRdl6<-3QkPQsk&w8NGS~Tl!pY<)EmTzSbHG(@FdKI_%4FA^;4>DIYD1|@lT$@ zdZ`ACXzWE02l0F((EpEB-*c)J13F&_$G5;T@Xj<%&~e{_SWsgbv}M&VoKZ$_v(AE= z{{%@B&y@D%V9kS}*A?(=c6@2D6hU|5wBs^@e!v*K9GO>u6IUjj(L+5f!F+^aE=Mr! zobh7A4Yp%{WQn5tQ14I&Rott>X=Ma2IoMEP9h~;j6&hw? z@sX^D5v6vUhEA=Adok&58fIw&Fem#6Cb9vpB~J_!V6XuWOhcno4Ic`+3XyV;(=Y>9 zp$5B28ph=s+yha*(lG7Upw#7A8pfm%HkZ<01XI`u)%4M!M@^(nh;I)J$7>8Bv;$=S zQbH%i7{ZQTT!(>imyuvRZb0pKSO_q21FC6bC%~SYpgGP*0M;g0jf{i{kkRf{lqejDP`(ItRQ3#^~d^$F0_0x7$0L;%e@u#SbB5a8?`Xa`gN09{M z)Cr|R$yC6A?sh`VLOTd1Z)XTAGJgOCs&*1gK^MH{s(1j+KE9iV5#1NUN7Ge}lz-Yo z*+(@s!&b!+K)4&K9*alL-LPE2J0keCM4pKujEL(YRM>eKXI7xthtS9}cy7bN*h46j zmqa*_N`>JO`Uq@2)9?WZH=9E~4Cr}!hyZ$t(;H4K($_-x(csAtIQ%z3vY%b~C%Bv% zs+9z4dkn3gxKXXaoTV~cDCHSRkKUXPu4Y9-jnJ=WBxCwd zOBd1hUXm_-1mglSMsIpa+Vpe+3&Mq=F-2vjuyIk~)<3gCj` zB~0})_y6p<@mo<%?B-#@MEz(e3*vYME#uCCb{0W{_U47cy}Rjun?`%VKTS){TQHMF zKMFz@FL{Swkwoa<AW-CU3zRZS8iYak_6iyrg6E_UgHSz36Am994Y`eP=aY1C#|Hn3=hLUuHi$x6C@4#UH_qc za6y=lFEEQgaU-*7_?n1)8u}%l2M5;l&V1o0 zPas?rKUuS(s%ePsy9|0bO|qgts2+~GG{c3E=2!3*p^dhFg@JHJ4;6hSnR8_tgfEFC z2Wo_DkBrdR7exAVAA6u(;Ah0O8x=0z^dyzoDWF%>*6(8%AuveFEJ7P4dAi zI~PG`xERvt4rjniDPz1n1YP+DHj1?83m}t`Y=)6v5Q=C0;T)M!WM%BuD}q?)QbRhj zSmrCTHs+GyQp2*G?Q8Qxf6WOzaFiJ)gO zGF*O4;vfLSrU`QYw{TXZ@EiK)9X;5Zf5V;1qKfY@*1?4`-5W%=l)N0JEhVqQF3%BK z$zL$s7b=ig28C4NDhhe-# z6f=#1I0M-bql1r^7K@1D*07NvacMNQn@NCvcy2{hLi83|DcHjjy{h|MlC zL%L)}^cJ_#5k}n1WGDI^!V%O-rA*JK6oELj;0CmfnJhtn3lIb+iWF2Mgo#&rAMr10(f$npV1<(pk=*qDj1Rc!@ zBU>z%0FO8!0J9VVD04yg(0Aj&4a<7J7$O%`EBlE6(%fWytn(WI)Mq0^P%<~vSofV^ zy1BtNLk2nXL2IRW$SW{ycsYcF7#^|(=BYw}X0=FoTc-)bK2a<3?hd=iz7Z5=QoWbMF^X+mH#-2G{Fr*u-B$UsUbcn_0y67 z_WWc!EZUj?jr=fGwCo8`ur5-F@Tamq60S`J$Sl}rCqlP%eWW0+Q^q`83Ffl^6!qPV z1DIgGk!uFgqZgWLd>__X>^*NkvzCg8GGeLr6mY!RNt(qK^OwGAki?AB4kU9vYmz*-x0}A)KM-1 zb=b!cx*-wBQ6an^!`lV`zHt#Huf#6y{+D4u68j=K@Ff5~@DYXbb?`{Fm=0DXAVxOF zSd$4RN({PyAKr^m)dON=D~vaThKb9J&g-uyD$l;S>_@QlUDv;J8i4}NjCc>8mrw^{{^sF68yJT)96k~f=~Sh8s?WI z*%Ui^jbNf$A_Y*W6bycjTU168rHVmn#-zZRL>ocFVkSjAI!yAAmm)`L(52m7&}GTO z8kQstJuA}jm-r|RnJ<0%m#~q6iNptQ$sm;rMfSafu?6?iY-qt{rwq94eD$B+8l!u? z@HbjmN4sR9H+PIgE`0X}>%1&k0?Qct*I*S!nxbJem&1l-`HhCjTMkRpzzhwu`Ui~t zg(sqg7?k87hTXF?27Yod_H5wg9X%{6mOyIsQFfVP5aNQH zF?n#apPs6cMaS|&8EES9Q~(1q17Xm|6t(b8$YS9exb7f3p&R3jg6n>2jzR^ZXjdH# zKHN$Nl?z01{;mCxA~=W@z*T;jkObi8^wXTak?EYmKF{9k){f)@3X5Ht5$)m$=ea& zn0*v&!r4`!t~>UGPSr7r4FwCs(0lLkPdnimcOlF9sxWjPZKVPZ#Hx$NWDHxiLpr zi5tNlcVQXwF(P|npV`nYBRDU=X2*Z!k)tteiSU8n0%$abjPvmlK*@x>7V8%#K%NO% Mo#B=!368J-2dh+oG5`Po diff --git a/Tagger/src/PixivManager.java b/Tagger/src/PixivManager.java index a0ac3ce..e8824c8 100644 --- a/Tagger/src/PixivManager.java +++ b/Tagger/src/PixivManager.java @@ -58,131 +58,27 @@ public class PixivManager { } for (String s : imageTag.pixiv_image_list) { - //String url = "https://api.proxycrawl.com/?token=ahDRaxo3KT2OOX2nQZQV9A&url=https://www.pixiv.net/en/artworks/"+s; - String url = "http://45.33.13.215/crawler/crawler/"+s+".html"; - try { - if (!new File("downloadedData/temp"+s+".html").exists()) { - System.out.println("Starting download of "+url+" ..."); - utils.downloadFileFromUrl(url, "downloadedData/temp"+s+".html"); - if (new File("downloadedData/temp"+s+".html").exists()) { - String[] data = utils.readFromFile("downloadedData/temp"+s+".html"); - int scriptEndLine = 0; - while (scriptEndLine")+"///"+cutpos); - if (cutpos")+3)); - System.out.println(data[scriptEndLine].substring(cutpos,data[scriptEndLine].indexOf("}}}'>")+3)); - } - bw.close(); - fw.close(); - } catch (IOException e) { - e.printStackTrace(); - } - JSONObject jsonData = utils.readJsonFromFile("finaltemp"); - //System.out.println(Arrays.deepToString(JSONObject.getNames(jsonData.getJSONObject("preload")))); - //System.out.println(Arrays.deepToString(JSONObject.getNames(jsonData.getJSONObject("preload").getJSONObject("illust")))); - JSONArray tagsArray = jsonData.getJSONObject("illust").getJSONObject(s).getJSONObject("tags").getJSONArray("tags"); - for (int i=0;i0) { - insertedTag = ENTag; - tagSubmitted=true; - } else - if (romaji.length()>0){ - insertedTag = romaji; - tagSubmitted=true; - } - - //insertedTag is the tag that will be used for the image. - insertedTag = ConvertTag(insertedTag.trim().toLowerCase()); - - if (tagSubmitted) { - if (imageTag.tag_whitelist.size()==0 || imageTag.tag_whitelist.containsKey(insertedTag.trim().toLowerCase())) { - if (imageTag.taglist.containsKey(s)) { - List tags = imageTag.taglist.get(s); - tags.add(insertedTag); - imageTag.taglist.put(s, tags); - } else { - List tags = new ArrayList(); - tags.add(insertedTag); - imageTag.taglist.put(s,tags); - } - if (imageTag.tagCounter.containsKey(insertedTag)) { - imageTag.tagCounter.put(insertedTag,imageTag.tagCounter.get(insertedTag)+1); - } else { - imageTag.tagCounter.put(insertedTag,1); - } - } - } - } - String taglist = s+": <"+imageTag.taglist.get(s)+">"; - //System.out.println(taglist); - bwOutput.append(taglist); - bwOutput.newLine(); - //jsonData.getJSONObject("preload").getJSONObject("illust").getJSONObject(s).getJSONObject("tags"); - }/* else { - System.out.println("Skipping image "+s+" because webpage cannot be found."); - utils.logToFile(s+"\n", "skippedItems.txt"); - }*/ - } else { - System.out.println("Skipping image "+s+" because it has already been processed."); - } - } - } catch (IOException e) { - if (e instanceof FileNotFoundException) { - System.out.println("Skipping image "+s+" because webpage cannot be found."); - utils.logToFile(s, "skippedItems.txt"); - } else { + AttemptDownload(bwOutput, s, true); + } + + int retryAttempts=0; + final int MAXATTEMPTS = 3; + while (retryAttempts0) { + List retryList = new ArrayList(); + retryList.addAll(imageTag.pixiv_retry_list); + imageTag.pixiv_retry_list.clear(); + try { + Thread.sleep(10000); + } catch (InterruptedException e) { e.printStackTrace(); } + for (String s : imageTag.pixiv_retry_list) { + System.out.println(" Retry Attempt Number "+(retryAttempts+1)+"..."); + AttemptDownload(bwOutput, s, (retryAttempts")+"///"+cutpos); + if (cutpos")+3)); + System.out.println(data[scriptEndLine].substring(cutpos,data[scriptEndLine].indexOf("}}}'>")+3)); + } + bw.close(); + fw.close(); + } catch (IOException e) { + e.printStackTrace(); + } + JSONObject jsonData = utils.readJsonFromFile("finaltemp"); + //System.out.println(Arrays.deepToString(JSONObject.getNames(jsonData.getJSONObject("preload")))); + //System.out.println(Arrays.deepToString(JSONObject.getNames(jsonData.getJSONObject("preload").getJSONObject("illust")))); + JSONArray tagsArray = jsonData.getJSONObject("illust").getJSONObject(s).getJSONObject("tags").getJSONArray("tags"); + for (int i=0;i0) { + insertedTag = ENTag; + tagSubmitted=true; + } else + if (romaji.length()>0){ + insertedTag = romaji; + tagSubmitted=true; + } + + //insertedTag is the tag that will be used for the image. + insertedTag = ConvertTag(insertedTag.trim().toLowerCase()); + + if (tagSubmitted) { + if (imageTag.tag_whitelist.size()==0 || imageTag.tag_whitelist.containsKey(insertedTag.trim().toLowerCase())) { + if (imageTag.taglist.containsKey(s)) { + List tags = imageTag.taglist.get(s); + tags.add(insertedTag); + imageTag.taglist.put(s, tags); + } else { + List tags = new ArrayList(); + tags.add(insertedTag); + imageTag.taglist.put(s,tags); + } + if (imageTag.tagCounter.containsKey(insertedTag)) { + imageTag.tagCounter.put(insertedTag,imageTag.tagCounter.get(insertedTag)+1); + } else { + imageTag.tagCounter.put(insertedTag,1); + } + } + } + } + String taglist = s+": <"+imageTag.taglist.get(s)+">"; + //System.out.println(taglist); + bwOutput.append(taglist); + bwOutput.newLine(); + //jsonData.getJSONObject("preload").getJSONObject("illust").getJSONObject(s).getJSONObject("tags"); + }/* else { + System.out.println("Skipping image "+s+" because webpage cannot be found."); + utils.logToFile(s+"\n", "skippedItems.txt"); + }*/ + } else { + System.out.println("Skipping image "+s+" because the server couldn't find it. Will retry it later..."); + if (addToRetryListOnFail) { + imageTag.pixiv_retry_list.add(s); + } + //System.out.println("Skipping image "+s+" because it has already been processed."); + } + } + } catch (IOException e) { + if (e instanceof FileNotFoundException) { + System.out.println("Skipping image "+s+" because webpage cannot be found."); + utils.logToFile(s, "skippedItems.txt"); + } else { + e.printStackTrace(); + } + } + /*org.apache.commons.io.FileUtils.copyURLToFile(new URL( + url + ),temp);*/ + } private String ConvertTag(String insertedTag) { diff --git a/Tagger/src/imageTag.java b/Tagger/src/imageTag.java index 0c7ff50..3b7785a 100644 --- a/Tagger/src/imageTag.java +++ b/Tagger/src/imageTag.java @@ -26,6 +26,7 @@ public class imageTag { public static Filters filters; public static HashMap tag_whitelist = new HashMap(); public static List pixiv_image_list = new ArrayList(); + public static List pixiv_retry_list = new ArrayList(); public static List pixiv_rawimage_list = new ArrayList(); public static HashMap> taglist = new HashMap>(); public static HashMap subtaglist = new HashMap();