From a4759785cbd546ebb5f3fa3b4e4bcadcb8629e18 Mon Sep 17 00:00:00 2001 From: BlenderDumbass Date: Wed, 27 Nov 2024 00:33:53 +0200 Subject: [PATCH] Licenses Support Inside Articles Metadata --- icons/agpl3.png | Bin 0 -> 5089 bytes icons/cc-by-sa.png | Bin 0 -> 5886 bytes icons/cc-by.png | Bin 0 -> 4310 bytes icons/cc0.png | Bin 0 -> 4826 bytes icons/gpl3-or-later.png | Bin 0 -> 2491 bytes icons/gpl3.png | Bin 0 -> 3443 bytes icons/lgpl3.png | Bin 0 -> 3507 bytes modules/Common.py | 35 ++++++++++++++++++++++++++++ modules/Render.py | 49 +++++++++++++++++++++++++--------------- modules/Run.py | 28 ++++++++++++++++------- 10 files changed, 86 insertions(+), 26 deletions(-) create mode 100644 icons/agpl3.png create mode 100644 icons/cc-by-sa.png create mode 100644 icons/cc-by.png create mode 100644 icons/cc0.png create mode 100644 icons/gpl3-or-later.png create mode 100644 icons/gpl3.png create mode 100644 icons/lgpl3.png diff --git a/icons/agpl3.png b/icons/agpl3.png new file mode 100644 index 0000000000000000000000000000000000000000..c3662b6092b525855a50a67efc2ad9ffedd7ca00 GIT binary patch literal 5089 zcmV<76CUh|P)EX>4Tx04R}tkv&MmKpe$iTcx5c4pxxjkfA!+MMWHI6^c+H)C#RSm|Xe=O&XFE z7e~Rh;NZt%)xpJCR|i)?5c~jfc5qU3krMxx6k5c1aNLh~_a1le0DrT}RI?`msG4PD zQb{3~UloF{7(f)m2qP{rQ=b#XG(5-GJ$!tkM+H?_h|{W(Vj@HPNe_S2@r&e=$yEU( z#{z0lAvu2VKlt6PS)7`5lR`~1&}!KB_pxoaPJqBOaHVzpwI(q8NqVEB z#g2f%ZQ$a%qse=~K2d-P^xs+Wq|izp-+~23p_700006VoOIv0RI5E008)E(^~)l010qNS#tmY zE+YT{E+YYWr9XB6000McNliru=nEPZ6&kLM%TNFS02y>eSad^gZEa<4bO1wgWnpw> zWFU8GbZ8()Nlj2!fese{01>%KL_t(|+U;CvlvUN0{&o!%lTa2=iYTBmgD42%fC!1S zVB!$yC{BT3G@_u5Vw%{d;}oM9HJUa=6C@fZ)C>wj6oN{EHsFMSR8&MnhGHl{pyqmC ze%$Ybv+la@zM&q*EI4buRj=+l^FDj}_CD8eu>4yUl1%`#0niq}kpK<@Pzc})0BZnz zU}lv7U>SB=bZ~qBW#upc7Xs)A-~<5O0lWdA3_zs_eKvqO0PZ!jRhba?Rsi2W05`P( zzy<&v0ObD*=TQKl7{D|DPXX8lU=M&A010t#34mDu)&jV?AcM{a>GT|E<#Q4DL;!hT z!g#yIi8}xsDrxyXfM)>w*37D64&g?U{|R6*fc6Dxa&0MqqYhAUSOH)qfOGcqI9~wx zBY?gDS_9|`U=e^{0(jZXcBk1-J%C*R^3&zqfdJYcpu}Aapj@JFe~INMbcn8!cr^fH z0X%7D4Oxiq5&-q-61P2omN{6&8vx$Xcash;&`Db+QN$E|nAF2S0L`R#{vzFzPH7@z zq$hwn0Dsb$O#z%6QGb@kYtY8$s+0p*0^qLzt^v?l&ldrhYG!X{+3z*l%kp$YvXPuZ zGQq}`S4npC`Yk5eK(dbH8Tvm@a&a`%boMa8j@9S9+$){r4FZIS5tV7Vvd$uB?%?eM-Y;VLK>>>Fq$%{zNj`;m& zBwKjYjI3p z^GTMd-svPaixbY)vm;5q8PonwZ=C-jxs7B?k9bjKx_-|ixwR4da0SU5NN$Mu?Maf& zN#>KhQipa=M7=d6k4i$LACO#4a%iS<{NgMZw9XACPWhbVF#X?MbvBdi?{VYmnEsv< zN(PeGN?)&aI*R1+NjA@wuX}5Hm*iU{o9X{Ele8J8Bjnj6KP6d3@=!gyRP`2+Z0FUhi0N|)$!kbX zB>5*jTkOsA^pJ59F2!Em9V8!gI*jDhByEOxZ3bqz2hYofNOmapO3(g8IybI7PO@!? zF3m~K(4qKNHiRwCg0N*I2dMqmWXL$9s%1#GKJ9VijVUbhdWrHHZ!>=C&Gm;dZI}Ci zjJWD*?^!Zk-OsDjG7TcQax2N>NG?pljaxLAxbjDmhlJ>IlDIx0={GWpeyQNJUKyT; zZ2)dGv$sh01aP+iZ2*`Hph_I%0FeqatCf}5Dn%e8Up{IR4@_9-{XROT?JV#6METQe zoB@*rprP+`o7o<%FRoMr_z8d+0PX`YECtxmE`|mKFdx9RVRXvOmI}%03gEW@=8)`@ zDRGBnK-f(HzH4T)Ngl632k5stg`ye+z;_ZTFkinH0qB;6Yq!+fH*|YYQ0!xiC2FCfbjsTbV_%5^ZJd5`(%j2j!Obv)&p24u02`A zeA|nzv=fXOMc6QLcj%xT9_s(60A2!c2Y~akBxphh`fdQvr;91eAnl`2VA`D93BVC) zoS4hZ>_w7=04C`KEr<|{8}xmY{w^~!M~r?Ey8dwytCHj>udWk6?>Glu;=fr6+hGWR zZ;12#gAo_)X&(CjLjdmq7~ws86u|uerU1AuOTyLw_?7xu51^Q2cK~OI2JZs+otZ^R zvhl*^XJ=w5pD*_%S*avBCJPI^T&b=o|5D zu5{wZ049-aDz5F2={c7jGF>*vXGoq5G0%&p`Q-`#G_&cM5_eRR=XDYV&uC$@0rZdQ zCl5fWzF#P@{jv9Zp9t}n%pyKff8X*#T3=6LOohuFGpqCB)Nvle$w_Ps0Js&vDjn?e zvlPcg0B(>SkgPlnV3Idy$F(B?T&5Us#^Q5Fgm|cS&cC3qS!sx!S3Ge0V~4nS<4lfe zTS4+H7fn)lFG2Dy^_Nfbz6{0SU~lZXDe5MiN>Kem0Uj@SYg)qnQ|d|1lynIP3Hk|g z{8_4~eH39^$)XLH+obs2_t9zkYmkU<;|1-J#Fz>PwAbl-Hw2k~^#C@Q86`O~$q=b^ z9Iv*6(?|?xp@aaaeizS0JRZPF`yn%9wcN?O%q$V1E~f*SVP;b@CN6->BT`DPm+zGz zITOI8X{Mc&dDeGIhQP*`M33mdk2Cf zH76o3-4BHQGk_^(wkm?@4hQfufL8(Bl&YhGsMsKYABOz6djLEHAfM#zT2wkIIy*%m z$Y^Q`U?YNjAqb_qBqn{O+RSzdp6nvsT<$Hr1VHZ$HtugCFywOdNdkGcl;P9?L5}dJ zf>VnCyx`R<%@INC1&7{eW{*VBBv1Ci@3n>-%&adH!oAc}-0Kj3HB{X`z_|Pyk#)ayEd60le-> z5_dQoThtW=9CTe}v?@!jhY$5iu%9kYN6lAjbL_qIL#w zGk{Zs0=|^ZV*L&ah0$6T8@CX^Bk~)IJ*zrhhyDcwp}7LVm|-jQ|0TX|k|-O6FQ>Et zZ~=h15tb`N_;CQPmXTJV{cF%+FO&XW1>h3^E8+qIvM(;y9&7+G+RVxty$U5~&CgQI zTrR)2N)Y4yO5v<0d8g+Ou2V4E7pdEnWA(YR4(`?SpObt|5aD@hH(Vm>1&OQIHO3Pp zKT)Q}0{!-Yp4XAQjpU+6h|!TT`)0~kERz4Z(RxaxGRv7hEQMKE7Br6Q>_Y(_JyH?tZutJ0_1%xV>PWeS3}5SG7AL6G5Q zc7N7}Qxct9Dxe_K@|pDKWNqf1g4HSnKJ?L8Gv(48E9=>v=;u`DavhF@{L70G#8B%M zn(Hd4@jL*(kZaIfs-&ZIb%FlAFP&Ad@p>kS^rTw`Ah;or(?aq@?8{iWMdH6a7k!60 zcObI6GO-mwMnf-w3Y&#qbq25kz#l|_QxyJtTA+xp*KS4-u+Nvf^(lah#C6-`hOL#9 z_&^5C6mk8JvF{4S13Cy5(uW;{_&hHnx6N{|evm_g7AT_gm=13PfK$zEX08YuHE6as z3u;5*!CfJJy3uoownSv_CzKbw#jCg5YgeyqL6;8OK=KRy-K#n^(%Cg?>tFxa8kz&M zbm@lYfT(B7rr4$g!P7F)$(a-j4Zax%<{jL0OBsMMX0|*-qP7zVGe)X!j#N~cd&R+i zC9aU5ZAg8~?m#a)5rjNlOu04!1#2Z$(*?kH0E|R%iF=_Crp;f*M1A7+k(HV_NWa)p zh#+0(C2HmRz9_75|g>6`7ln9O`cQHDW!sALiDSxb6`9*b z%C@{R0~qz?(0W$7i)cBX+fYT327T3N>TbCeAjp)cLjcf2hQOw5kiz zfb4#q0swWsK5`+gh-k@D1gSa8(p*<}1euGKf-3=FlbP-C#>)5MJ&m16vK|XVfm(mQ zz?uf^i)gtvdC8(aBn$n7H-BGqPFw`p2CcP$=ei9ic{IuEwW&h^{DtIPAxGZ?U?iuR z*)r8X4M9*jkK|l4n;EfDmm`-OB*{ht_$A^KVJ^ z7CP1n0nYs)fC@#`MkC0E%qRIQg3zA3>susfoox)m$P#!b=RGZrsJWD@%^e7WAf=K{3DxN<%>D1ex|boyf4%_wGAV0w?lS38vCBUmpsNx6_4=Pz zg%fvF-7CEpcx=)eWd@TxM<=yX`0x^vqn-Zsu02rPH%#9j6E_SO_WOnZh8eYeP<78$ zy@Ya=^Yv1YD*s&(vXZNGY1yr%6UlaZRl;WP!uJ{vr{190Zx_XW{dLYId8)>*^K!Rm zYRwnuw*MZI7wNZeX|CtUAZ#ExO8feba=4r6MI}3x(UEhVTPl6?s+qmzZPIZ%W#wk( zVxTTTdKmV_MYo9a3Z*mG2^`tx87Hme^w%PY*jz7;TaO?-w^E!k1HhRiTbS8i-Nf&# zx-TI}(rW;)*~}V9o}uxoLi)A{z#=ny$6HT#1UDA0^D-fd5!_xFFTkNz@M1glIYNdd z_4^2C2X9l}ZXw?O${6l_L3&PI#40@MNDLdOg5a*#OT= zk{qX3I@F7^3%xdzq{l{t)-zt?`1876`nFzceNK{WnD@Ge-Qw_Kac_lpL2bPZBj{aG z zKJ?~21i@{IH_fcVdwv3fER$EvY_GST6A)aJtkc}qO7e8myb|K96`FTnNxM}JdNi{I z>aT~!sFtqZpd|kD5yYpLYma(s4f&FGl>lDLwa)zq&utk?z@JEq00000NkvXXu0mjf D1JQ$R literal 0 HcmV?d00001 diff --git a/icons/cc-by-sa.png b/icons/cc-by-sa.png new file mode 100644 index 0000000000000000000000000000000000000000..ca6efde5fecf11b73a54e9e1c7522696ff8ae65e GIT binary patch literal 5886 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 LYbkwwY8m=JaC=+j literal 0 HcmV?d00001 diff --git a/icons/cc-by.png b/icons/cc-by.png new file mode 100644 index 0000000000000000000000000000000000000000..47ff464e0aad67af26019016aa67041bed3ae375 GIT binary patch literal 4310 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 literal 0 HcmV?d00001 diff --git a/icons/cc0.png b/icons/cc0.png new file mode 100644 index 0000000000000000000000000000000000000000..734f9e26d2b917e1d74eda77196554047384397c GIT binary patch literal 4826 zcmV<05+&`4P)EX>4Tx04R}tkv&MmKpe$iTcx5c4pxxjkfA!+MMWHI6^c+H)C#RSm|Xe=O&XFE z7e~Rh;NZt%)xpJCR|i)?5c~jfc5qU3krMxx6k5c1aNLh~_a1le0DrT}RI?`msG4PD zQb{3~UloF{7(f)m2qP{rQ=b#XG(5-GJ$!tkM+H?_h|{W(Vj@HPNe_S2@r&e=$yEU( z#{z0lAvu2VKlt6PS)7`5lR`~1&}!KB_pxoaPJqBOaHVzpwI(q8NqVEB z#g2f%ZQ$a%qse=~K2d-P^xs+Wq|izp-+~23p_700006VoOIv0RI5E008)E(^~)l010qNS#tmY zE+YT{E+YYWr9XB6000McNliru=nEPZ4mUz%T)zMS02y>eSad^gZEa<4bO1wgWnpw> zWFU8GbZ8()Nlj2!fese{01&cCL_t(|+U=WpR8>{q$3N%X0q(tUWl|qO1O!Ag12jh* za>%KArKi*eL-Wm7Ofzj&Z)?5Q$_CT4<@CdGJw=Ux5QVsX#j=j^lh{_WrJ{qB8))0vs_x^-*G&dvrv=B5aBt_A0R zx%PMciaPc6MX2*!WA*j#t>0FIemE~=q4_rCCi+1$eWZ!^)bCeI-yz8E{S|KUOx-fM zk+BJ)$e7V%nD^|n2qQ<1kRN(99zQ={x4Yb4D%UHg8BNO|IRDGHSPk`cAUC7@mPmc& z*6s7H+LCefUv`c|uG`nz^5zuT$h({BTZ6i07NbzV4H+(+zko*RfznuQA|xajL1^hz zHU5JCHzI&6$*uvmWPaq^T`YfcP9vfsII!mcN>Th1$`e4gOPDPdY<4>`G73RNrBb0% zscz4Ib`YtZxa#U^vd`vl;#fL)dFL>hs`2;tKSV+7=!VCo zOPBd#RSFDQGmB)=@$$h_WTC)M~Tw>*+J>-?N`H zS!W#Xrk>oWG;-zgRWeVV20)|LF!uhjjJbad-GjS>AaqFgTUJ)a+Er`0a6Z4udn8FB zd3!R|)z!?HHN)X;+IitQm3ZqZ6$H3;?!Zs*5CKf1~l3I&4(4PxNHfpqQC1(iyT z$y7zb#fuy{a)kW+e5y^=?BBDW1K%8A=IjJUj~j!BhewA}pd?BBW7|I(RiGdU$g=xl z{dWJi+;w+f1`i$7?jhi|EKvsX&*k&M>JKRSqu3EpBO+M1a3K>WOdvQo7*9`6x4>_= z+cB9;oXN^!=dN9R{PD+_OeQvdx{2Q|6!6rnr|{N$cbJ%2P;ilh-yL)-OPD#6|C%$0 z0Dpfz{^S$Zu3cLv49V=@y^nih`ZeoT@5r>|)^Mlw8oF>kpA~N|r@~NyAPBtp;)^U? zxR9Wrpe8dmg+hV1w>QJ$;uth|Fw>_`=Z!bsVE_L8r2deK$z)>Qf_dn?bR8n0IeqH1 zo3+Kn#IS1RN&*4`0J!U}yBa)~o0H4Mi-q**)4TOetA!#q*U*(KSNUk&M^qRp5Ji!V z8#l6a>C$Eu*kF|?l?)s>kWHI5k(ihWz_GMrZ2fX87K^3bm1wisNdM)yTiN{i^Xc5V zGlC#sFc|po!w(yM_I%#C4iOH-<}%PPHh#|Ug});R0vk7OBq1RIjYe}vm@*(BfMv^; zF>jtjktyG%aP;ue2Jxn?rRs)}qQWA#vgqh&m)qR6YZqBrSqOsQvdmgJn{~EhD={Pe z1jn5#bjgzc;mIeT{8RWy5CnXEeObEn4aSWd2f$~WKI6)jt9K5lT0trd6<94+*R{8| zH$g!`0F;!Juwumu07i}+$&w{Y+@8%pm){{^u-KR*HX5tgw&i~T7&mSl^XD&UwRF03 z=gz$T`sa4oiJ)21bm{{H?5f`BNB%$PBQ4I4I4U0p-*AAjKE)2W>yb1i(3kR*xCn>SNd zRtCV!FTdORTU>Q97>!%eLB9rzBgUZjT^l7+H0&?v&ID_>~=eP zy`H3`B&JTC%FjRl%+pUlO+i5cqA0pnY zU8AtD&_TNi0{;H~JoL~*&Q$$8cDuc8=nXdm6!7x$a`QB0*GpNoY87U)nUIhW=FXk# zVr@#VU2|(fqt&4E*0q)saOIKo zp->PO7RI1Kg9r}~Cp9&d;^JZ#)~W@`@4x>(dcB@boo>2Jl}bhT?%kaPb162P4YgX` zW-LeTMqwwPPN>u>EM^C0t*pGkfdk(;v+^Z`g@w74c+yn+lmZ=GxM4F-ejx0ja}qeqVh;NYQyE=5*XSF?KcYI1UN z@bmL?m7P0x&b0`R9zDvA9XqJ3taMYL%W|D*eS77m_ryjwDBrhlAE!>8qOh=#l#~<} zELh-16ZY!ei_ox;4q=JP`u@mUuScm;VzpRZ@eM$&Rx@q-biUlOg_M*Oo_p>&;^N{+ zPfusVh7BA$c8qoF))5~c&+gs3NlZ*+{`~m>Bqb%0mzT#k-+aS_2@?RQsj1=2nKJ-% z3+jeascg4N=o!(I(PKxGdN9>hwsYrB_Uze%TCJw0rp7IE76gF@|KkC)T5X3=q9U++ z(Ccv{;#?M|5JXO-XJ9Bd(4|WkCQqJ>;LIpPLP7`&3**R*fq@JjJebnbQhxgBCk`Aqz<1w$hbW3J1=qrk;^JZ!FJ6q*YGvYs6N!k7Xup^u z2!!?wCF^t+l@;#Z!e+BIxPScQ@l1Z`K@_6ct_O_F77O{g`3-TRho=XFh76|Q!bNuM z*uhILy+n9;II=9GQmIHtNMO{cQRL_6V=x#94i2VYzkV)aJS;4Xq@*MkFJ4SxVIf+r zmZ+#GLPA2^;7Vp@CMJ`~VF}?q+nosS+@&*%UR=z^PdAYLYj%_T?*mgF;L&N1qEfYw z=VNW1(d+d@_U=Xh0sZOS zC(1P!?awa>jWad?A)z4*i5tq%!$(=Zd^w{>k0vH2rgbJ(mf5*;Cm9)z!$^-zd&B`{ z?!Xe8J@$8p_))9XFf?u`Lxv5(Y&K)J*-@)isMKml22RHjp)SOzKUSqu$-|HS9i>Xi z)vH%|;e{8tR)?*)Q`aZUGRKY`W6`2T0NfLE577f+L6%#UM3$YIws4yZp^=Uv0G=Km zXmwgtDpiM5pj^w{(#(EhSkF)ro=yNDH8qu2UU`Mm($WU_uq6siPfusotXUWg22?5) zkIi@tZ=J4XEQN6En}wD%bvtbdjoeqSAF^8~b+e1K{z;A7|;(r9?(Xwn%|Cn~l`eR1y;t`R%vg09f$C zLPm}njvxqJy?Tuw4y3qQg?zh~*pyGL_W?so;$wqj^Ys|Mrs^846k7hC`ueVaUu{1u z7ArarZA0c!p%8iPt=GA$Zy#hFyBc3?`hr8>9|9mWG?aJVd51}pCZX5so3%zfmo8lWWHoXThY{W3;&QCoF~_11X09px08^Nz_ZUjOI%!>BWaT%H!qjr!-sSD z@L~G&?u{flzB&2v#~+zBYZi99on_0Gk&y5d8jTiNmN;@Gjpv_#o`QmcHnqei5o_Ad zX?SWhB+PmWotF-ULP5-cSR#5wl98Ulk3Xc6o1Kd!Nf-Q9&1;wX)^@^T)A?Ek3RYctHpv&r{lSW3(3#VCp$YEolb{Vt7YZNmDns+ z%F3@hXh?5wYAhC3zWXk-pMIJtQ>HL<=upDL!+HMs=lS*5GraxwGA2%($ecNIFc=IZ zBqX#ociOZZN;!zJvXX?^GwJ%buFgSuF=p&&h7BLa)yr47eEBMuN{XqhsKjQoq0wsa z^YbStD3Gq*y5i^Ocay0BB)de$@pRU#T7%7MYtz9R3ReuwlrO#L1H;z&4#Ny!uy&h^c!99Wr4haVCb$-a{*p8B& zSnFoi<#3?a%gXrYo`14`&;E9!+4Oont5>fkFffosixzR{(4m_tyCC4}TImro%U7vT$GS|z>NI#ar&K)}`zh2(1+1$Ey>xhesW9{0t zZ2fvGo*E4nvl$SuSS-w#F@wUQA|&bNagmae65`|I*}C;B=FFMH?%lh|&CLbivB#g_ z@R2mekH4S5z(6ujXHs2V-ErJ$eNdDB%W=|wIZj|uAfv{NqIaJt`~w2e>a?gmJWz-t zR;!g7vxUmaN-md_kp4?LM-LzE5J&b$j2OWaPdtGv%S@X#jp@^;Bg-;xz4aF0IB8Iu zNf#9rF>>TcmzAA8dzPf6^}P4qdn6_%^5&awGHKEzX3w6@;K76G(W3_@lZm8HliJ+N z+z}ODQe48EX>4Tx04R}tkv&MmKpe$iTcx5c4pxxjkfA!+MMWHI6^c+H)C#RSm|Xe=O&XFE z7e~Rh;NZt%)xpJCR|i)?5c~jfc5qU3krMxx6k5c1aNLh~_a1le0DrT}RI?`msG4PD zQb{3~UloF{7(f)m2qP{rQ=b#XG(5-GJ$!tkM+H?_h|{W(Vj@HPNe_S2@r&e=$yEU( z#{z0lAvu2VKlt6PS)7`5lR`~1&}!KB_pxoaPJqBOaHVzpwI(q8NqVEB z#g2f%ZQ$a%qse=~K2d-P^xs+Wq|izp-+~23p_700006VoOIv0RI5E008)E(^~)l010qNS#tmY zE+YT{E+YYWr9XB6000McNliru=nEPZ6gGuUmhu1q02y>eSad^gZEa<4bO1wgWnpw> zWFU8GbZ8()Nlj2!fese{00)yvL_t(&-tC)xj9x_*#(!tKWeeLD#I~j=R+l9$Rj6qL zHDQ%v6$B*>lDM%Zpc1MOfdn+Df5?i}ShRqKs-=-Y8dRi^XsD5rYG?_56zewlQR-GH zwYFF(QlQ;-yZi9R&YK*@JNM&#-(6|llf2nGGiT1sJa^`qGiUA^W6~6nbUbhxFbg;j zm=AOUZvX~?r-8M=YBPHZz)BdM4_pbfjX|80R$wl03NWbv*B5~=nA!KO0Qk29y};x# zd`rtp;9#QcT3{UT3h@3S@Gk@&4sUi$(lQ7vFtf)?Fv(C@89!<%&^>Dm_*^*xTw`Xf zWq=QId-!{P5wPz$3IO;^_XMZdac}B(e)ZH>6uWss}9%gi5O5xbD}=Um2J?-$}5uQHNhpV$yf3?|3c4G zW_Crz894x~YoMP?EAS`4mqvKTcbeJn8w9>DJRSfZZq1>b^IX>csQeSaw2Z2MGqW{O z-WI1K9M0q}Ex86o*AU`vYgCj)PF>4E6Q z+yI=JQSax#nu39R0Ju3(b}O$hIRdns*Ml!2ghY{!PZIH|a)2Sx-jg zixO3T26$e*3fLI!GaV)HS_jN&BK~=Y%%{z4R!;d)*jT3k?+Y)fC4?f908aOmBWX%W z+Q^ctqPlw%dUq92PFtd0PX$_&q-m1g(j-=zSaS8$XnIi6bYGU`=g)VP^QYjG)(m~* zC}og7;AAuV7qGWUwqCASuLYP{1pd3-^B>LZfJ=YWJ+HEa05<}M%xqQU$4^aES>j%B zN5;O=Uty3-;<{#bx|zKY(kIpl`VeqIWUJB^0z8`pKXB_ijWoq~at=hpK{~VP}V=v!lGfmK^IYNhi5_i|Yjcjwo+?Bj5*L|F?c} z2KibJo=ctHqN1JoV>xfU3iwqHSFvo*SVfh=kJ8^9p-AW5Iap4Vv@PiUG;7w!e*R+j zd~wDue>5D7E|20;0G}IyrdF8QXLHK`5jOYTz;$LelmuVW3BW>E_EMyq@)B;0mp5=* zl((@$C_0X0F0Tm6i@~MLJTo*wwlVzq$I_e$@L0g>FmO}s%)jA%92E31L~&8%n@{W1U#@Lk}}vRwJ~yl`qs8=nt#m)Gm!Rcy~k9?z208I^Z5 zxS{TL!L_`8v`g9&>I}ur~vT&UoDpq=55vdTyo@OZ}L-;@eLnAu@TYf6Iu2VgU>(#$rMTzN|vzH6Qu9F(sD zx0%^smE}7(T5c0EbWTn9@8feWA>s>=DX#3tRlK0Ar7Wo@br}=sognG&32J#Dl#j1S zdDl4`|B*Cbl2Hd&-;xyumUM}vc7Mn!I70gqVQa?CQVjl1Ny}W`hb1iwnCG;^S<=jm`paGC*1G&N!mpzY_-=pbbb+aw zjTHEIy0$kq5%hVI{v5sB4U*0bo?+7(`gY#EYtT7c(tb&&I-nNhfuCWcJL6j$4}O2n zhTiX1Ltnz%$qnz8#Nuj6Pda-8fdLlR<;fHsvLrnf`RPLpUwOrcF@N*k;&fZwVND?~ zb)ajB?2mIc$GI3vEV15TWYfz^Gy6m4TntyTaM#(X5DMv%r7e#UqX-xuc+b zD)8|r?EX>4Tx04R}tkv&MmKpe$iTcx5c4pxxjkfA!+MMWHI6^c+H)C#RSm|Xe=O&XFE z7e~Rh;NZt%)xpJCR|i)?5c~jfc5qU3krMxx6k5c1aNLh~_a1le0DrT}RI?`msG4PD zQb{3~UloF{7(f)m2qP{rQ=b#XG(5-GJ$!tkM+H?_h|{W(Vj@HPNe_S2@r&e=$yEU( z#{z0lAvu2VKlt6PS)7`5lR`~1&}!KB_pxoaPJqBOaHVzpwI(q8NqVEB z#g2f%ZQ$a%qse=~K2d-P^xs+Wq|izp-+~23p_700006VoOIv0RI5E008)E(^~)l010qNS#tmY zE+YT{E+YYWr9XB6000McNliru=nEPZ7B|3u#O44102y>eSad^gZEa<4bO1wgWnpw> zWFU8GbZ8()Nlj2!fese{01Hb=L_t(&-tC%quvOI+#((Sa=qMl&kQOi?Mo{TNT6Dw` z5wJy)7|=1Xj4`n$%EVEU3C0+8OiZw1qTm=ii98!(VW?41Y0{*MbP#wT{mUQkJ9_5i z-uLbUjAX_=bLZTB&Ms@Oz4j{K+QHW)XOYw#I0k49d<*ynPzp>3UXF;h08!vzmjK6o z#cSFD)CBZp^A0!}Xb0>8?g#z~d(TbQCz|mi^^z8yB9^^5%0COy5oq?smb->dRu{&R)aNKzE>| zxPXZ|0d+Hr$#;yZWHx121xGG`swq{Hv@iBpNm&QXK1ht)43q#xzyQzxC*Zb-*k0fm z?SRn*Ngy!H&#A!0USz&f1oQ{)1vXfhlvXf)E#Mg|=~LbQA>g!BoA-fDz)qn00Wj}b zU>@*u3&lF%4B-8UP=V^Kp=rCJLIz5zVJ7SY`bWfi8SASJkJE6E3m+u&?D1!vX9y)K&$;=+)78K?)veT!n9j4!^(R}C8Tbv-Hk_p%Ts!`6gWB}c1Rit zT$F>pCvuE;E^sr@zA_9v&J3LAdOe^~j&`en?Wu`&0n1ZHDAzo1q&BH;s@^`+ZcjvP z^Zx|}GVc}OPT-$8#=8r+R?^RaW;y!K1D?-F-!R}jphrY(sEjxMv_-my>(^J{Pwn&n zPbF1zpNToz?v>Qa-*1yNDK+PdnYNo!-v$=o(~XwYN79ZQ-*@GqCn<|1)k)1)Mbg8P zHcGlsQc-1?7uJ9KBsKB7=>_VZG45X@&-W#gYJ1GLC5=eU`*Ei2>U4Nj&YXKB-6^T3 zq|f%lp@iNx^L?y|tL9z5vK$7j%Fs18 z&zLt$YG-;YTi#8KU^)D_G%<{Y>cGB!-WL)3BsBsW_}y;%d)qR7ZUOoL(^Bv5%`x@_ z8-;p6LtvKQU!KP~PnX+)Q5hq1tM%Pf;P6Tqnw`J{z%3C`k-yp!SX~(go?zmV^SAhnSngT}v%YapB$J*-VM=7By=m^hpfL+t|Yx9Wz&{Ut*8H4bir0scrJKg^S zw>@0aid=>vL)T%FmigNhNmV61RLLVdM^ZycgCs4Gw82Jam+Q4Ma}M$`FDjII4L#^g zNyUEmRvu!`@%Lt~Kk9lDTjPq#(3HcyC68rooN;KMlQd7#k&=$jIlDrOR{nyS}N1g=K2Hvq{%oj6f%Oqg0=eQt`>o6HO*752fU`j-+OnD0XQ}%l9p%F1T zBS5u{+-wKVE01~QF|eNh&-Mb!gKk=<0EAw^Si@gU3RuW-K8pEDH9wmfbogFIH7wi@ z#w`Y}j)>QCoW7=J?6VPZ8NOvhwbXFaDMpV68{Vn{{5p%qM8qmd zT}(q?pt)7ZT425-oGI4TALn6QE#NmmPvD}6m{J*m%W}F7(9z0$g`w|9e1!IRAusz# zFLRV}HgKYk{&wKEz?U65lOSHvz~PLv&nttN*d?iGD(x%ZnUIl4RI|6bxB@PAeuCbqWn?_$H2fV`W`(22mzw0{&4%MNhvI>7IM$0K6K{ti;p38VGSK24TX^?!IQhugI|tb%s88#7#O zx2n%UnEP0}Q*94K0-HOsXr3S)hNy}hovgRB+`>}2I3l(hxoBafK0hLMWOlYOWtWCF zS)tcYMKvELNQZ;?M29s7KDDF1F|GV1jj^-e)rqcR*Ea)4M8qPa*Nu!-Ceqo+7JNOh z+)!8}2MvRPAznvS(^nl>5fPgt9pQR4)4#-H>2ol{_ea)AI!Dr3MxaaVckPkXLDDok z$*T=C)HgWrf!jTqW}Y4AkL3BS?F>veX}cT0LL9X;5=e_m2Q z=W5#-Oju<9u7}f_(+tmdaB#3%(s9 zF$S2v@dhO7nV!2HqE<2F_J(zIsrBVehQ@Xko2bKqpG3syB*Ejr|N4m7>%7NSqr<;- z4tA_lgVl^?Jd?r`d;4g#pzJc@V8_B&Qg+|C82E+T|IiEGX6C%$xmp{DNXn(aqKN32 zlFEk-XpHq{)vzF}pzMlVZ6DvMj^+D!v-X-P9Zmm4;Kyci64x&`olTrJZEWV3n3iq8 zs$#ylfi*WpY*!PLK>BN~la8^}m3YxT&7g*qUC2qJw|AN79e)1V2y&GK#<%r9#h~qB z1{!9X*y;u|l6HM8y=gRM05B>dcKZfHktL>%7dzCtwUdS99WT7tNKa#L)>boYh?(7m zvRhlp29$WL`95vE?4^{3q?SH1W0PA@lDYv6BVufli>2(MWgX`&#+$&tX7pO%O)K`q zC2C=q=tN6MZ!>5OFexH-nhE_ZF-s}CEjqyxaw_nmb1p@|Sx$IQPvLk2foT!3*zejJ zw*;6S5pyIRZ!}4kv^Bu#HWyDGSRm<}K(~l^M$(x+?r$5Kn;8)c{{x_8 VhKjUMSa|>d002ovPDHLkV1g4ok%9mK literal 0 HcmV?d00001 diff --git a/icons/lgpl3.png b/icons/lgpl3.png new file mode 100644 index 0000000000000000000000000000000000000000..5f1a16d1ebdf1c9a4ce3294d6c855e6593b8a803 GIT binary patch literal 3507 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 literal 0 HcmV?d00001 diff --git a/modules/Common.py b/modules/Common.py index d449b8d..3c17fc1 100644 --- a/modules/Common.py +++ b/modules/Common.py @@ -130,3 +130,38 @@ def IDcolor(ID): c = IDColors[ID] return c + +# Licenses for stuff +Licenses = { + "cc0":{ + "name":"CC0 Public Domain", + "link":"https://creativecommons.org/publicdomain/zero/1.0/" + }, + "cc-by":{ + "name":"Creative Commons Attribution", + "link":"https://creativecommons.org/licenses/by/4.0/" + }, + "cc-by-sa":{ + "name":"Creative Commons Attribution Share-Alike", + "link":"https://creativecommons.org/licenses/by-sa/4.0/" + }, + "gpl3":{ + "name":"GNU General Public License Version 3", + "link":"https://www.gnu.org/licenses/gpl.html" + }, + "lgpl3":{ + "name":"GNU Lesser General Public License Version 3", + "link":"https://www.gnu.org/licenses/lgpl.html" + }, + "agpl":{ + "name":"GNU Affero General Public License Version 3", + "link":"https://www.gnu.org/licenses/agpl.html" + }, + "gpl3-or-later":{ + "name":"GNU General Public License Version 3 or any later version", + "link":"https://www.gnu.org/licenses/" + } + + + +} diff --git a/modules/Render.py b/modules/Render.py index efd6b69..6c05c4e 100644 --- a/modules/Render.py +++ b/modules/Render.py @@ -469,6 +469,14 @@ def ArticlePage(server, url): """ html = html + '' + + License = Articles.get(article, {}).get("license", "") + if License: + html = html + '
' + html = html + 'License:
' + html = html + '' + html = html + Licenses.get(License, {}).get("name")+'' + html = html + '
' # Audio recording of the article recording = Articles.get(article, {}).get("recording", "") @@ -1120,26 +1128,27 @@ def Graph(server, url): except: article = {} - dates = article.get("views", {}).get("dates", {}) - largest = max(dates.values()) - dateformat = "%Y-%m-%d" - startdate = datetime.strptime(sorted(list(dates.keys()), reverse=True)[0], dateformat) - enddate = datetime.strptime(sorted(list(dates.keys()), reverse=True)[-1], dateformat) - - alldays = int((startdate - enddate).days) - - for n, date in enumerate(sorted(dates, reverse=True)): + dates = article.get("views", {}).get("dates", {}) + if dates: + largest = max(dates.values()) - amount = dates[date] - width = 100 / (alldays+1) - height = 60 * (amount / largest) + startdate = datetime.strptime(sorted(list(dates.keys()), reverse=True)[0], dateformat) + enddate = datetime.strptime(sorted(list(dates.keys()), reverse=True)[-1], dateformat) + + alldays = int((startdate - enddate).days) + + for n, date in enumerate(sorted(dates, reverse=True)): + + amount = dates[date] + width = 100 / (alldays+1) + height = 60 * (amount / largest) + + cd = datetime.strptime(date, dateformat) + nd = int((startdate - cd).days) + + html = html + '
\n' - cd = datetime.strptime(date, dateformat) - nd = int((startdate - cd).days) - - html = html + '
\n' - # Saving the view cookies = [server.cookie] @@ -1155,11 +1164,15 @@ def Graph(server, url): cookies.append(cookie) for cookie in cookies: - if cookie not in article.get("views", {}).get("viewers", []): + if cookie and cookie not in article.get("views", {}).get("viewers", []): article["views"]["amount"] += 1 article["views"]["viewers"].append(cookie) + dates = article["views"]["dates"] + date = datetime.now().strftime(dateformat) + dates[date] = dates.get(date, 0) + 1 + server.newview = True with open(Set.Folder()+"/tabs"+url+"/metadata.json", "w") as save: diff --git a/modules/Run.py b/modules/Run.py index 5bd81f4..9f0264d 100644 --- a/modules/Run.py +++ b/modules/Run.py @@ -28,16 +28,28 @@ class handler(BaseHTTPRequestHandler): q = clr["tbbl"] b = clr["tbbl"] - if self.newview: - b = clr["bold"]+clr["tbrd"] + #print(dir(self)) - for i in self.parsed: - if i != "password": - q = q + "[ "+i+" : "+self.parsed[i][0]+" ] " - else: - q = q + "[ "+i+" : ******* ] " + try: + if self.newview: + b = clr["bold"]+clr["tbrd"] + + for i in self.parsed: + if i != "password": + q = q + "[ "+i+" : "+self.parsed[i][0]+" ] " + else: + q = q + "[ "+i+" : ******* ] " - toprint = consoleForm(self.cookie)+" "+b+"[ "+str(datetime.datetime.now())+" ] "+self.path+" "+q + cookie = self.cookie + + toprint = consoleForm(cookie)+" "+b+"[ "+str(datetime.datetime.now())+" ] "+self.path+" "+q + + except: + + cookie = None + + toprint = consoleForm(cookie)+" "+b+"[ "+str(datetime.datetime.now())+" ] "+self.requestline + print(toprint) folder = Set.Folder()