From 158718a65099f49afbf7a1f5f9260f38050a220f Mon Sep 17 00:00:00 2001 From: Terry Hancock Date: Tue, 28 Jun 2022 01:27:13 -0500 Subject: [PATCH] Separation of site from code Working on separating the Lunatics site data from the LunaGen source code, and replacing it with test code only. --- LunaGen/lunagen_profile.txt | Bin 0 -> 15086 bytes LunaGen/profile_stats.txt | 0 LunaGen/src/lunagen_backup.py | 479 ++++++++++++++++++ .../testdata/series/data/affiliates-old.yaml | 55 -- LunaGen/testdata/series/data/affiliates.yaml | 147 ------ LunaGen/testdata/series/data/characters.yaml | 227 --------- LunaGen/testdata/series/data/products.yaml | 35 -- LunaGen/testdata/series/data/site.yaml | 20 +- LunaGen/testdata/series/data/software.yaml | 139 ----- LunaGen/testdata/series/data/sponsorship.yaml | 140 ----- .../testdata/series/episodes/S1/S1E01.yaml | 282 +---------- .../testdata/series/episodes/S1/S1E02.yaml | 24 + .../testdata/series/episodes/S1/S1E03.yaml | 22 + LunaGen/testdata/series/episodes/series.yaml | 190 +------ .../DanaeMillerClendon-SilverStripeYAML.png | 3 + .../series/imgsrc/JeremySchulman-288sq.webp | 3 + .../imgsrc/JeremySchulman-Jinja2-Vimeo.png | 3 + .../imgsrc/JoeShindelar-YAML_lesson1.png | 3 + .../testdata/series/imgsrc/TechWorld-Nana.jpg | 3 + .../imgsrc/TechWorldNana-YAML_intro.png | 3 + .../series/imgsrc/TechWorld_Nana_Banner.jpg | 3 + .../series/imgsrc/YAML_Tut_Nana_sq.jpg | 3 + .../series/imgsrc/YAML_Tut_Nana_sq.png | 3 + .../series/imgsrc/YAML_Tut_Nana_thumbnail.jpg | 3 + .../series/imgsrc/css_ChrisWereDigital-2.png | 3 + .../series/imgsrc/css_intro-YT-EJMedia.png | 3 + .../css_linebyline-ChrisWereDigital.png | 3 + .../skeleton/images/affiliates/ardour.png | 3 - .../skeleton/images/affiliates/audacity.png | 3 - .../skeleton/images/affiliates/blender.png | 3 - .../skeleton/images/affiliates/blendswap.png | 3 - .../images/affiliates/creativecommons.png | 3 - .../skeleton/images/affiliates/debian.png | 3 - .../images/affiliates/ethiccinema.png | 3 - .../affiliates/freesoftwarefoundation.png | 3 - .../skeleton/images/affiliates/freesound.png | 3 - .../skeleton/images/affiliates/gimp.png | 3 - .../skeleton/images/affiliates/inkscape.png | 3 - .../images/affiliates/internet_archive.png | 3 - .../skeleton/images/affiliates/jamendo.png | 3 - .../skeleton/images/affiliates/kdenlive.png | 3 - .../skeleton/images/affiliates/krita.png | 3 - .../skeleton/images/affiliates/lunatics.png | 3 - .../skeleton/images/affiliates/mastodon.png | 3 - .../images/affiliates/morevnaproject.png | 3 - .../skeleton/images/affiliates/musopen.png | 3 - .../images/affiliates/olivevideoeditor.png | 3 - .../images/affiliates/publicdomainfiles.png | 3 - .../images/affiliates/publicknowledge.png | 3 - .../images/affiliates/questioncopyright.png | 3 - .../images/affiliates/sfconservancy.png | 3 - .../images/affiliates/ubuntu_studio.png | 3 - .../skeleton/images/affiliates/urchn.png | 3 - .../sponsors/corp_sponsor_medallion.png | 3 - .../sponsors/film_freedom_foundation.png | 3 - .../sponsors/full_sponsor_medallion.png | 3 - .../sponsors/gold_sponsor_medallion.png | 3 - .../sponsors/half_sponsor_medallion.png | 3 - .../images/sponsors/indian_pirates-600px.png | 3 - .../international_space_foundation.png | 3 - .../sponsors/logo_sponsor_medallion.png | 3 - .../images/sponsors/luna_project-600px.png | 3 - .../sponsors/mock_corp_logo_lunatics.png | 3 - .../images/sponsors/newworlds-600px.png | 3 - .../sponsors/silver_sponsor_medallion.png | 3 - .../images/vidposters/blank-600sq.png | 3 - .../images/vidposters/ce-explainer-btn.png | 3 - .../images/vidposters/ce-explainer.png | 3 - .../images/vidposters/om_dvd_intro-btn.png | 3 - .../images/vidposters/s1e01-dvd-btn.png | 3 - .../images/vidposters/s1e01-episode-btn.png | 3 - .../images/vidposters/s1e01-preview-btn.png | 3 - .../images/vidposters/s1e01-prolog-600sq.png | 3 - .../vidposters/s1e01-prolog-episode-btn.png | 3 - .../vidposters/s1e01-prolog-episode-btn2.png | 3 - .../vidposters/s1e01-prolog-episode.png | 3 - .../vidposters/s1e01-prolog-preview-btn.png | 3 - .../vidposters/s1e01-prolog-preview.png | 3 - .../s1e01-yaml_tut_yt-nana-600sq.png | 3 + .../s1e01-yaml_tut_yt-nana-60btn.png | 3 + .../s1e01-yaml_tut_yt-nana-800x450.png | 3 + .../vidposters/s1e02-from_earth-600sq.png | 3 - .../s1e02-jinja2_tut-vimeo-Schulman-600sq.png | 3 + .../s1e02-jinja2_tut-vimeo-Schulman-60btn.png | 3 + ...1e02-jinja2_tut-vimeo-Schulman-800x450.png | 3 + .../s1e03-css_tut_pt-ChrisWere-600sq.png | 3 + .../s1e03-css_tut_pt-ChrisWere-60btn.png | 3 + .../s1e03-css_tut_pt-ChrisWere-800x450.png | 3 + .../images/vidposters/s1e03-to_moon-600sq.png | 3 - .../skeleton/images/vidposters/thanks-btn.png | 3 - .../images/vidposters/tr_thanks-btn.png | 3 - LunaGen/tests/test_lunagen_cli.py | 14 +- 92 files changed, 628 insertions(+), 1377 deletions(-) create mode 100644 LunaGen/lunagen_profile.txt create mode 100644 LunaGen/profile_stats.txt create mode 100755 LunaGen/src/lunagen_backup.py delete mode 100644 LunaGen/testdata/series/data/affiliates-old.yaml delete mode 100644 LunaGen/testdata/series/data/affiliates.yaml delete mode 100644 LunaGen/testdata/series/data/characters.yaml delete mode 100644 LunaGen/testdata/series/data/products.yaml delete mode 100644 LunaGen/testdata/series/data/software.yaml delete mode 100644 LunaGen/testdata/series/data/sponsorship.yaml create mode 100644 LunaGen/testdata/series/episodes/S1/S1E02.yaml create mode 100644 LunaGen/testdata/series/episodes/S1/S1E03.yaml create mode 100644 LunaGen/testdata/series/imgsrc/DanaeMillerClendon-SilverStripeYAML.png create mode 100644 LunaGen/testdata/series/imgsrc/JeremySchulman-288sq.webp create mode 100644 LunaGen/testdata/series/imgsrc/JeremySchulman-Jinja2-Vimeo.png create mode 100644 LunaGen/testdata/series/imgsrc/JoeShindelar-YAML_lesson1.png create mode 100644 LunaGen/testdata/series/imgsrc/TechWorld-Nana.jpg create mode 100644 LunaGen/testdata/series/imgsrc/TechWorldNana-YAML_intro.png create mode 100644 LunaGen/testdata/series/imgsrc/TechWorld_Nana_Banner.jpg create mode 100644 LunaGen/testdata/series/imgsrc/YAML_Tut_Nana_sq.jpg create mode 100644 LunaGen/testdata/series/imgsrc/YAML_Tut_Nana_sq.png create mode 100644 LunaGen/testdata/series/imgsrc/YAML_Tut_Nana_thumbnail.jpg create mode 100644 LunaGen/testdata/series/imgsrc/css_ChrisWereDigital-2.png create mode 100644 LunaGen/testdata/series/imgsrc/css_intro-YT-EJMedia.png create mode 100644 LunaGen/testdata/series/imgsrc/css_linebyline-ChrisWereDigital.png delete mode 100644 LunaGen/testdata/series/skeleton/images/affiliates/ardour.png delete mode 100644 LunaGen/testdata/series/skeleton/images/affiliates/audacity.png delete mode 100644 LunaGen/testdata/series/skeleton/images/affiliates/blender.png delete mode 100644 LunaGen/testdata/series/skeleton/images/affiliates/blendswap.png delete mode 100644 LunaGen/testdata/series/skeleton/images/affiliates/creativecommons.png delete mode 100644 LunaGen/testdata/series/skeleton/images/affiliates/debian.png delete mode 100644 LunaGen/testdata/series/skeleton/images/affiliates/ethiccinema.png delete mode 100644 LunaGen/testdata/series/skeleton/images/affiliates/freesoftwarefoundation.png delete mode 100644 LunaGen/testdata/series/skeleton/images/affiliates/freesound.png delete mode 100644 LunaGen/testdata/series/skeleton/images/affiliates/gimp.png delete mode 100644 LunaGen/testdata/series/skeleton/images/affiliates/inkscape.png delete mode 100644 LunaGen/testdata/series/skeleton/images/affiliates/internet_archive.png delete mode 100644 LunaGen/testdata/series/skeleton/images/affiliates/jamendo.png delete mode 100644 LunaGen/testdata/series/skeleton/images/affiliates/kdenlive.png delete mode 100644 LunaGen/testdata/series/skeleton/images/affiliates/krita.png delete mode 100644 LunaGen/testdata/series/skeleton/images/affiliates/lunatics.png delete mode 100644 LunaGen/testdata/series/skeleton/images/affiliates/mastodon.png delete mode 100644 LunaGen/testdata/series/skeleton/images/affiliates/morevnaproject.png delete mode 100644 LunaGen/testdata/series/skeleton/images/affiliates/musopen.png delete mode 100644 LunaGen/testdata/series/skeleton/images/affiliates/olivevideoeditor.png delete mode 100644 LunaGen/testdata/series/skeleton/images/affiliates/publicdomainfiles.png delete mode 100644 LunaGen/testdata/series/skeleton/images/affiliates/publicknowledge.png delete mode 100644 LunaGen/testdata/series/skeleton/images/affiliates/questioncopyright.png delete mode 100644 LunaGen/testdata/series/skeleton/images/affiliates/sfconservancy.png delete mode 100644 LunaGen/testdata/series/skeleton/images/affiliates/ubuntu_studio.png delete mode 100644 LunaGen/testdata/series/skeleton/images/affiliates/urchn.png delete mode 100644 LunaGen/testdata/series/skeleton/images/sponsors/corp_sponsor_medallion.png delete mode 100644 LunaGen/testdata/series/skeleton/images/sponsors/film_freedom_foundation.png delete mode 100644 LunaGen/testdata/series/skeleton/images/sponsors/full_sponsor_medallion.png delete mode 100644 LunaGen/testdata/series/skeleton/images/sponsors/gold_sponsor_medallion.png delete mode 100644 LunaGen/testdata/series/skeleton/images/sponsors/half_sponsor_medallion.png delete mode 100644 LunaGen/testdata/series/skeleton/images/sponsors/indian_pirates-600px.png delete mode 100644 LunaGen/testdata/series/skeleton/images/sponsors/international_space_foundation.png delete mode 100644 LunaGen/testdata/series/skeleton/images/sponsors/logo_sponsor_medallion.png delete mode 100644 LunaGen/testdata/series/skeleton/images/sponsors/luna_project-600px.png delete mode 100644 LunaGen/testdata/series/skeleton/images/sponsors/mock_corp_logo_lunatics.png delete mode 100644 LunaGen/testdata/series/skeleton/images/sponsors/newworlds-600px.png delete mode 100644 LunaGen/testdata/series/skeleton/images/sponsors/silver_sponsor_medallion.png delete mode 100644 LunaGen/testdata/series/skeleton/images/vidposters/blank-600sq.png delete mode 100644 LunaGen/testdata/series/skeleton/images/vidposters/ce-explainer-btn.png delete mode 100644 LunaGen/testdata/series/skeleton/images/vidposters/ce-explainer.png delete mode 100644 LunaGen/testdata/series/skeleton/images/vidposters/om_dvd_intro-btn.png delete mode 100644 LunaGen/testdata/series/skeleton/images/vidposters/s1e01-dvd-btn.png delete mode 100644 LunaGen/testdata/series/skeleton/images/vidposters/s1e01-episode-btn.png delete mode 100644 LunaGen/testdata/series/skeleton/images/vidposters/s1e01-preview-btn.png delete mode 100644 LunaGen/testdata/series/skeleton/images/vidposters/s1e01-prolog-600sq.png delete mode 100644 LunaGen/testdata/series/skeleton/images/vidposters/s1e01-prolog-episode-btn.png delete mode 100644 LunaGen/testdata/series/skeleton/images/vidposters/s1e01-prolog-episode-btn2.png delete mode 100644 LunaGen/testdata/series/skeleton/images/vidposters/s1e01-prolog-episode.png delete mode 100644 LunaGen/testdata/series/skeleton/images/vidposters/s1e01-prolog-preview-btn.png delete mode 100644 LunaGen/testdata/series/skeleton/images/vidposters/s1e01-prolog-preview.png create mode 100644 LunaGen/testdata/series/skeleton/images/vidposters/s1e01-yaml_tut_yt-nana-600sq.png create mode 100644 LunaGen/testdata/series/skeleton/images/vidposters/s1e01-yaml_tut_yt-nana-60btn.png create mode 100644 LunaGen/testdata/series/skeleton/images/vidposters/s1e01-yaml_tut_yt-nana-800x450.png delete mode 100644 LunaGen/testdata/series/skeleton/images/vidposters/s1e02-from_earth-600sq.png create mode 100644 LunaGen/testdata/series/skeleton/images/vidposters/s1e02-jinja2_tut-vimeo-Schulman-600sq.png create mode 100644 LunaGen/testdata/series/skeleton/images/vidposters/s1e02-jinja2_tut-vimeo-Schulman-60btn.png create mode 100644 LunaGen/testdata/series/skeleton/images/vidposters/s1e02-jinja2_tut-vimeo-Schulman-800x450.png create mode 100644 LunaGen/testdata/series/skeleton/images/vidposters/s1e03-css_tut_pt-ChrisWere-600sq.png create mode 100644 LunaGen/testdata/series/skeleton/images/vidposters/s1e03-css_tut_pt-ChrisWere-60btn.png create mode 100644 LunaGen/testdata/series/skeleton/images/vidposters/s1e03-css_tut_pt-ChrisWere-800x450.png delete mode 100644 LunaGen/testdata/series/skeleton/images/vidposters/s1e03-to_moon-600sq.png delete mode 100644 LunaGen/testdata/series/skeleton/images/vidposters/thanks-btn.png delete mode 100644 LunaGen/testdata/series/skeleton/images/vidposters/tr_thanks-btn.png diff --git a/LunaGen/lunagen_profile.txt b/LunaGen/lunagen_profile.txt new file mode 100644 index 0000000000000000000000000000000000000000..7125254533c9ac8e6767c32ec92412c102e23be5 GIT binary patch literal 15086 zcmbVTeRN#Kbr(qThh)q02Qe6b$zU19MlvxUp_tte*HExs6aopx(p^K)LZB?wPO9KQyD4cm#=b)xl-O)wY)UE ze3f4j^fI*F$yNMRUweHTk%~5YxSxCVk^A1Ry6~}=MjcA!Vg~bw1xsc5@kZU>y%!FK*ztnw= z|Ng@%et}#|ljJH_%30w%kgkjLs&zXP;tt%XxcZRcLg$j*q$H;Cy(y&xi!yeYqFBiN@qTK@^iFRz{#m_wQ)_hmKLYeBQ*a3754`M|C>+0)PFz^n!qqZ3)!MeQeaGjfl(=Rcos_I4zgiFTI>MY z2j~%|31fN@o{JO0vrx)q3qkU!V*X|p5g!HbT9^n(4d5CHCmP$R6=>%)6mD69aOINk zQ8KKIAOP;9p|u%9S>KUKF~Dj7*hoD1V>#J&%OT$RTD(Il2OLUO#S;3S41%8<&_p?| zWGAkOY|$@dE6EFn;f3jMJ$v_$j=Y|7)k{_MNv_&c)lWu5xT#LAqaOOkZcKXQ4dm*B%{M{TbQHcGCeVXBT>znLPu zK%Yw)qBbLw@rqt0lWDGfR0dt0jg|8pYfXf()*yC)xtNVvzMjkIG*|9wZh@Ej5W{SFuQvV8M_{o?e0v^A;!5-&6!) zA0V!xhrRfQiQDUg`gnvSMz#_C5+w+=ZOJI}0upPnHmZAZswC0DXK57m6z#H9<29T& z!-y7MRq5iEs=d)D|HPhNfdv^2j|#U)Znos}%1l)+B|3?A-* zXMTD7%65WLFHxEFdLf*h4()@I9k@Q1Sc?oj>`CV3Sud1QE@PJz&a#mlEzujvm3Q<$ zbZC+aNOM_fIzhCo&^DmO`#Az@n#73&#=FQcz-#HapyVnolkrOZmy^$2eCfw&D^Lzf zL0;vI+#-{IT`jA1y%BP;H|Z!-WnKw4K+T3l&9Zp?(3n@KobDBuhx_!PM(d}7qk@h3 zX_%&AOp~ltR;2lbQtVVuLXqb>MMrqKu*?%ZG?;ei6O_S_dV$pdFe=&729ga^!Cx7H zY^wpa9kN;O!6k=gXU&cHAPpsnbVjmBq7wD<^cg$qj4z!2k6yMhGnl1)vA}*-&z^SR zb=#k~B(-x@+Ep*e(%5Cx@1sX;S|)%bX_^d)O0&$ePcV~S(eHOAoE#a*@B+Duek0{} zPrJ7|=L=V-t5L9(jln#hAS>Bo&VkL(BWcAo^l(R(T(PBl?6nlXRK=C_eL_5#VH+-o zI>phD;GS1K@2sQC`<`vYf?9`Uu_sq5~Z`*O-vFHwDM z=VId(oFXae{RI*p9$}vQO^RQt;)+1TI+hVJ1`(~wOs%6gqWqZ6#b8zhn`fPHX>jn- z>dUQ(w*ma|aECYVTjW0Xs}#T3>x6}(*l!|$+5*2)5{_z-yoW7(6KjoTC*Wx)CV~gI zkN8EEBlUxz8KehIls14Bb4v7fh(0S5_8-tWp>eu+x5f$Vfg*lmP0Anb1EU^%z~DyE z!H1`*DysBFM3az27gb6kt*k{7m1srdD5N5e@{2$SrU^xSk{%p+{K8eQgB7YHDE%;u z5^sGyhJ6~t+P}8SxopELDSi=`($}O*JQEs$8x?esC8$4%wBupTFeaB^gO4^Fg>KN@ zT!1yJ4I`S{koeYStd~BU3Xti~(Ncb_fOM3^sxWcwH`Z*R3`eZUg=D{1l;|y)lcJAm zxR!H$-t)6V1+`cgeA?Fy_Ycy;D>PiIE$0lCCWRg)}O3wpSu&b!?zCfahHqX&m=!q*3xUn_cE!iXI%YG%H2Epz=q;2C#MsZ9*c%CvB93| zSdU6MR~jwDjWo3Ce(Ut540{nmY96&}(M*W!r0)9j?bYk2Ogtd%$+h4w8|C@V-||W^?G;M=W9`?F4j-hS6^TdS{4UnJmNkwWiVtkw%~;xkba+pEo7Xjg&lUJKN|+ z&Pc18gw$qa*BpA=R=N8 z%z1|MkH%(Sx#oAh3sxKj_TPcOxg1(FjE$D3TCWl?l|!+`o6s=k7ZWkr2J(fP-r}=y zIV~E-ydO4Ln8^u;x~pnuFiP!*;B?QnwUJf0#ym)s3H7<77+6&!wvsX!<5`A>A;SW6 zC&`s`zTMQ4M)m zp??eTRk8|oiXRX9Bfm?z-*#s_v!=R2S9H%| zg1R$k;^M?QoaV^vuqUtCu=tgqoISEk7_BRH=e*gRIuUgQ)9e32U{&^tAaa3**? zX;*6-%?4*wdOIR*LhXx#|8v!=*?|RVwh1l)$YXrdX=U;ELdw1S`9~gq;jT3l#9{kc z&$UIvn5RK^b+Le!;wG*_`DNL!f4q9lo@K=1P@j#ufpvw-hbRW=_ z$}A1Cf`Pys;dtU7k~tnqxzGI5p3hA?)=QT8cHA;bL8f6$NF}}#$7HR)zHaU75A~i+ zm{tb0Xc+TlXgXh>ZQ;HTB~ChFA)VhPdD%Ryq{BRpfyYcFtVSC-vY@tzB|XoRqG4p5 ziiykO7GZj&c7p#|G>o|bt*-8%8%Kp&IQ9O!nIkM`w8J(w2aaXM#c`pftkf4*dk$V7 zHbJ0{;4)UmYP?y)SdWbuHdE?>cAXia#60-u>P9?7Uqq5(NTT~dj0}Oq!=N`YIpOcF zq}Fe`^CL-7Z_zL&8jNB*j;SWlJ)?SfXKfKMEjcY3#>5G>*c8X)g!$y_%g^7~1&hvn1K8Dj2D4 zr0@qJ&un=DM%A;t3fXL=;#5a2jkWT$0p$5~U zy^=(`oN^sLQ)aff6^MZ=izdudL)K}A_ynxBeU z`+QAe8Z?ZlW5bq{=nw4ra(4Ts^9d6>n}o&8paJH5q7nmmtOb3$alb*Hx6Vnszxea< zdnXRQk1%omNSGf0Js#mXkU^s`gR9zNfyC7I?|AHQF1=&)q_q1{|IvMew{8p$O(26e z6P>9}b=eV3S~FExqY0)qy8unsK98Zur-x)8ZZ;8fty5G0X#F#J|LOurFQJ`S78Gp5(#DEaEn)LqhGk^o(nZ zUtQgk7GIB((BHww{m&WiY<|2*B!5qTlO;4tNYUb|(-v}!fGPF^Vt1Te3Q1+c+!xRK z$Dcpgo3{75jClB```@@}<K<*c()g$y-&HuNgG3CBzih z;V~#NwN|`wmGaV2gi=c%iJ4Zg=oNnbWrD7CU|ST__R)3`{T6(T3jMS6MY4fI+7^cX z4SiFaM%TifB6{Sy1Hqo4UJ^PA3XNH-17MvK)o8xcz?`Q7&UxoOah9;;0_vp^XM;p> z_HfWHZXougu$Gjw_ckulZ8(eP%S$c7s|XWuznzOsZe$oJxy77eSYWiT;meDHCV46GvRN?T@&p7HU2b;KO{ zolK~+jl41S6TLr3SXnF@#@q+yd<#L76Pl!2~{AD!)8el(Aw zW+7}=7noVa2lCMBkhc1cgS-&JQYAzmyR#>^VJYnSBtRWDW1E9GoL!cmR)YNla}|sq(RutF9}+S8oAn zKyxeT&G@qDflprD;(ZaTV`m2a4P5Z1i`nLpmmEh`iE0QZTy#<953|jo6kP=DO}Ge1 zef>g#8o^XO_?hfb4*zBBufe^Qct^ZTdMx#kRn5-Q;{W%F>Czgs`i1{Vkdu>IB(RrY z?Zo$`HJZ>fKCW_#ti;!|!}v(s||o`H*Q&GRxaDydH1Pl_sYcw|8IL2s{gQT z90oleu0_L`e*&8GBxZauBqwPPZxV6hM3+ZA0(!e|b4ba2IAyoBrB4xw3Ji#VpbYMh ziV-P-7P;$3zd!fcFHBFnPv5us{saGdT9R584KSZ2q`(Ws4/data - YAML files (handwritten content) + /templates - Jinja2 site templates + /skeleton - unchanging parts of the site (copied) + + The new site is created in . + """ + def __init__(self, srcdir, tgtdir=None, verbosity=0): + self.srcdir = os.path.abspath(srcdir) + if not tgtdir: + self.tgtdir = os.path.join(self.srcdir, 'site') + else: + self.tgtdir = os.path.abspath(tgtdir) + self.datadir = os.path.join(self.srcdir, 'data') + self.templates = os.path.join(self.srcdir, 'templates') + self.skeleton = os.path.join(self.srcdir, 'skeleton') + + self.verbose = verbosity + + if self.verbose: + print("Source directory: %s" % self.srcdir) + print("Target directory: %s" % self.tgtdir) + print("YAML content should be in: %s" % self.datadir) + print("Jinja2 templates should be in: %s" % self.templates) + print("Skeleton website should be in: %s" % self.skeleton) + + + #TODO: Could make sure these directories exist + + # Load up the data from YAML files: + self._load_sitedata() + self._load_theme() + self._load_affiliates() + self._load_softwarelist() + self._load_products() + self._load_serieslist() + + super().__init__( + loader=jinja2.ChoiceLoader([ + jinja2.FileSystemLoader(os.path.join(self.datadir, 'templates')), + jinja2.FileSystemLoader(self.theme['path']), + jinja2.FileSystemLoader(self.templates)]), + autoescape=jinja2.select_autoescape(['html','xml'])) + + @staticmethod + def _paginate(seq, pagesize): + """ + Given a sequence of objects, break it into a book of + pages, each containing no more than pagesize objects: + + >>> test = [1,'2','three', 4, 5, 'six', 'seven', 8, 9, True, False, None, 0] + >>> LunaGen._paginate(test, 4) + [[1, '2', 'three', 4], [5, 'six', 'seven', 8], [9, True, False, None], [0]] + >>> + """ + book = [] + page = [] + for i,ob in enumerate(seq): + if i%pagesize==0: + if i>0: book.append(page) + page = [] + page.append(ob) + if len(page)>0: + book.append(page) + return book + + @staticmethod + def _paginate_sponsors(series, episode): + """ + Regroup sponsors into pages which: + - Contain only one kind of sponsor + - Contain no more than the 'page' limit number of sponsors per page + - Are tagged with the sponsortype so we can find the right tempate for them: + + >>> series = {'sponsortypes': + ... {'A':{'page':1,'limit':1}, + ... 'B':{'page':3, 'limit':10}, + ... 'C':{'page':4, 'limit':20}}} + ... + >>> episode = {'sponsors': + ... {'A':list(range(2)), + ... 'B':list(range(7)), + ... 'C':list(range(22))}} + ... + >>> LunaGen._paginate_sponsors(series, episode) + [('A', [0]), ('B', [0, 1, 2]), ('B', [3, 4, 5]), ('B', [6]), ('C', [0, 1, 2, 3]), ('C', [4, 5, 6, 7]), ('C', [8, 9, 10, 11]), ('C', [12, 13, 14, 15]), ('C', [16, 17, 18, 19])] + >>> + """ + paged_sponsors = [] + for spkey, sponsortype in series['sponsortypes'].items(): + if spkey not in episode['sponsors']: + episode['sponsors'][spkey] = [] + #if 'excludes' in sponsortype: + # for excluded in sponsortype['excludes']: + # if excluded in episode['sponsors'] and episode['sponsors'][excluded]: + # print("WARNING: excluded sponsortype %s will be ignored, because of existing %s." % + # (excluded, spkey)) + if 'page'in sponsortype: + paged = LunaGen._paginate( + episode['sponsors'][spkey][:sponsortype['limit']], + sponsortype['page']) + tags = [spkey] * len(paged) + paged_sponsors.extend(zip(tags, paged)) + return paged_sponsors + + @staticmethod + def _fix_series(series): + """ + Modify series data to correct certain datatypes that are not + natively supported by YAML (like OrderedDict): + >>> series = {'credits':{ + ... 'a':{'labels':'ordered'}, + ... 'b':{'labels':[['A','-A-'],['B','-B-']]}}} + ... + >>> LunaGen._fix_series(series) + >>> series['credits']['b']['labels'] + OrderedDict([('A', '-A-'), ('B', '-B-')]) + >>> + """ + for key, credit in series['credits'].items(): + if type(credit['labels']) != type(''): + credit['labels']=OrderedDict(credit['labels']) + + def _collect_stylesheets(self, *extras): + """ + Collect a list of unique stylesheets from various stylesheet + requirements from theme, site, and data from extra pages. + """ + stylesheets = [] + stylesheets.extend(self.theme['stylesheets']) + stylesheets.extend(self.sitedata['stylesheets']) + for extra in extras: + if 'stylesheets' in extra: + stylesheets.extend(extra['stylesheets']) + stylesheets = [s for i,s in enumerate(stylesheets) if s not in stylesheets[:i]] + return stylesheets + + def _load_sitedata(self): + if self.verbose: print("Loading global site data.") + with open(os.path.join(self.datadir, 'site.yaml'), 'rt') as sitedatafile: + self.sitedata = yaml.load(sitedatafile) + + def _load_theme(self): + if self.verbose: print("Loading theme data.") + self.theme = { 'stylesheets':[] } # Default values + themedir = os.path.join(Config.THEMES, self.sitedata['theme']) + if not os.path.exists(themedir): + raise FileNotFoundError("Theme directory %s not found!" % themedir) + with open(os.path.join(themedir, 'theme.yaml'), 'rt') as themedatafile: + self.theme.update(yaml.load(themedatafile)) + self.theme['path'] = themedir + + def _load_affiliates(self): + if self.verbose: print("Loading affiliates data.") + try: + with open(os.path.join(self.datadir, 'affiliates.yaml')) as aff_file: + affiliates = yaml.load(aff_file) + stylesheets = self.sitedata['stylesheets'] + self.sitedata.update(affiliates) + self.sitedata['stylesheets'] = self._collect_stylesheets(affiliates) + self.sitedata['affiliates'] = random.sample( + affiliates['affiliates'], min( int(affiliates['affiliates_at_once']), + len(affiliates['affiliates']))) + except FileNotFoundError: + print("No affiliates.yaml file, so affiliates list is empty.") + self.sitedata['affiliates'] = [] + + + def _load_softwarelist(self): + if self.verbose: print("Loading software data.") + try: + with open(os.path.join(self.datadir, 'software.yaml')) as sw_file: + softwarelist = yaml.load(sw_file) + stylesheets = self.sitedata['stylesheets'] + self.sitedata.update(softwarelist) + self.sitedata['stylesheets'] = self._collect_stylesheets(softwarelist) + except FileNotFoundError: + print("No software.yaml file, so software list is empty.") + self.sitedata['softwarelist'] = [] + + def _load_products(self): + if self.verbose: print("Loading store products data.") + try: + with open(os.path.join(self.datadir, 'products.yaml')) as prod_file: + products = yaml.load(prod_file) + stylesheets = self.sitedata['stylesheets'] + self.sitedata.update(products) + self.sitedata['stylesheets'] = self._collect_stylesheets(products) + except FileNotFoundError: + print("No products.yaml file, so software list is empty.") + self.sitedata['products'] = [] + + def _load_serieslist(self): + if self.verbose: print("Loading series data") + try: + with open(os.path.join(self.datadir, 'episodes', 'series.yaml'),'rt') as seriesfile: + self.serieslist = yaml.load(seriesfile)['serieslist'] + for series in self.serieslist: + self._fix_series(series) + episodes = [] + seriesdir = os.path.join(self.datadir, 'episodes', series['directory']) + episode_filenames = [f for f in os.listdir(seriesdir) if f.endswith('.yaml')] + for episode_filename in episode_filenames: + if self.verbose: print("Loading episode from %s" % episode_filename) + with open(os.path.join(seriesdir, episode_filename), 'rt') as episode_file: + episodes.append(yaml.load(episode_file)) + # Sort by episode number specified in the files: + try: + episodes.sort(key=lambda a: int(a['episode'])) + except KeyError: + print("Some episode YAML files may not have an 'episode' number entry?") + series['episodes'] = episodes + except FileNotFoundError: + print("No series.yaml file, so no series loaded.") + self.sitedata['serieslist'] = [] + + + def _copy_skeleton(self): + if os.path.exists(self.tgtdir): + remove_tree(self.tgtdir, verbose=self.verbose) + if self.verbose: print("Copying the theme base.") + copy_tree(os.path.join(self.theme['path'], 'base'), self.tgtdir, verbose=self.verbose) + if self.verbose: print("Copying the skeleton site.") + copy_tree(self.skeleton, self.tgtdir, verbose=self.verbose) + + + def _gen_simple_page(self, pagename, stylesheets=()): + """ + Generates a simple page with 1:1:1 Jinja2+YAML+CSS. + + The YAML and CSS pages are optional. If no file exists + for them, they will be ignored and the page generated + with only the template and global data and/or style. + """ + if self.verbose: print("Creating '%s' page" % pagename) + jinja2_name = pagename + '.j2' + yaml_path = os.path.join(self.datadir, pagename+'.yaml') + css_path = os.path.join(self.tgtdir, pagename+'.css') + # Assumes skeleton already copied + data = {} # Defaults can be set here + data.update(self.sitedata) # Global data + if os.path.exists(yaml_path): + with open(yaml_path, 'rt') as yaml_file: + data.update(yaml.load(yaml_file)) # Page data + data['stylesheets'] = self._collect_stylesheets(data) + # Add CSS if not already present: + if os.path.exists(css_path) and pagename not in data['stylesheets']: + data['stylesheets'].append(pagename) + if self.verbose: print("Generating '%s.html' from template." % pagename) + html = self.get_template(jinja2_name).render(data) + with open(os.path.join(self.tgtdir, pagename+'.html'), 'wt') as page: + page.write(html) + + def _gen_index(self): + """ + Generate an index page, if the skeleton doesn't already have one. + """ + if not os.path.exists(os.path.join(self.tgtdir, 'index.html')): + if self.verbose: print("Generating the Index page.") + data = {} + data.update(self.sitedata) + data['next'] = next # Adds iterator capability + data['stylesheets'] = self._collect_stylesheets(self.sitedata['stylesheets']) + if 'episode_as_index' in self.sitedata and self.sitedata['episode_as_index']: + data['serieslist'] = self.serieslist + data['banners'] = iter(['affiliates_banner.j2', + 'store_banner.j2', + 'sponsoropps_banner.j2']) + data['stylesheets'].extend(self._collect_stylesheets( + self.sitedata['episode_list_page'])) + html = self.get_template('index.j2').render(data) + with open(os.path.join(self.tgtdir, 'index.html'), 'wt') as page: + page.write(html) + else: + if self.verbose: print("Found 'index.html', so not generated.") + + def _gen_episode_list_page(self): + """ + Generate a page linking to all of the individual episodes, + grouped into "series" (or "seasons"). + + #Currently hard-coded to be saved as 'index.html' for the site. + """ + if self.verbose: print("Generating the Index (Episode List) page.") + if 'render_as' in self.sitedata['episode_list_page']: + render_as = self.sitedata['episode_list_page']['render_as'] + else: + render_as = 'index.html' + data = {} + data.update(self.sitedata) + data['serieslist'] = self.serieslist + data['banners'] = iter(['affiliates_banner.j2', 'store_banner.j2', 'sponsoropps_banner.j2']) + data['stylesheets'] = self._collect_stylesheets(self.sitedata['episode_list_page']) + data['next'] = next # Adds iterator capability + html = self.get_template('episode_list.j2').render(data) + with open(os.path.join(self.tgtdir, render_as), 'wt') as page: + page.write(html) + + def _gen_episode_pages(self): + """ + Generate a page for each episode in each series. + """ + if self.verbose: print("Generating episode pages...") + + if 'stylesheets' in self.sitedata['episode_pages']: + stylesheets = self.sitedata['episode_pages']['stylesheets'] + else: + stylesheets = [] + + for series in self.serieslist: + for episode in series['episodes']: + paged_sponsors = self._paginate_sponsors(series, episode) + episode['paged_sponsors'] = iter(paged_sponsors) + data = {} + data.update(self.sitedata) + data['series'] = series + data['episode'] = episode + data['stylesheets'] = self._collect_stylesheets(self.sitedata['episode_pages'],episode) + data['next'] = next + data['banners'] = ['affiliates_banner.j2'] + html = self.get_template('episode_page.j2').render(data) + filename = episode['series'] +'E' + ('%2.2d' % int(episode['episode'])) + '.html' + os.makedirs(os.path.join(self.tgtdir, series['directory']), exist_ok=True) + with open(os.path.join(self.tgtdir, series['directory'], filename), 'wt') as page: + page.write(html) + + def gensite(self): + """ + Generate the site, using the data we've accumulated. + """ + self._copy_skeleton() + for page in self.sitedata['simple_pages']: + self._gen_simple_page(page) + if self.sitedata['serieslist']: + self._gen_episode_list_page() + self._gen_episode_pages() + else: + print("Not generating series & episode pages: serieslist empty.") + self._gen_index() + + +def main(argv=None): + '''Command line options.''' + + program_name = os.path.basename(sys.argv[0]) + program_version = "v0.1" + program_build_date = "%s" % Config.__updated__ + + program_version_string = '%%prog %s (%s)' % (program_version, program_build_date) + program_longdesc = '''\ +LunaGen is a static HTML website generator designed for releasing +a series of episodes (technically: a series of series of episodes). + +Data is authored using the YAML structured data language, which allows +for episode metadata and descriptions to be written in a human-friendly +format, which is then formatted into HTML using Jinja2 templates. + +Once generated, the site is static and can simply be uploaded to a +standard web server with minimal or no configuration (like a static web host). + +It was originally created to generate the release pages for +Anansi Spaceworks' "Lunatics!" series. + +For details, please see the 'examples' and 'doc' directories. + ''' + program_license = "Copyright 2019 Terry Hancock (Anansi Spaceworks) \ + Licensed under the GNU General Public License, version 2.0\n" + + if argv is None: + argv = sys.argv[1:] + #try: + # setup option parser + parser = OptionParser(version=program_version_string, epilog=program_longdesc, description=program_license) + parser.add_option("-i", "--in", dest="src", help="set input path [default: %default]", metavar="FILE") + parser.add_option("-o", "--out", dest="tgt", help="set output path [default: %default]", metavar="FILE") + parser.add_option("-v", "--verbose", dest="verbose", action="count", help="set verbosity level [default: %default]") + + # set defaults + parser.set_defaults(tgt="./site", src=".") + + # process options + (opts, args) = parser.parse_args(argv) + + if opts.verbose > 0: + print("verbosity level = %d" % opts.verbose) + if opts.src: + print("src = %s" % opts.src) + if opts.tgt: + print("tgt = %s" % opts.tgt) + + lunagen = LunaGen(opts.src, opts.tgt, opts.verbose) + lunagen.gensite() + +# except Exception as e: +# indent = len(program_name) * " " +# sys.stderr.write(program_name + ": " + repr(e) + "\n") +# sys.stderr.write(indent + " for help use --help") +# return 2 + + +if __name__ == "__main__": + if Config.DEBUG: + #sys.argv.append("-h") + sys.argv.append("-v") + if Config.TESTRUN: + import doctest + doctest.testmod() + if Config.PROFILE: + import cProfile + import pstats + profile_filename = 'lunagen_profile.txt' + cProfile.run('main()', profile_filename) + statsfile = open("profile_stats.txt", "wb") + p = pstats.Stats(profile_filename, stream=statsfile) + stats = p.strip_dirs().sort_stats('cumulative') + stats.print_stats() + statsfile.close() + sys.exit(0) + sys.exit(main()) \ No newline at end of file diff --git a/LunaGen/testdata/series/data/affiliates-old.yaml b/LunaGen/testdata/series/data/affiliates-old.yaml deleted file mode 100644 index b11acc6..0000000 --- a/LunaGen/testdata/series/data/affiliates-old.yaml +++ /dev/null @@ -1,55 +0,0 @@ -# Affiliates Ad data -# This is a MOCK-UP, not real affiliates. -# (Because I don't have any yet) ---- -stylesheets: - - affiliates -# It's awkward to have too many affiliate links at one time, so -# the script will choose a number of them at random on each refresh -# we need to tell it how many we want: -affiliates_at_once: 7 - -affiliates: - - name: 123posters - url: http://www.123posters.com/ - img: 123posters.png - - - name: Amazon - url: http://amazon.com - img: amazon.png - - - name: Barnes & Noble - url: https://www.barnesandnoble.com/ - img: barnes_noble.png - - - name: Better World Books - url: https://www.betterworldbooks.com/ - img: betterworldbooks.png - - - name: Crayola - url: https://www.crayola.com/ - img: crayola.png - - - name: Humble Bundle - url: https://www.humblebundle.com/ - img: humble.png - - - name: Kiwi Crate - url: https://www.kiwico.com/ - img: kiwicrate.png - - - name: Linux Foundation Training Programs - url: https://www.linuxfoundation.org/ - img: linux_foundation.png - - - name: Lonely Planet - url: https://www.lonelyplanet.com/ - img: lonelyplanet.png - - - name: Red Hat - url: https://www.redhat.com/en - img: redhat.png - - - name: Lenovo - url: https://www.lenovo.com/us/en/pc - img: lenovo.png \ No newline at end of file diff --git a/LunaGen/testdata/series/data/affiliates.yaml b/LunaGen/testdata/series/data/affiliates.yaml deleted file mode 100644 index 70ad9b8..0000000 --- a/LunaGen/testdata/series/data/affiliates.yaml +++ /dev/null @@ -1,147 +0,0 @@ -# Affiliates Ad data -# This is a MOCK-UP, using popular Free Culture / Open Source projects -# We do not have any actual affiliation with these sites -# ---- -stylesheets: - - affiliates -# It's awkward to have too many affiliate links at one time, so -# the script will choose a number of them at random on each refresh -# we need to tell it how many we want: -affiliates_at_once: 7 - -affiliates_message: > - We benefit when you support these projects and services! - -affiliates: - - name: Ardour - url: https://ardour.org - img: ardour.png - type: Software We Use - - - name: Audacity - url: https://audacityteam.org - img: audacity.png - type: Software We Use - - - name: Blender - url: https://blender.org - img: blender.png - type: Software We Use - - - name: Blender Cloud - url: https://cloud.blender.org - img: blender_cloud.png - type: Open Movie Platform - - - name: BlendSwap - url: https://blendswap.com - img: blendswap.png - type: Shared Asset Archive - - - name: Creative Commons - url: https://www.creativecommons.org - img: creativecommons.png - type: Free Culture Advocacy Group - - - name: Debian - url: https://debian.org - img: debian.png - type: Software We Use - - - name: Ethic Cinema - url: http://ethiccinema.org - img: ethiccinema.png - type: Free Culture Advocacy Group - - - name: Free Software Foundation - url: https://www.fsf.org - img: freesoftwarefoundation.png - type: Free Software Advocacy Group - - - name: Free Sound - url: https://freesound.org - img: freesound.png - type: Shared Asset Archive - - - name: GIMP - url: https://gimp.org - img: gimp.png - type: Software We Use - - - name: Inkscape - url: https://inkscape.org - img: inkscape.png - type: Software We Use - - - name: Internet Archive - url: https://archive.org - img: internet_archive.png - type: Shared Asset Archive - - - name: Jamendo - url: https://jamendo.com - img: jamendo.png - type: Shared Asset Archive - - - name: Kdenlive - url: https://kdenlive.org - img: kdenlive.png - type: Software We Use - - - name: Krita - url: https://krita.org - img: krita.png - type: Software We Use - - - name: Mastodon - url: http://mastodon.social - img: mastodon.png - type: Social Media Platform We Use - - - name: Morevna Project - url: https://morevnaproject.org - img: morevnaproject.png - type: Free Culture Project - - - name: MusOpen - url: https://musopen.org - img: musopen.png - type: Shared Asset Archive - - - name: Olive Video Editor - url: https://olivevideoeditor.org - img: olivevideoeditor.png - type: Software We Use - - - name: Public Domain Files - url: http://www.publicdomainfiles.com - img: publicdomainfiles.png - type: Shared Asset Archive - - - name: Public Knowledge - url: https://publicknowledge.org - img: publicknowledge.png - type: Free Culture Advocacy Group - - - name: Question Copyright - url: https://questioncopyright.org - img: questioncopyright.png - type: Free Culture Advocacy Group - - - name: Software Freedom Conservancy - url: https://sfconservancy.org - img: sfconservancy.png - type: Free Software Advocacy Group - - - name: Ubuntu Studio - url: https://ubuntustudio.org - img: ubuntu_studio.png - type: Software We Use - - - name: Urchn - url: https://urchn.org - img: urchn.png - type: Free Culture Studio - - \ No newline at end of file diff --git a/LunaGen/testdata/series/data/characters.yaml b/LunaGen/testdata/series/data/characters.yaml deleted file mode 100644 index 836b94d..0000000 --- a/LunaGen/testdata/series/data/characters.yaml +++ /dev/null @@ -1,227 +0,0 @@ -# Data for the character list page ---- -stylesheets: - - bkg_moon_iridium - -characters: - - name: Hiromi - fullname: Hiromi Aoki Lerner - img: hiromi_render_portrait.png - born: 2001 - first_episode: 1 - - - - desc: > - Hiromi Lerner was a medical student and a concert - pianist when she first learned about the International - Space Foundation's project to put a colony on the Moon. - - She's had a life-long interest in space (stemming partly - from her father, who owns a small aerospace business in - Torrance, California), but her main motivation is to - humanize the project and establish a comfortable home - on the Moon. She idolizes her husband Rob Lerner, but - also recognizes that he often has his head in the clouds, - and is not always the most stable man. She does a lot to - keep him grounded. - - She's a traditionalist when it comes to home, decor, - and fashion, and has an active artistic interest in - integrating Japanese traditionalist aesthetics with - her technological lifestyle. She also sometimes sees - herself in terms of American western pioneers, who she - feels a lot of connection with as a pioneer on a new - frontier. - - relations: - husband: Rob Lerner - daughter: Georgiana Lerner - father: David Aoki - mother: Ryoko Takamura - - - name: Rob - fullname: John Robert Lerner - img: rob_render_portrait.png - born: 1993 - first_episode: 2 - - desc: > - Rob Lerner is a dreamer who has always been fascinated - with the idea of living on another world. He grew up - reading (and watching) science fiction, and chose - mechanical engineering as a major in college. He's originally - from Texas, although he's lived in many parts of the US - Southwest during his life. - - He tends to be focused on big picture ideas, although he - can also become bogged down in technical details and tends - to see problems through his engineering lens, which sometimes - leads him to struggle with more organic problems. His personality - is somewhat mercurial, prone to manic obsessions and depression - when things don't work out as he hopes. - - He has a great enthusiasm for humanity in the abstract, but - often finds real individual humans hard to get along with. He - doesn't quite understand what he did to deserve the loyalty - and affection of Hiromi, but he's determined to keep doing it. - - He founded the International Space Foundation which sponsors - the colony, and his place there is largely connected to that - status. He's seen as a kind of spiritual leader to the rest, - but isn't necessarily formally in charge. - - relations: - wife: Hiromi Lerner - daughter: Georgiana Lerner - - - name: Anya - fullname: Anna Anatolyeva Titova / Anna Titova-Farmer (US) - img: anya_render_portrait.png - born: 2005 - first_episode: 3 - - desc: > - Anya Titova (also known as Anya Farmer or Anya Titova-Farmer, - but she uses her well-known maiden name professionally) is - the youngest child and only daughter of the billionaire co-owner of - a major space company (RK Cosmos), Anatoly Titov (his brother - Konstantin is also a major shareholder, as well being largely - in charge of research and development), and granddaughter of - Igor Titov who founded the company. - - Unlike her older brothers, Sergei and Gregor, she was not - pressured to work as a cosmonaut, although she has had - extensive pilot training as a kind of family expectation. - - She's lived a very privileged life, and was very much a rich - party girl in her youth. She liked fast cars and flashy - technology, but has increasingly wanted to make an identity - for herself. In her early twenties, she established her own - satellite company, and has used the profits to press her - new interest in space development. - - She met Josh Farmer at a conference on space agriculture - sponsored by Rob Lerner's ISF, and there was immediate - chemistry her and Josh, which led to them getting married - and having a child not long after. But Anya never really - slowed down in her career, simply turning her efforts - more and more directly towards the ISF project. - - Her family regards her interest in this project amusingly - "domestic", and tease her about it, but this will not stop - her. The more menial aspects of frontier life are a hard - challenge for her to adapt to, but she's managing. - - She and Rob became co-conspirators on founding the project, - and she largely brought in the money and the corporate - connections to make it happen -- partly on the condition that - she and her family are in on this first colony. - - relations: - husband: Josh Farmer - son: Tim Farmer - father: Anatoly Titov - brothers: - - Sergei Titov - - Gregor Titov - grandfather: Igor Titov - - - name: Josh - fullname: Joshua Randall Farmer - img: josh_render_portrait.png - born: 2004 - first_episode: 2 - - desc: > - Josh Farmer is amused at his appropriate name, as he - is indeed from a family of Farmers in the US Midwest. He - has a lot of Middle-American attitudes and values, but - he is the one who went to college. In fact, he has a - doctorate in agricultural science, though he doesn't - really like to be called "Doctor Farmer". - - His specialty is space agriculture, and he knows just - about everything that anyone knows about how to grow - crops in space, and he's got a pretty fair knowledge of - animal husbandry as well, largely from his youth, growing - up on a farm. - - He and his wife Anya seem like complete opposites, but - in fact, they share a lot of basic values, and so their - relationship is more complementary than oppositional. But - it's no question that Josh's quiet stoic outlook on life - makes an intense contrast with Anya's firebrand personality - and outspokenness. - - Rob Lerner recruited Josh early on in the Lunar Independent - Biospherics Research Experiment (LIBRE) -- the Earthly - prototype the ISF colony is based on, early on, and he - has been instrumental to the planning and operation of the - project. - - relations: - wife: Anya Titova - son: Tim Farmer - - - name: Tim - fullname: Igor Timothy Farmer - img: tim_render_portrait.png - born: 2026 - first_episode: 2 - - desc: > - Tim does not like his first name, Igor, which Anya gave - him in honor of his great-grandfather, and prefers to - stick with Tim. His mother still calls him "Igor", though. - - He did not exactly choose to be a Lunar colonist, though - his chosen form of rebellion (promoting Mars colonization) - betrays a bit of his pride in his family and situation. It's - also true that he was old enough to have stayed with one - of his uncles' families had he really not wanted to go. - - He is very much aware of the social deprivation of being - "literally the only teenager on the entire planet", and - he spends a lot of his time online, interacting with his - friends in VR communities on the "Great Global Grid" which - he jokes is now th "Great Galactic Grid". He has a large - following online, including a lot of teenage girls, who - he has a not-entirely-ethical attitude towards, much to - his mother's frustration, and a somewhat unhealthy connection - to a piece of anime-inspired "virtual girlfriend" software, - known as "Momo Aiai". - - He spends a lot of time hanging out with Georgiana, who is - a little like a sister, given how close their living - arrangements are, but they're too far apart in age to have - really common interests. - - relations: - father: Josh Farmer - mother: Anya Titova - - - name: Georgiana - fullname: Georgiana Lerner - img: georgiana_render_portrait.png - born: 2033 - first_episode: 1 - - desc: - Georgiana is a very quiet, introspective girl, who likes to - play with her bunny doll and secretly misses Earth, though - she's also excited about the prospect of living on the Moon, - and doesn't want to disappoint her parents. - - She's still at a young enough age for magical thinking, and - sometimes invents her own "mythology" to explain how her - world works, ranging from insightful to woefully incorrect, - as with most children her age. - - She's eager to learn new skills and adapts pretty quickly to - life in the colony. - - relations: - mother: Hiromi Lerner - father: Rob Lerner - diff --git a/LunaGen/testdata/series/data/products.yaml b/LunaGen/testdata/series/data/products.yaml deleted file mode 100644 index 4a5d23d..0000000 --- a/LunaGen/testdata/series/data/products.yaml +++ /dev/null @@ -1,35 +0,0 @@ -# Gumroad Store product links ---- -stylesheets: - - products - -products: - - name: Books - desc: Artbooks, writers guide, and more. - url: http://gumroad.com/anansispace - img: store_books.png - - - name: Hard Media - desc: Video on DVD or flash media. Soundtrack on CD or vinyl. - url: http://gumroad.com/anansispace - img: store_hardmedia.png - - - name: Posters - desc: Decorate your wall with posters and banners. - url: http://gumroad.com/anansispace - img: store_posters.png - - - name: Subscriptions - desc: Subscribe to keep up to date, or become a patron for one episode. - url: http://gumroad.com/anansispace - img: store_subscriptions.png - - - name: Novelties - desc: Collectible novelties and toys. - url: http://gumroad.com/anansispace - img: store_novelties.png - - - name: Digital Perks - desc: Wallpapers, digital design, 3D printing, custom products. - url: http://gumroad.com/anansispace - img: store_digitalperks.png \ No newline at end of file diff --git a/LunaGen/testdata/series/data/site.yaml b/LunaGen/testdata/series/data/site.yaml index e9bc741..239d6b2 100644 --- a/LunaGen/testdata/series/data/site.yaml +++ b/LunaGen/testdata/series/data/site.yaml @@ -1,36 +1,22 @@ # Global data for the site # ALL templates will have access to these --- -sitename: lunatics -sitetitle: Lunatics! +sitename: series_test +sitetitle: Series Test imgdir: images -theme: lunatics - -stylesheets: - - products - - affiliates +theme: default episode_list_page: render_as: index.html stylesheets: - main - credits - - affiliates - series - - products - - bkg_moon_iridium episode_pages: stylesheets: - main - credits - - affiliates - - products - episode - - sponsors -simple_pages: - - characters - - universe - - sponsorship \ No newline at end of file diff --git a/LunaGen/testdata/series/data/software.yaml b/LunaGen/testdata/series/data/software.yaml deleted file mode 100644 index 6a0b15b..0000000 --- a/LunaGen/testdata/series/data/software.yaml +++ /dev/null @@ -1,139 +0,0 @@ -# Software list ---- -softwarelist: - - name: Aegisub - desc: Subtitle editor - url: http://www.aegisub.org/ - img: aegisub.png - - - name: Ansible - desc: Provisioning automation system - url: https://www.ansible.com/ - img: ansible.png - - - name: Ardour - desc: Digital audio workstation - url: http://ardour.org/ - img: ardour.png - - - name: Audacity - desc: Audio recorder and editor - url: http://web.audacityteam.org/ - img: audacity.png - - - name: Brasero - desc: Optical disk burning utility - url: https://wiki.gnome.org/Apps/Brasero - img: brasero.png - - - name: DVDStyler - desc: DVD mastering tool - url: https://www.dvdstyler.org/en/ - img: dvdstyler.png - - - name: GIMP - desc: Image Manipulation Package - url: http://www.gimp.org/ - img: gimp.png - - - name: Inkscape - desc: 2D vector graphic editing application - url: http://www.inkscape.org/ - img: inkscape.png - - - name: Kdenlive - desc: Non-linear video editor - url: http://kdenlive.org/ - img: kdenlive.png - - - name: Krita - desc: Digital painting application - url: http://www.krita.org/ - img: krita.png - - - name: LibreOffice - desc: Office Suite - url: https://www.libreoffice.org - img: libreoffice.png - - - name: MediaWiki - desc: Collaborative document editing platform - url: http://mediawiki.org/ - img: mediawiki.png - - - name: Mumble - desc: VOIP teleconferencing package - url: https://wiki.mumble.info/ - img: mumble.png - - - name: MyPaint - desc: Digital painting application - url: http://mypaint.org/about/ - img: mypaint.png - - - name: OBS Studio - desc: Screencasting package - url: https://obsproject.com/ - img: obs.png - - - name: Papagayo-NG - desc: Lipsinc animation editor - url: https://morevnaproject.org/papagayo-ng/ - img: papagayo-ng.png - - - name: RapidSVN - desc: Subversion (version control) client - url: https://rapidsvn.org/ - img: rapidsvn.png - - - name: RenderChan - desc: Render management system - url: https://morevnaproject.org/renderchan - img: renderchan.png - - - name: Resource Space - desc: Digital asset management system - url: https://www.resourcespace.com/ - img: resourcespace.png - - - name: Subversion - desc: Version control system - url: https://subversion.apache.org/ - img: subversion.png - - - name: Synfig - desc: 2D animation package - url: http://synfig.org/ - img: synfig.png - - - name: TACTIC - desc: Digital asset and project management system - url: https://southpawtech.com/tactic-open-source/ - img: tactic.png - - - name: Trac - desc: Version control web interface (for Subversion) - url: https://trac.edgewall.org/ - img: trac.png - - - name: Ubuntu Studio - desc: Multimedia distribution of GNU/Linux - url: https://ubuntustudio.org/ - img: ubuntustudio.png - - - name: VLC - desc: Media player - url: https://www.videolan.org/index.html - img: vlc.png - - - name: Vokoscreen - desc: Screencasting software - url: http://linuxecke.volkoh.de/vokoscreen/vokoscreen.html - img: vokoscreen.png - - - name: Wordpress - desc: Content management system - url: https://wordpress.org/ - img: wordpress.png - - \ No newline at end of file diff --git a/LunaGen/testdata/series/data/sponsorship.yaml b/LunaGen/testdata/series/data/sponsorship.yaml deleted file mode 100644 index c194a0e..0000000 --- a/LunaGen/testdata/series/data/sponsorship.yaml +++ /dev/null @@ -1,140 +0,0 @@ ---- -stylesheets: - - sponsorship - -individual: - - name: Donation - amount: "Any" - gumroad_url: "https://gumroad.com/anansispace#ZCNlG" - patreon_url: "https://www.patreon.com/lunatics" - embed_template: paypal_donate_button - img: donations.png - description: > - If you just want to help us out, we can take simple donations of any amount - via our Gumroad store (once only), Patreon Memberships (multiple tiers - per-episode), or by making a one-time donation via PayPal. - - - - name: Patron - amount: "$20.00" - gumroad_url: "https://gumroad.com/anansispace#sumVF" - patreon_url: "https://www.patreon.com/lunatics" - img: patron_sponsor.png - description: > - Patron sponsors' names are listed at the end of the credits. You - may use a pseudonym, collective name, or business name if you like, - as long as there's no offensive language or messages included. - - This is included with Patreon memberships of $20 per episode or more, - or can be acquired for one episode via our Gumroad account. - - - name: Silver Sponsorship - amount: "$50.00" - gumroad_url: "https://gumroad.com/anansispace#sumVF" - patreon_url: "https://www.patreon.com/lunatics" - img: silver_sponsor.png - description: > - Silver sponsors get their names in a prominent listing after the - Gold sponsors. - - - name: Gold Sponsorship - amount: "$100.00" - gumroad_url: "https://gumroad.com/anansispace#sumVF" - patreon_url: "https://www.patreon.com/lunatics" - img: gold_sponsor.png - description: > - Gold sponsors get their names in a prominent listing, after commercial - sponsorships, but before all other individual sponsorships. They will - also be listed in the credits on the download page, but they will not - be linked. You may use a company or collective name or a pseudonym rather - than your legal name, if you like. Please no foul language, slogans, or - political messages here, though. - - - name: Film Freedom Monthly Subscription - amount: "$3+" - patreon_url: "https://www.patreon.com/filmfreedom" - img: filmfreedom_subscription.png - description: > - If you are mainly interested in our technical, development, and documentation - work, and like the predictability of a monthly subscription, please consider - supporting our Film Freedom project on - Patreon. We're starting a podcast to share our experiences with free culture - and free licenses software for production work, as well as sharing video and - written tutorials, research, and hints. - -commercial: - - name: Commercial Sponsorship - amount: "$300.00" - gumroad_url: "https://gumroad.com/anansispace#chuEA" - email_address: sales@anansispaceworks.com - img: commercial_sponsor.png - description: > - Commercial sponsors get a space for a large monochrome logotype graphic - in the credits. They will appear in clustered groups alongside the credits, - rendered in the same color as the credits, and listed after the - "Commercial Logo" sponsorships (but before any of the individual sponsorships). - - These logos will also be included in the credits list on the episode download - page on our website, and you may provide a URL to link the logo to from the - web page. - - - - name: Logo Commercial Sponsorship - amount: "$1000.00" - gumroad_url: "https://gumroad.com/anansispace#chuEA" - email_address: sales@anansispaceworks.com - img: logo_sponsor.png - description: > - Logo sponsors will get a square space beside or ahead of the end credits in the - episode, and a prominently-placed logo in the download page for the episode on our - website. You may provide a URL to link to from the logo for the website. - - The logo art will appear at 480x480 px at our nominal 1920x1080 production frame, - although scaling to online video sites may make it appear smaller, so you should - plan accordingly (use a bold design and large enough font). - - Your logo will typically appear alongside other logo sponsors in the credits. We - limit the number of possible logo spots to a maximum of 12. - - -corporate: - - name: Anorthosite Principal Episode Sponsorship - amount: "$25,000" - email_address: mailto:sales@anansispaceworks.com - img: anorthosite_sponsor.png - description: > - We estimate that it costs a minimum of $25,000 to produce an episode of "Lunatics!", - which of course, is very inexpensive by TV animation standards, but is enabled by our - low overhead, free-software pipeline, and virtual studio approach. - - For this amount, we offer the maximum sponsorship exposure, with an animated logo - flown right at the beginning, prior even to our own "Anansi Spaceworks" production - logo. There will only be one such sponsor accepted for an episode, so the placement - is exclusive. - - If you do not have a prepared logo, we can "fly" a simple logo for you, based - on a simple graphic trademark or corporate logo from you. - - You will also get a prominent placement ahead of credits on our episode download - page, which can be linked to your company's website. - - - - name: Breccia Associate Episode Sponsorship - amount: "$10,000" - email_address: mailto:sales@anansispaceworks.com - img: breccia_sponsor.png - description: > - If a full episode sponsorship is a little too high, we also have an "Associate" - sponsorship for half the price, with only a slightly less prominent placement, after - our initial production logo, but still before the episode starts. - - Obviously, this one is not exclusive, though we won't take more than three associate - sponsorships for an episode, or one with a full-episode sponsorship. - - As with the episode sponsorship, you can provide us with a logo animation, or we - can do a simple animation for you, based on your logo art. - - You will also get a prominent placement ahead of the credits on our episode download - page, which can be linked to your company's website. - - \ No newline at end of file diff --git a/LunaGen/testdata/series/episodes/S1/S1E01.yaml b/LunaGen/testdata/series/episodes/S1/S1E01.yaml index 2aa2856..1e8576e 100644 --- a/LunaGen/testdata/series/episodes/S1/S1E01.yaml +++ b/LunaGen/testdata/series/episodes/S1/S1E01.yaml @@ -1,28 +1,25 @@ # Episode release data # See also series.yaml for documentation of options --- -series: S1 +series: LunaGen Intro episode: 1 mode: production -title: "Prolog: 'No Children in Space'" -poster: s1e01-prolog-600sq.png -status: Finishing and Rendering Sequences. Coming Soon! +title: "Yaml Tutorial | Learn YAML in 18 mins" +poster: s1e01-yaml_tut_yt-nana-600sq.png +status: YAML Intro From YouTube stylesheets: - bkg_earth_limb description: > - In the first episode of this hard-science-fiction fairytale, seven-year-old - Georgiana Lerner becomes the first child in space, while her mother grapples - with press questions about the ethics of raising children in space. Both fly - into orbit aboard a Soyuz launch vehicle from the same launchpad as Yuri - Gagarin took 79 years earlier, on the first leg of their journey to the Moon - to join the first true extra-terrestrial settlement. + In lieu of a custom tutorial for LunaGen, this is a tutorial on YouTube + for YAML syntax, presented by "TechWorld with Nana" I'm also testing + embedding a video from YouTube. videos: - - id: preview - name: Preview - url: https://player.vimeo.com/video/350535112 - btn: s1e01-preview-btn.png + - id: tutorial + name: Tutorial + url: https://www.youtube.com/watch?v=1uFVr15xDGg + btn: s1e01-yaml_tut_yt-nana-60btn.png product: img: om_dvd.png @@ -43,261 +40,22 @@ product: sponsors: - full_sponsor: - - name: Film Freedom Foundation - url: http://www.filmfreedom.org - img: film_freedom_foundation.png + full_sponsor: [] - logo_sponsors: - - name: New Worlds Institute - url: https://earthlightfoundation.org/newworlds/ - img: newworlds-600px.png - - - name: Indian Pirate Party - url: http://pirates.org.in - img: indian_pirates-600px.png - - - name: The Luna Project - url: http://www.lunarcc.org - img: luna_project-600px.png - + logo_sponsors: [] + corp_sponsors: [] gold_sponsors: [] - silver_sponsors: - - Chris Kuhn + silver_sponsors: [] - patron_sponsors: - - Tobias Platen - - Shiva Wolfe - - Filip Krška - - Morevna Project - - Nigel Waite - - Chris Kuhn + patron_sponsors: [] - backer_sponsors: - - Martin Ansdell-Smith - - Jim Bedford - - Mauro Bieg - - Ryan Cartwright - - John Colagioia - - Tom Curl - - Konstantin Dmitriev - - Jonathan Fluck - - Joe Futrelle - - Thomas Gideon - - Gal Goldschmidt - - Franz Gustav - - Janet Hancock - - Simon Harris - - Ian - - Javier - - Norman Jolley - - David Jordan - - Emmanouel Kapernaros - - Kathryn N Kapust - - Tom Kiesel - - Mike Linksvayer - - Raffaele Manzo - - David Maulik - - Donna & John Myers - - John Myers - - Stephen Ormsby - - Derek Pearcy - - Vibha Pingle - - Mike Riley - - Gregor B. Rosenauer - - Timo Rossi - - Karen Sandler - - Hugo Simões - - Elizabeth Small - - Barry Solow - - Junius Stone - - Julie Tribble - - John Tyler - - Hal Tynan - - Stuart Ward - - Robert Wicks - - Shiva Wolfe - - Joseph Yu - - mm2001 + backer_sponsors: [] credits: - main_credits: - - - - Screenplay - - Rosalyn Hunter - - - - Produced & Directed - - Terry Hancock - - - - Character Design - - Daniel Fu + main_credits: [] - cast_credits: - - - - Narrator - - Melodee M. Spevack - - - - Hiromi Lerner - - Karrie Shirou - - - - Georgiana Lerner - - Ariel Hancock - - - - Boy on Train - - Shamil Aminov - - - - Mother on Train - - Nadezhda Dmitrieva - - - - 'Reporter #1 (USA)' - - Terry Hancock - - - - 'Reporter #2 (Canada)' - - Jami Cullen - - - - 'Reporter #3 (Japan)' - - Miki Matsumoto - - - - Sergei Titov - - Sergei Oleinik - - - - Press Director - - Kristina Ponomarenko - - - - Pad Crew Woman - - Kristina Ponomarenko - - - - Pad Crew Man - - Terry Hancock - - - - Launch Controller - - Veronica Kurshinskaya - - animation_credits: - char_models: - - Bela Szabo - - Keneisha Perry - - Andrew Pray - - mech_models: - - Chris Kuhn - - mech_rigs: - - Chris Kuhn - - set_models: - - Sathish Kumar - - Travis Souza - - Johnathon Wilson - - misc_models: - - Terry Hancock - - Andrew Pray - - Keneisha Perry - - Cosmin Planchon - - Vyacheslav Yastrebcev - - Guillaume Côte - - Gorka Mendieta - - char_rigs: - - Keneisha Perry - - char_animation: - - Keneisha Perry - - graphics: - - Timothé Giet - - Paul Bourke - - sound_credits: - sound_design: - - Terry Hancock - - effects_sound_transit: - - Dmitry Urupin - - Fabian Klenk - - Acoustic Space Lab - - Leandros Ntounis - - Sonu Kapoor - - Gustavo Hernandez - - effects_freesound: - - timlaroche - - Benboncan - - TinyJiro - - Razzvio - - stratcat322 - - mansardian - - Kevinflo - - klankbeeld - - LG - - decembered - - ERH - - engreitz - - effects_other: - - Wikipedia - - Alex Lep - - www.ljudo.com - - www.rutgermuller.nl - - Timm Seuss (Chernobyl Journal) - - NASA Videos - - music_credits: - - title: Space Zine (Main Title Mix) - composer: 'Music & Lyrics: Elaine Walker' - artist: Zia - detail: 2006 (Martians), 2012 (TV Size Remix) - license: Relicensed to CC By-SA 4.0 by permission of the artist. - catalog: ziaspace.com - - - title: Nylon - artist: JMF - catalog: "Direction Orient /Jamendo #8924" - license: 2008 JMF, CC By-SA 3.0 - - - title: Restless Heart - artist: Yunus - catalog: "Running Against Time /Jamendo #41619" - license: 2009 Yunus Barbaros Kuru, CC By-SA 2.0/DE - - - title: Once Upon a Time - artist: A.K. 1974 - catalog: "Orchestral Works / Jamendo #55503" - license: 2009 A.K. 1974, CC By-SA 3.0 - - - title: Rise of the Titans/Back to Adventure - artist: Butterfly Tea - catalog: "Adventure Action / Jamendo #36237" - license: 2008 Butterfly Tea, CC By-SA 2.0/FR - - - title: Andoria Main Title - artist: Butterfly Tea - catalog: "Magical and Fantasy Musics / Jamendo #36315" - license: 2008 Butterfly Tea, CC By-SA 2.0/FR - - - title: Orient - artist: Lulo - catalog: "Collage / Jamendo #49715" - license: 2009 Raúl Martín, CC By-SA 3.0 - - - title: Don't Lose Heart, We're Nearly Through - artist: Insignificance - catalog: "One Minute and Two / Jamendo #46114" - license: 2009 Insignificance, CC By-SA 3.0 - - software_credits: - - - Project Website Design - - Elsa Balderrama - - - Renderchan & Afanasy Rendering Workflow - - Konstantin Dmitriev - - Morevna Project - - - KitCAT Prototype Development - - Katrina Niolet - - - LunaGen and Release Site Design - - Terry Hancock - - + cast_credits: [] + \ No newline at end of file diff --git a/LunaGen/testdata/series/episodes/S1/S1E02.yaml b/LunaGen/testdata/series/episodes/S1/S1E02.yaml new file mode 100644 index 0000000..f82be6c --- /dev/null +++ b/LunaGen/testdata/series/episodes/S1/S1E02.yaml @@ -0,0 +1,24 @@ +# Episode release data +# See also series.yaml for documentation of options +--- +series: LunaGen Intro +episode: 1 +mode: production +title: "Jinja2 - 101 - Intro to Jinja2 template building" +poster: s1e02-jinja2_tut-vimeo-Schulman-600sq.png +status: Jinja2 Tutorial from Vimeo +stylesheets: + - bkg_earth_limb + +description: > + In lieu of a custom tutorial for LunaGen, this is a tutorial on Vimeo about + using Jinja2 templates, by Jeremy Schulman. Also testing embedding a video + from Vimeo. + +videos: + - id: tutorial + name: Tutorial + url: https://vimeo.com/120005103 + btn: s1e02-jinja2_tut-vimeo-Schulman-60btn.png + + \ No newline at end of file diff --git a/LunaGen/testdata/series/episodes/S1/S1E03.yaml b/LunaGen/testdata/series/episodes/S1/S1E03.yaml new file mode 100644 index 0000000..72b18b8 --- /dev/null +++ b/LunaGen/testdata/series/episodes/S1/S1E03.yaml @@ -0,0 +1,22 @@ +# Episode release data +# See also series.yaml for documentation of options +--- +series: LunaGen Intro +episode: 1 +mode: production +title: "A line-by-line breakdown of my website's cascading style sheet" +poster: s1e03-css_tut_pt-ChrisWere-600sq.png +status: YAML Intro From YouTube +stylesheets: + - bkg_earth_limb + +description: > + In lieu of a custom tutorial for LunaGen, this is a tutorial on PeerTube + on CSS, by Chris Were Digital, so it's also testing PeerTube embedding. + +videos: + - id: tutorial + name: Tutorial + url: https://peertube.tv/w/jEpwjYwiwEQyWsskzxJVxd + btn: s1e03-css_tut_pt-ChrisWere-60btn.png + \ No newline at end of file diff --git a/LunaGen/testdata/series/episodes/series.yaml b/LunaGen/testdata/series/episodes/series.yaml index d3793a6..bb17bbf 100644 --- a/LunaGen/testdata/series/episodes/series.yaml +++ b/LunaGen/testdata/series/episodes/series.yaml @@ -1,7 +1,7 @@ # Definitions for episode series data --- serieslist: - - name: Series 1 + - name: LunaGen Intro order: 1 directory: S1 modes: @@ -19,190 +19,4 @@ serieslist: labels: ordered template: centered_credits - animation_credits: - order: 1 - heading: "Modeling & Animation" - labels: - - - char_models - - "Character Modeling" - - - mech_models - - "Mechanical Modeling" - - - set_models - - "Set Modeling" - - - misc_models - - "Props & Additional Models" - - - mech_rigs - - "Mechanical Rigging" - - - char_rigs - - "Character Rigging" - - - char_animation - - "Character Animation" - - - textures - - "Textures & Decals" - - - graphics - - "2D Graphics" - template: basic_credits - - cast_credits: - order: 2 - labels: ordered - heading: "Cast" - template: cast_credits - - sound_credits: - order: 3 - heading: "Sound" - labels: - - - sound_design - - "Sound Design" - - - mixing - - "Mixing" - - - foley - - "Foley" - - - effects_sound_transit - - "Effects and Ambience from Sound Transit" - - - effects_freesound - - "Effects from FreeSound.org" - - - effects_other - - "Other Sounds" - - - effects - - "Sound Effects and Ambience" - template: basic_credits - - music_credits: - order: 4 - heading: "Music" - labels: ordered - template: music_credits - - software_credits: - order: 5 - labels: ordered - heading: "Software" - template: centered_credits - - sponsortypes: - full_sponsor: - limit: 1 - page: 1 - excludes: - - half_sponsors - template: full_sponsor - desc: > - Our Episode Sponsor is the primary source of funding for an episode, - donating at least $25,000 for production, which pays for basic production - requirements for one episode (essentially ensures that the episode will get made). - - Only one "Episode Sponsor" is possible on a single episode. - - If your organization would like to be the primary sponsor for an entire - series ("season") of Lunatics!, we would be happy to package up to twelve - episode sponsorships as a single block at $300,000. - - If you would like your company to become a Lunatics! episode sponsor - (or co-sponsor), please contact us at sponsorships@anansispaceworks.com - for legal details and electronic funds transfer information. And thank you - for considering us! - - half_sponsors: - limit: 2 - page: 2 - excludes: - - full_sponsor - template: half_sponsors - desc: > - Episode Co-Sponsors contribute at least half of the funds needed to guarantee - an episode's production, or $10,000. This, in combination with a second - episode co-sponsor, episode sponsor, or matched with a number of smaller - sponsorships can also get us to the $25,000 we need to ensure production. - - There may be up to two Episode Co-Sponsors on an episode. - - logo_sponsors: - limit: 30 - page: 3 - template: logo_sponsors - desc: > - Our Corporate "Logo" Sponsorships are aimed at small business owners with - an interest in supporting the arts and marketing their brand. These sponsors - have contributed at least $1000 towards a episode's production. And of course, - they include the full-color square logos you see in our credits. This is the - largest sponsorship we sell through our Gumroad Store, but if you prefer to - save on transfer costs, you can also contact us at sponsorships@anansispaceworks.com - for EFT (bank transfer) details. - - corp_sponsors: - limit: 100 - page: 9 - template: corp_sponsors - desc: > - Our Corporate Sponsorships are our basic commercial sponsorship level, and - include a monochrome title or brand trademark/logotype for your company. - These sponsors have contributed at least $300 towards an episode's production. - - gold_sponsors: - limit: 5000 - page: 120 - template: gold_sponsors - desc: > - Gold Sponsorships are targeted at individuals who want to fund our project - and receive a much more prominent credit than Patron or Backer credits. They - have contributed at least $100 towards an episode's production. - - silver_sponsors: - limit: 5000 - page: 120 - template: silver_sponsors - desc: > - Silver Sponsorships are targeted at individual who want to fund our project - and recive a more prominent credit than Patron or Backer credits. They have - contributed at least $50 towards an episode's production. - - patron_sponsors: - limit: 10000 - template: patron_sponsors - desc: > - Patrons have contributed at least $20 towards an episode's production, either - through a one-time donation via Gumroad or via a subscription to our Patreon - account. - - backer_sponsors: - limit: 5000 - template: backer_sponsors - desc: > - If not funded through other means, we will arrange a crowdfund to try to - raise the base funding to start on an episode (about $7500). If you are one - of the backers on such a crowdfund (and haven't requested to be anonymous), - you'll find your name listed here. - - - name: Audiodrama - order: 100 # Always listed after the video series - directory: A1 - modes: - teaser: - template: audiodrama_teaser - release: - template: audiodrama_release - credits: - main_credits: - heading: None - labels: ordered - template: centered_credits - cast_credits: - heading: None - labels: ordered - template: cast_credits - sound_credits: - heading: Sound Design & Effects - labels: ordered - template: basic_credits - music_credits: - heading: Music - labels: ordered - template: music_credits - sponsortypes: - backer_sponsors: - template: backer_sponsors - patron_sponsors: - template: patron_sponsors - + \ No newline at end of file diff --git a/LunaGen/testdata/series/imgsrc/DanaeMillerClendon-SilverStripeYAML.png b/LunaGen/testdata/series/imgsrc/DanaeMillerClendon-SilverStripeYAML.png new file mode 100644 index 0000000..64ea1b7 --- /dev/null +++ b/LunaGen/testdata/series/imgsrc/DanaeMillerClendon-SilverStripeYAML.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a4124072fee9e8a69022eb9ebc3c6ed5d98f31d1132bc7e535b89db12c0ad913 +size 299292 diff --git a/LunaGen/testdata/series/imgsrc/JeremySchulman-288sq.webp b/LunaGen/testdata/series/imgsrc/JeremySchulman-288sq.webp new file mode 100644 index 0000000..dc71c55 --- /dev/null +++ b/LunaGen/testdata/series/imgsrc/JeremySchulman-288sq.webp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6a27d7b2d8aab9b2a7e9f1c14c50fa23ae1cb96e17a8b165af2906174ca82261 +size 119917 diff --git a/LunaGen/testdata/series/imgsrc/JeremySchulman-Jinja2-Vimeo.png b/LunaGen/testdata/series/imgsrc/JeremySchulman-Jinja2-Vimeo.png new file mode 100644 index 0000000..8d3169b --- /dev/null +++ b/LunaGen/testdata/series/imgsrc/JeremySchulman-Jinja2-Vimeo.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:480c1371abd17000216cabc05402588468457e4c8a7a87dbdfcef6e691ac6d2a +size 114121 diff --git a/LunaGen/testdata/series/imgsrc/JoeShindelar-YAML_lesson1.png b/LunaGen/testdata/series/imgsrc/JoeShindelar-YAML_lesson1.png new file mode 100644 index 0000000..cf0be23 --- /dev/null +++ b/LunaGen/testdata/series/imgsrc/JoeShindelar-YAML_lesson1.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4fa6ac237c213492a81a79bc3d53639c2c774564852d33e90f11ae006a735753 +size 191307 diff --git a/LunaGen/testdata/series/imgsrc/TechWorld-Nana.jpg b/LunaGen/testdata/series/imgsrc/TechWorld-Nana.jpg new file mode 100644 index 0000000..0a2d570 --- /dev/null +++ b/LunaGen/testdata/series/imgsrc/TechWorld-Nana.jpg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:949718ad08af92a14065d8d2673a231051af9ae5b3f0efb96007d4d9756ed673 +size 109014 diff --git a/LunaGen/testdata/series/imgsrc/TechWorldNana-YAML_intro.png b/LunaGen/testdata/series/imgsrc/TechWorldNana-YAML_intro.png new file mode 100644 index 0000000..f790e5b --- /dev/null +++ b/LunaGen/testdata/series/imgsrc/TechWorldNana-YAML_intro.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:306d4b2d0f751c824b71b0c10082d312c69350ca328bb83742d5d1e2151eb868 +size 178498 diff --git a/LunaGen/testdata/series/imgsrc/TechWorld_Nana_Banner.jpg b/LunaGen/testdata/series/imgsrc/TechWorld_Nana_Banner.jpg new file mode 100644 index 0000000..eb3dcd4 --- /dev/null +++ b/LunaGen/testdata/series/imgsrc/TechWorld_Nana_Banner.jpg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7ccf19603e509a42f31b79b83f05b1aa6d4bce4ebe1516fe25fcb5c5c089eff2 +size 70816 diff --git a/LunaGen/testdata/series/imgsrc/YAML_Tut_Nana_sq.jpg b/LunaGen/testdata/series/imgsrc/YAML_Tut_Nana_sq.jpg new file mode 100644 index 0000000..7091a8d --- /dev/null +++ b/LunaGen/testdata/series/imgsrc/YAML_Tut_Nana_sq.jpg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:88f3dc1c8160527e9d9d2989ec089a573dbbd555c91392614e5154e5097b67fc +size 18432 diff --git a/LunaGen/testdata/series/imgsrc/YAML_Tut_Nana_sq.png b/LunaGen/testdata/series/imgsrc/YAML_Tut_Nana_sq.png new file mode 100644 index 0000000..9e37b5e --- /dev/null +++ b/LunaGen/testdata/series/imgsrc/YAML_Tut_Nana_sq.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a660cf7c340dac16539e3ff55052861bb98612d396f0470748356fa5394be400 +size 95749 diff --git a/LunaGen/testdata/series/imgsrc/YAML_Tut_Nana_thumbnail.jpg b/LunaGen/testdata/series/imgsrc/YAML_Tut_Nana_thumbnail.jpg new file mode 100644 index 0000000..ca74c05 --- /dev/null +++ b/LunaGen/testdata/series/imgsrc/YAML_Tut_Nana_thumbnail.jpg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a390c23aac7ee735b5db5bdde03576466823ef6938430d00122745c5c2d8f8e6 +size 4104 diff --git a/LunaGen/testdata/series/imgsrc/css_ChrisWereDigital-2.png b/LunaGen/testdata/series/imgsrc/css_ChrisWereDigital-2.png new file mode 100644 index 0000000..01c641c --- /dev/null +++ b/LunaGen/testdata/series/imgsrc/css_ChrisWereDigital-2.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3a461d55f9e8c3ffaa6f61df79029d7c42b8d175aae3c8b2515d7ea11efe6746 +size 348209 diff --git a/LunaGen/testdata/series/imgsrc/css_intro-YT-EJMedia.png b/LunaGen/testdata/series/imgsrc/css_intro-YT-EJMedia.png new file mode 100644 index 0000000..82d17d2 --- /dev/null +++ b/LunaGen/testdata/series/imgsrc/css_intro-YT-EJMedia.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4f99f1678367633aacacea5d44280b40c63770af955e9b5becdc53e26b722c03 +size 1235945 diff --git a/LunaGen/testdata/series/imgsrc/css_linebyline-ChrisWereDigital.png b/LunaGen/testdata/series/imgsrc/css_linebyline-ChrisWereDigital.png new file mode 100644 index 0000000..28adfaf --- /dev/null +++ b/LunaGen/testdata/series/imgsrc/css_linebyline-ChrisWereDigital.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ffa91f15cf3dfecdca0cff01b795509a4ebb548477c6b45d27a9fcab3501cd0e +size 739161 diff --git a/LunaGen/testdata/series/skeleton/images/affiliates/ardour.png b/LunaGen/testdata/series/skeleton/images/affiliates/ardour.png deleted file mode 100644 index af0c311..0000000 --- a/LunaGen/testdata/series/skeleton/images/affiliates/ardour.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:acad3a471b4f7ecd54d08b70b9067cdfdad6b4e2c3d7935c9126ae6af4951eb9 -size 10011 diff --git a/LunaGen/testdata/series/skeleton/images/affiliates/audacity.png b/LunaGen/testdata/series/skeleton/images/affiliates/audacity.png deleted file mode 100644 index 3cfb72a..0000000 --- a/LunaGen/testdata/series/skeleton/images/affiliates/audacity.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:8d907b18b066bafac733faacca1907e876e19632ed4ecf7a2aaef78c0d753cbf -size 17672 diff --git a/LunaGen/testdata/series/skeleton/images/affiliates/blender.png b/LunaGen/testdata/series/skeleton/images/affiliates/blender.png deleted file mode 100644 index d4f8e6a..0000000 --- a/LunaGen/testdata/series/skeleton/images/affiliates/blender.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:ead02d7f758ce90360684ed256faf4cbcfcbee7def99d81c3fb4d5c639115594 -size 8107 diff --git a/LunaGen/testdata/series/skeleton/images/affiliates/blendswap.png b/LunaGen/testdata/series/skeleton/images/affiliates/blendswap.png deleted file mode 100644 index 532d3e3..0000000 --- a/LunaGen/testdata/series/skeleton/images/affiliates/blendswap.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:7d77eff6321ea212336b0e50ffbc9300f2269e037a935a5c8616dd7682739311 -size 10102 diff --git a/LunaGen/testdata/series/skeleton/images/affiliates/creativecommons.png b/LunaGen/testdata/series/skeleton/images/affiliates/creativecommons.png deleted file mode 100644 index 7d221bf..0000000 --- a/LunaGen/testdata/series/skeleton/images/affiliates/creativecommons.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:4589fca5d94b710840a0990f8ab95ddee4c180f614b058b775f23479ab453970 -size 14820 diff --git a/LunaGen/testdata/series/skeleton/images/affiliates/debian.png b/LunaGen/testdata/series/skeleton/images/affiliates/debian.png deleted file mode 100644 index 7c4789e..0000000 --- a/LunaGen/testdata/series/skeleton/images/affiliates/debian.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:b7aa2b29f385d3a03cd93b4caa618098ea3b7269a2160163f3ace710b40e97f3 -size 26917 diff --git a/LunaGen/testdata/series/skeleton/images/affiliates/ethiccinema.png b/LunaGen/testdata/series/skeleton/images/affiliates/ethiccinema.png deleted file mode 100644 index 031e7eb..0000000 --- a/LunaGen/testdata/series/skeleton/images/affiliates/ethiccinema.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:07ad4c3862ec8cc02565bd63fc21100977d5f281c9a2f7e00a39322a0e1335bd -size 57872 diff --git a/LunaGen/testdata/series/skeleton/images/affiliates/freesoftwarefoundation.png b/LunaGen/testdata/series/skeleton/images/affiliates/freesoftwarefoundation.png deleted file mode 100644 index 7fd6d9f..0000000 --- a/LunaGen/testdata/series/skeleton/images/affiliates/freesoftwarefoundation.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:49cf8c31f48fa918a9aeb9f07125147a298b370fdcf456733a0e30c563c2cc13 -size 19529 diff --git a/LunaGen/testdata/series/skeleton/images/affiliates/freesound.png b/LunaGen/testdata/series/skeleton/images/affiliates/freesound.png deleted file mode 100644 index 1f9a4f1..0000000 --- a/LunaGen/testdata/series/skeleton/images/affiliates/freesound.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:0f0a27d7e09460a54a20ca3c80718676c67c3c37db48f8d8c16c560d27ecc804 -size 14307 diff --git a/LunaGen/testdata/series/skeleton/images/affiliates/gimp.png b/LunaGen/testdata/series/skeleton/images/affiliates/gimp.png deleted file mode 100644 index 20a8542..0000000 --- a/LunaGen/testdata/series/skeleton/images/affiliates/gimp.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:4a0f418cfbb358f6580ab5ebbc35e0c6488d27d8d902d8cb36412e52f571c859 -size 50690 diff --git a/LunaGen/testdata/series/skeleton/images/affiliates/inkscape.png b/LunaGen/testdata/series/skeleton/images/affiliates/inkscape.png deleted file mode 100644 index 2c1e74f..0000000 --- a/LunaGen/testdata/series/skeleton/images/affiliates/inkscape.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:d3a93f23151197fbb936c734c7873519f135ec96dbe7833694c5803b2abc0c78 -size 21752 diff --git a/LunaGen/testdata/series/skeleton/images/affiliates/internet_archive.png b/LunaGen/testdata/series/skeleton/images/affiliates/internet_archive.png deleted file mode 100644 index 806ff4b..0000000 --- a/LunaGen/testdata/series/skeleton/images/affiliates/internet_archive.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:1a17390889904d1f70c5f454d74ca4296bb527ec80d978772bd9c1d5683b557f -size 12643 diff --git a/LunaGen/testdata/series/skeleton/images/affiliates/jamendo.png b/LunaGen/testdata/series/skeleton/images/affiliates/jamendo.png deleted file mode 100644 index 65a05fd..0000000 --- a/LunaGen/testdata/series/skeleton/images/affiliates/jamendo.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:4529ef3f842686113f542e2fb72561de6d82e7d2e743c054887150cc1ac48d3a -size 10335 diff --git a/LunaGen/testdata/series/skeleton/images/affiliates/kdenlive.png b/LunaGen/testdata/series/skeleton/images/affiliates/kdenlive.png deleted file mode 100644 index e6cd5ab..0000000 --- a/LunaGen/testdata/series/skeleton/images/affiliates/kdenlive.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:27f157a2b980fe007848ff81cefe8e347e7c046d4dbf451cd997f0f725206511 -size 9361 diff --git a/LunaGen/testdata/series/skeleton/images/affiliates/krita.png b/LunaGen/testdata/series/skeleton/images/affiliates/krita.png deleted file mode 100644 index 1b9cb5c..0000000 --- a/LunaGen/testdata/series/skeleton/images/affiliates/krita.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:97ff6504822aeb3ed8e7e987798b0f2aa13db66b52e605a324931d264e7d6f08 -size 11066 diff --git a/LunaGen/testdata/series/skeleton/images/affiliates/lunatics.png b/LunaGen/testdata/series/skeleton/images/affiliates/lunatics.png deleted file mode 100644 index 3cb4658..0000000 --- a/LunaGen/testdata/series/skeleton/images/affiliates/lunatics.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:8b5c45ea3daa0b757ae3f0050f923bbd7b0534c42ef4d3c1af19e5ff53f516dc -size 34889 diff --git a/LunaGen/testdata/series/skeleton/images/affiliates/mastodon.png b/LunaGen/testdata/series/skeleton/images/affiliates/mastodon.png deleted file mode 100644 index e26a2d9..0000000 --- a/LunaGen/testdata/series/skeleton/images/affiliates/mastodon.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:8dbd6edc821fb8e50484922d29a8eb230e0ed64c9ca6ab90807bbc99de885e74 -size 16269 diff --git a/LunaGen/testdata/series/skeleton/images/affiliates/morevnaproject.png b/LunaGen/testdata/series/skeleton/images/affiliates/morevnaproject.png deleted file mode 100644 index 7f738df..0000000 --- a/LunaGen/testdata/series/skeleton/images/affiliates/morevnaproject.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:c5128a5aecb324af95283cb5573ac9b039176c6a54d1db23d63b6687e616714b -size 13212 diff --git a/LunaGen/testdata/series/skeleton/images/affiliates/musopen.png b/LunaGen/testdata/series/skeleton/images/affiliates/musopen.png deleted file mode 100644 index 32dc53d..0000000 --- a/LunaGen/testdata/series/skeleton/images/affiliates/musopen.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:f8acc94a0956e94ca10c0da6ac6df7ba499a9c4386812316f7287534cd82662d -size 7116 diff --git a/LunaGen/testdata/series/skeleton/images/affiliates/olivevideoeditor.png b/LunaGen/testdata/series/skeleton/images/affiliates/olivevideoeditor.png deleted file mode 100644 index 5c4019e..0000000 --- a/LunaGen/testdata/series/skeleton/images/affiliates/olivevideoeditor.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:3fb3086ea948d27964c1bc4be629939c0378b97925c1f08764a0aa1cd01aec6d -size 14639 diff --git a/LunaGen/testdata/series/skeleton/images/affiliates/publicdomainfiles.png b/LunaGen/testdata/series/skeleton/images/affiliates/publicdomainfiles.png deleted file mode 100644 index 1f8295b..0000000 --- a/LunaGen/testdata/series/skeleton/images/affiliates/publicdomainfiles.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:63afb601894c7907417fbb08f3e981ad2f72552c3e2522477a4573938dc9d5dd -size 9015 diff --git a/LunaGen/testdata/series/skeleton/images/affiliates/publicknowledge.png b/LunaGen/testdata/series/skeleton/images/affiliates/publicknowledge.png deleted file mode 100644 index 7c68a55..0000000 --- a/LunaGen/testdata/series/skeleton/images/affiliates/publicknowledge.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:ada826227b89ec464a624094b3d631a565c872b15efd611e4efdb44b2d23aa01 -size 7770 diff --git a/LunaGen/testdata/series/skeleton/images/affiliates/questioncopyright.png b/LunaGen/testdata/series/skeleton/images/affiliates/questioncopyright.png deleted file mode 100644 index af2bec3..0000000 --- a/LunaGen/testdata/series/skeleton/images/affiliates/questioncopyright.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:638d2c48af459519fd259e33b03849f9b6f4c1ad06d83eee49773eac074ed47a -size 26131 diff --git a/LunaGen/testdata/series/skeleton/images/affiliates/sfconservancy.png b/LunaGen/testdata/series/skeleton/images/affiliates/sfconservancy.png deleted file mode 100644 index b9b5f1c..0000000 --- a/LunaGen/testdata/series/skeleton/images/affiliates/sfconservancy.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:c5dcbfada6e104a7c37df5b8bc41b54fcdbdfa1c12a7b777928fb70a54b5d6a3 -size 18292 diff --git a/LunaGen/testdata/series/skeleton/images/affiliates/ubuntu_studio.png b/LunaGen/testdata/series/skeleton/images/affiliates/ubuntu_studio.png deleted file mode 100644 index 0e04b60..0000000 --- a/LunaGen/testdata/series/skeleton/images/affiliates/ubuntu_studio.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:37b2ef5c6f5fdec7fae34a58c0d2a8c0f0d036e28655cc195dce41694dd3ad43 -size 11577 diff --git a/LunaGen/testdata/series/skeleton/images/affiliates/urchn.png b/LunaGen/testdata/series/skeleton/images/affiliates/urchn.png deleted file mode 100644 index 35522ea..0000000 --- a/LunaGen/testdata/series/skeleton/images/affiliates/urchn.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:afd86d038b7d237a31a488c7811f75ead746065364b76f9ae9dcabd140a86d07 -size 6868 diff --git a/LunaGen/testdata/series/skeleton/images/sponsors/corp_sponsor_medallion.png b/LunaGen/testdata/series/skeleton/images/sponsors/corp_sponsor_medallion.png deleted file mode 100644 index 37c187f..0000000 --- a/LunaGen/testdata/series/skeleton/images/sponsors/corp_sponsor_medallion.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:010a8f2d2c0d04546ee073bcdea467fc6a27dc74c8df79640f849a1919f9a50c -size 33624 diff --git a/LunaGen/testdata/series/skeleton/images/sponsors/film_freedom_foundation.png b/LunaGen/testdata/series/skeleton/images/sponsors/film_freedom_foundation.png deleted file mode 100644 index 129f982..0000000 --- a/LunaGen/testdata/series/skeleton/images/sponsors/film_freedom_foundation.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:c8a5d1e8184c6b6e92575e61e7ecec7c0cf64020ffd6bb6b31aa1d5386858805 -size 81940 diff --git a/LunaGen/testdata/series/skeleton/images/sponsors/full_sponsor_medallion.png b/LunaGen/testdata/series/skeleton/images/sponsors/full_sponsor_medallion.png deleted file mode 100644 index 6f156c0..0000000 --- a/LunaGen/testdata/series/skeleton/images/sponsors/full_sponsor_medallion.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:8ce20acaaab7ff94f86cbc35fd7ff2e04b00f5596ab83a4d762e773cb94ab78c -size 48862 diff --git a/LunaGen/testdata/series/skeleton/images/sponsors/gold_sponsor_medallion.png b/LunaGen/testdata/series/skeleton/images/sponsors/gold_sponsor_medallion.png deleted file mode 100644 index 471f37f..0000000 --- a/LunaGen/testdata/series/skeleton/images/sponsors/gold_sponsor_medallion.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:e2c2aa2cf6ab021c3a382f472a1b0ef1ebdc26cb6ff068da1933e25a6009fecf -size 34236 diff --git a/LunaGen/testdata/series/skeleton/images/sponsors/half_sponsor_medallion.png b/LunaGen/testdata/series/skeleton/images/sponsors/half_sponsor_medallion.png deleted file mode 100644 index 0c70044..0000000 --- a/LunaGen/testdata/series/skeleton/images/sponsors/half_sponsor_medallion.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:f70fc82d624f81fc4cf0c61ce038e165f2ab30761c5e20bb5afa6f48f5dacf91 -size 35941 diff --git a/LunaGen/testdata/series/skeleton/images/sponsors/indian_pirates-600px.png b/LunaGen/testdata/series/skeleton/images/sponsors/indian_pirates-600px.png deleted file mode 100644 index 015490e..0000000 --- a/LunaGen/testdata/series/skeleton/images/sponsors/indian_pirates-600px.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:1aea18c0c17625b3b586c725723345adc587214d59852cfe8b2bcdc90d7aa4df -size 47981 diff --git a/LunaGen/testdata/series/skeleton/images/sponsors/international_space_foundation.png b/LunaGen/testdata/series/skeleton/images/sponsors/international_space_foundation.png deleted file mode 100644 index f47f4ac..0000000 --- a/LunaGen/testdata/series/skeleton/images/sponsors/international_space_foundation.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:56935111714da0aa5716a0eae189636d8494c9032d3f33bae662b030869d1d67 -size 22059 diff --git a/LunaGen/testdata/series/skeleton/images/sponsors/logo_sponsor_medallion.png b/LunaGen/testdata/series/skeleton/images/sponsors/logo_sponsor_medallion.png deleted file mode 100644 index be4f7de..0000000 --- a/LunaGen/testdata/series/skeleton/images/sponsors/logo_sponsor_medallion.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:67946d926b5cc04e04119ada323201ddb5b5db801698c1e2d95e85fb206be42e -size 36799 diff --git a/LunaGen/testdata/series/skeleton/images/sponsors/luna_project-600px.png b/LunaGen/testdata/series/skeleton/images/sponsors/luna_project-600px.png deleted file mode 100644 index 6a51fc0..0000000 --- a/LunaGen/testdata/series/skeleton/images/sponsors/luna_project-600px.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:f87737c0c3fe987c64dbff93e5cfbed2c914ee23c6f2298d3f1be2d004a7a689 -size 35059 diff --git a/LunaGen/testdata/series/skeleton/images/sponsors/mock_corp_logo_lunatics.png b/LunaGen/testdata/series/skeleton/images/sponsors/mock_corp_logo_lunatics.png deleted file mode 100644 index 74aca1e..0000000 --- a/LunaGen/testdata/series/skeleton/images/sponsors/mock_corp_logo_lunatics.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:0eeb6a2b44a8b4d8d8ae8ebae18b64d3490753117b3cbcba9561d91d3bc7d008 -size 69999 diff --git a/LunaGen/testdata/series/skeleton/images/sponsors/newworlds-600px.png b/LunaGen/testdata/series/skeleton/images/sponsors/newworlds-600px.png deleted file mode 100644 index 5d6d104..0000000 --- a/LunaGen/testdata/series/skeleton/images/sponsors/newworlds-600px.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:432ffd4b4eef58d319e5732070ae87bfe4216697a5f59a48a75ddcd8821a8bdb -size 37302 diff --git a/LunaGen/testdata/series/skeleton/images/sponsors/silver_sponsor_medallion.png b/LunaGen/testdata/series/skeleton/images/sponsors/silver_sponsor_medallion.png deleted file mode 100644 index a251ea3..0000000 --- a/LunaGen/testdata/series/skeleton/images/sponsors/silver_sponsor_medallion.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:baadbbf5fa5b1511e1234626d4cf2da66583c3d2e2cc07309f6a44eaa9a792b0 -size 34247 diff --git a/LunaGen/testdata/series/skeleton/images/vidposters/blank-600sq.png b/LunaGen/testdata/series/skeleton/images/vidposters/blank-600sq.png deleted file mode 100644 index 24894f6..0000000 --- a/LunaGen/testdata/series/skeleton/images/vidposters/blank-600sq.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:dbaec58af5e8857d95ca64a49238ddcda8c34390aa782c8346a8ecea6fda5a12 -size 26533 diff --git a/LunaGen/testdata/series/skeleton/images/vidposters/ce-explainer-btn.png b/LunaGen/testdata/series/skeleton/images/vidposters/ce-explainer-btn.png deleted file mode 100644 index 2634a25..0000000 --- a/LunaGen/testdata/series/skeleton/images/vidposters/ce-explainer-btn.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:6ff29640b575ef7083e09852ce22fa5fad8b3f91f1fbec657664882593284c4c -size 4361 diff --git a/LunaGen/testdata/series/skeleton/images/vidposters/ce-explainer.png b/LunaGen/testdata/series/skeleton/images/vidposters/ce-explainer.png deleted file mode 100644 index 43b47eb..0000000 --- a/LunaGen/testdata/series/skeleton/images/vidposters/ce-explainer.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:bcb2cdadb06acf232a4a90f4e4855894cb20568b3b51943b9b54b4ec5ac2b025 -size 101590 diff --git a/LunaGen/testdata/series/skeleton/images/vidposters/om_dvd_intro-btn.png b/LunaGen/testdata/series/skeleton/images/vidposters/om_dvd_intro-btn.png deleted file mode 100644 index e2add63..0000000 --- a/LunaGen/testdata/series/skeleton/images/vidposters/om_dvd_intro-btn.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:af2ce87f853a90ab29a4860f8bc5d7f1841ed64389eb4c23ee3c67efbd0862e6 -size 1300826 diff --git a/LunaGen/testdata/series/skeleton/images/vidposters/s1e01-dvd-btn.png b/LunaGen/testdata/series/skeleton/images/vidposters/s1e01-dvd-btn.png deleted file mode 100644 index 41833a1..0000000 --- a/LunaGen/testdata/series/skeleton/images/vidposters/s1e01-dvd-btn.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:a6a043fa924774e5702d9e212c0e973a9976f7f58102840442840ab4872d595c -size 27240 diff --git a/LunaGen/testdata/series/skeleton/images/vidposters/s1e01-episode-btn.png b/LunaGen/testdata/series/skeleton/images/vidposters/s1e01-episode-btn.png deleted file mode 100644 index 37c26f7..0000000 --- a/LunaGen/testdata/series/skeleton/images/vidposters/s1e01-episode-btn.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:41b1e04c0763867a6afe2347cc66b7e21613fad854440fc107c7b79cc75d643a -size 33765 diff --git a/LunaGen/testdata/series/skeleton/images/vidposters/s1e01-preview-btn.png b/LunaGen/testdata/series/skeleton/images/vidposters/s1e01-preview-btn.png deleted file mode 100644 index 91dde1f..0000000 --- a/LunaGen/testdata/series/skeleton/images/vidposters/s1e01-preview-btn.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:ccfd8766a76b932b03cb1d2eea84bdf2d2f3ae8834c1f6e76b0f3f5adbb7642e -size 34840 diff --git a/LunaGen/testdata/series/skeleton/images/vidposters/s1e01-prolog-600sq.png b/LunaGen/testdata/series/skeleton/images/vidposters/s1e01-prolog-600sq.png deleted file mode 100644 index f4351a4..0000000 --- a/LunaGen/testdata/series/skeleton/images/vidposters/s1e01-prolog-600sq.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:9dc13e96b31e1468bd9da0735e519100a16e003444df469c59f49ea9b71f285c -size 517926 diff --git a/LunaGen/testdata/series/skeleton/images/vidposters/s1e01-prolog-episode-btn.png b/LunaGen/testdata/series/skeleton/images/vidposters/s1e01-prolog-episode-btn.png deleted file mode 100644 index b1ba213..0000000 --- a/LunaGen/testdata/series/skeleton/images/vidposters/s1e01-prolog-episode-btn.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:d772522c83a99613e68ff5f7c5bcca166f2b408435b24041e73f1e270f52a3a3 -size 7981 diff --git a/LunaGen/testdata/series/skeleton/images/vidposters/s1e01-prolog-episode-btn2.png b/LunaGen/testdata/series/skeleton/images/vidposters/s1e01-prolog-episode-btn2.png deleted file mode 100644 index e546015..0000000 --- a/LunaGen/testdata/series/skeleton/images/vidposters/s1e01-prolog-episode-btn2.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:65a25fa29591aee96e964e7b04e18c56e81fd8288a85d26dd91cdbfb32c1cea3 -size 34722 diff --git a/LunaGen/testdata/series/skeleton/images/vidposters/s1e01-prolog-episode.png b/LunaGen/testdata/series/skeleton/images/vidposters/s1e01-prolog-episode.png deleted file mode 100644 index fcf4f9e..0000000 --- a/LunaGen/testdata/series/skeleton/images/vidposters/s1e01-prolog-episode.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:b57699195bf3d294d975689a9ee4183daca12e624477ee46dcfa358b8da3a28f -size 552314 diff --git a/LunaGen/testdata/series/skeleton/images/vidposters/s1e01-prolog-preview-btn.png b/LunaGen/testdata/series/skeleton/images/vidposters/s1e01-prolog-preview-btn.png deleted file mode 100644 index 66d8cd8..0000000 --- a/LunaGen/testdata/series/skeleton/images/vidposters/s1e01-prolog-preview-btn.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:6bc17a0eadf216d4d4d56a242ad347224717e5911bbd14474bb39568349c5d9c -size 8339 diff --git a/LunaGen/testdata/series/skeleton/images/vidposters/s1e01-prolog-preview.png b/LunaGen/testdata/series/skeleton/images/vidposters/s1e01-prolog-preview.png deleted file mode 100644 index 9a8ca8b..0000000 --- a/LunaGen/testdata/series/skeleton/images/vidposters/s1e01-prolog-preview.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:80d5cdcf0d6615466a45df93bcc11ff47bd9c4ac2460e61d07ab7dad1a760083 -size 551663 diff --git a/LunaGen/testdata/series/skeleton/images/vidposters/s1e01-yaml_tut_yt-nana-600sq.png b/LunaGen/testdata/series/skeleton/images/vidposters/s1e01-yaml_tut_yt-nana-600sq.png new file mode 100644 index 0000000..67fe576 --- /dev/null +++ b/LunaGen/testdata/series/skeleton/images/vidposters/s1e01-yaml_tut_yt-nana-600sq.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2fbeea34870c638b2ef8e79e2fcd26ce87ca6fab67b863e0896d55d194ecdd05 +size 196807 diff --git a/LunaGen/testdata/series/skeleton/images/vidposters/s1e01-yaml_tut_yt-nana-60btn.png b/LunaGen/testdata/series/skeleton/images/vidposters/s1e01-yaml_tut_yt-nana-60btn.png new file mode 100644 index 0000000..55fbb84 --- /dev/null +++ b/LunaGen/testdata/series/skeleton/images/vidposters/s1e01-yaml_tut_yt-nana-60btn.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3a6c207523d3c898449a509c42b4a0ffcbae8876580285c9614594c7dd0c9e02 +size 17884 diff --git a/LunaGen/testdata/series/skeleton/images/vidposters/s1e01-yaml_tut_yt-nana-800x450.png b/LunaGen/testdata/series/skeleton/images/vidposters/s1e01-yaml_tut_yt-nana-800x450.png new file mode 100644 index 0000000..7d8b272 --- /dev/null +++ b/LunaGen/testdata/series/skeleton/images/vidposters/s1e01-yaml_tut_yt-nana-800x450.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:61c697ee9ce325ebd1c5d30c105946fd6d343a5858b37623727ef86d9cd9cc19 +size 162960 diff --git a/LunaGen/testdata/series/skeleton/images/vidposters/s1e02-from_earth-600sq.png b/LunaGen/testdata/series/skeleton/images/vidposters/s1e02-from_earth-600sq.png deleted file mode 100644 index ad2aa53..0000000 --- a/LunaGen/testdata/series/skeleton/images/vidposters/s1e02-from_earth-600sq.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:f542e52335f67655395862d2cc4cc0ed5905eda73de64aefc4937f01bcaeb817 -size 294189 diff --git a/LunaGen/testdata/series/skeleton/images/vidposters/s1e02-jinja2_tut-vimeo-Schulman-600sq.png b/LunaGen/testdata/series/skeleton/images/vidposters/s1e02-jinja2_tut-vimeo-Schulman-600sq.png new file mode 100644 index 0000000..e4ab62e --- /dev/null +++ b/LunaGen/testdata/series/skeleton/images/vidposters/s1e02-jinja2_tut-vimeo-Schulman-600sq.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a0cafd96c2690f6cfdc93fe06733c579ed17c609c23d8580b1844edd8e9327a2 +size 168380 diff --git a/LunaGen/testdata/series/skeleton/images/vidposters/s1e02-jinja2_tut-vimeo-Schulman-60btn.png b/LunaGen/testdata/series/skeleton/images/vidposters/s1e02-jinja2_tut-vimeo-Schulman-60btn.png new file mode 100644 index 0000000..4556acc --- /dev/null +++ b/LunaGen/testdata/series/skeleton/images/vidposters/s1e02-jinja2_tut-vimeo-Schulman-60btn.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c53e3e9ae902c04f5b3182a7098030b65a945f153afd98aa0e8983d20b4fd0fa +size 11045 diff --git a/LunaGen/testdata/series/skeleton/images/vidposters/s1e02-jinja2_tut-vimeo-Schulman-800x450.png b/LunaGen/testdata/series/skeleton/images/vidposters/s1e02-jinja2_tut-vimeo-Schulman-800x450.png new file mode 100644 index 0000000..29db95b --- /dev/null +++ b/LunaGen/testdata/series/skeleton/images/vidposters/s1e02-jinja2_tut-vimeo-Schulman-800x450.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a64358886c7387ca1c7ffb946c4f73e1e5bc7a12f449b445c717c20b7506a0af +size 108956 diff --git a/LunaGen/testdata/series/skeleton/images/vidposters/s1e03-css_tut_pt-ChrisWere-600sq.png b/LunaGen/testdata/series/skeleton/images/vidposters/s1e03-css_tut_pt-ChrisWere-600sq.png new file mode 100644 index 0000000..b3d9105 --- /dev/null +++ b/LunaGen/testdata/series/skeleton/images/vidposters/s1e03-css_tut_pt-ChrisWere-600sq.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:fc66cc7396edf4a636bc4e99511c1992e091ddfd1fe4a78da6f0c232fbf0b549 +size 213839 diff --git a/LunaGen/testdata/series/skeleton/images/vidposters/s1e03-css_tut_pt-ChrisWere-60btn.png b/LunaGen/testdata/series/skeleton/images/vidposters/s1e03-css_tut_pt-ChrisWere-60btn.png new file mode 100644 index 0000000..ceba400 --- /dev/null +++ b/LunaGen/testdata/series/skeleton/images/vidposters/s1e03-css_tut_pt-ChrisWere-60btn.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:75796846bb1681472acf21961e8cce7cff5447f540d3ba473e94baa8efe46894 +size 16224 diff --git a/LunaGen/testdata/series/skeleton/images/vidposters/s1e03-css_tut_pt-ChrisWere-800x450.png b/LunaGen/testdata/series/skeleton/images/vidposters/s1e03-css_tut_pt-ChrisWere-800x450.png new file mode 100644 index 0000000..15eabb7 --- /dev/null +++ b/LunaGen/testdata/series/skeleton/images/vidposters/s1e03-css_tut_pt-ChrisWere-800x450.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6d8890f5b5263cd8632a38f2021c0c9d00e0b426e582a25959bc31619c323d15 +size 146963 diff --git a/LunaGen/testdata/series/skeleton/images/vidposters/s1e03-to_moon-600sq.png b/LunaGen/testdata/series/skeleton/images/vidposters/s1e03-to_moon-600sq.png deleted file mode 100644 index 49909a6..0000000 --- a/LunaGen/testdata/series/skeleton/images/vidposters/s1e03-to_moon-600sq.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:1628e322b49dec03c0882b72592a5c029e1a602d3016f4fd916bbb1bf6a3a129 -size 353734 diff --git a/LunaGen/testdata/series/skeleton/images/vidposters/thanks-btn.png b/LunaGen/testdata/series/skeleton/images/vidposters/thanks-btn.png deleted file mode 100644 index c9ef52f..0000000 --- a/LunaGen/testdata/series/skeleton/images/vidposters/thanks-btn.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:1e6cfec16bca4676ede5d838cf6bd5bba9fda728db6de319177f40732d470f27 -size 30775 diff --git a/LunaGen/testdata/series/skeleton/images/vidposters/tr_thanks-btn.png b/LunaGen/testdata/series/skeleton/images/vidposters/tr_thanks-btn.png deleted file mode 100644 index beda5cf..0000000 --- a/LunaGen/testdata/series/skeleton/images/vidposters/tr_thanks-btn.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:de02257fd75706ba551dcb852316e1a1c5fb4060a9cb3915c4e2a93d9f79bbb4 -size 31448 diff --git a/LunaGen/tests/test_lunagen_cli.py b/LunaGen/tests/test_lunagen_cli.py index 7b83e7e..68a069b 100644 --- a/LunaGen/tests/test_lunagen_cli.py +++ b/LunaGen/tests/test_lunagen_cli.py @@ -98,7 +98,17 @@ class Test_Lunagen_CLI_Function(unittest.TestCase, LooksLikeHelper, HTMLTidyHelp self.assertTrue(os.path.exists(index_path)) self.assertHTMLTidy(index_path) - self.assertFileMatches(index_path, 'products_index.html') + self.assertFileMatches(index_path, 'products_index.html') - + def test_series_example(self): + subprocess.run(('lunagen', + 'series', 'build/series_site', '--verbose', '--seed=0'), + env={'PATH':self.cwd}) + + index_path = os.path.join(os.path.dirname(__file__), '..', 'testdata', + 'build', 'series_site', 'index_html') + + self.assertTrue(os.path.exists(index_path)) + self.assertHTMLTidy(index_path) + self.assertFileMatches(index_path, 'series_index.html')