From 04015b14cb983715299418fdc847ecd96ffb5b82 Mon Sep 17 00:00:00 2001 From: Thorsten Fleck Date: Sun, 19 Aug 2018 20:31:25 +0200 Subject: [PATCH 1/3] Froscon2018: Lizenz angepasst CC-BY im Outro --- froscon2018/artwork/outro.svg | 37 ++++++----------------------------- 1 file changed, 6 insertions(+), 31 deletions(-) diff --git a/froscon2018/artwork/outro.svg b/froscon2018/artwork/outro.svg index fb19930..9b581e7 100644 --- a/froscon2018/artwork/outro.svg +++ b/froscon2018/artwork/outro.svg @@ -437,57 +437,32 @@ - - - - - From 15003d24799fbf8cd581df017549715f48a2e2f6 Mon Sep 17 00:00:00 2001 From: derchris Date: Sun, 19 Aug 2018 23:49:05 +0200 Subject: [PATCH 2/3] add windows support, bugfixes --- make-adobe-after-effects.py | 83 ++++++++++++++++++++++++++---------- voc_ae/intro.aep | Bin 154743 -> 155847 bytes voc_ae/intro.jsx | 1 + 3 files changed, 62 insertions(+), 22 deletions(-) diff --git a/make-adobe-after-effects.py b/make-adobe-after-effects.py index fa697da..7d7eb77 100755 --- a/make-adobe-after-effects.py +++ b/make-adobe-after-effects.py @@ -9,6 +9,7 @@ import time import sys import os import re +import platform from xml.sax.saxutils import escape as xmlescape from shutil import copyfile @@ -54,6 +55,10 @@ parser.add_argument('--force', action="store_true", default=False, help=''' Force render if file exists. ''') +parser.add_argument('--no-finalize', dest='nof', action="store_true", default=False, help=''' + Skip finalize job. + ''') + parser.add_argument('--outro', action="store_true", default=False, help=''' Render outro from the outro.aep file in the project folder. ''') @@ -116,15 +121,12 @@ else: def describe_event(event): return "#{}: {}".format(event['id'], event['title']) - def event_print(event, message): print("{} – {}".format(describe_event(event), message)) - tempdir = tempfile.TemporaryDirectory() print('working in '+tempdir.name) - def fmt_command(command, **kwargs): args = {} for key, value in kwargs.items(): @@ -133,6 +135,16 @@ def fmt_command(command, **kwargs): command = command.format(**args) return shlex.split(command) +def run_once(command, **kwargs): + DETACHED_PROCESS = 0x00000008 + return subprocess.Popen( + fmt_command(command, **kwargs), + shell=False, + stdin=None, + stdout=None, + stderr=None, + close_fds=True, + creationflags=DETACHED_PROCESS) def run(command, **kwargs): return subprocess.check_call( @@ -140,7 +152,6 @@ def run(command, **kwargs): stderr=subprocess.STDOUT, stdout=subprocess.DEVNULL) - def enqueue_job(event): event_id = str(event['id']) if os.path.exists(os.path.join(args.project, event_id+'.ts')) and not args.force: @@ -152,10 +163,18 @@ def enqueue_job(event): if event_id == 'pause' or event_id == 'outro' or event_id == 'bgloop': copyfile(args.project+event_id+'.aep',work_doc) - run('/Applications/Adobe\ After\ Effects\ CC\ 2018/aerender -project {jobpath} -comp {comp} -output {locationpath}', - jobpath=work_doc, - comp=event_id, - locationpath=intermediate_clip) + if platform.system() == 'Darwin': + run('/Applications/Adobe\ After\ Effects\ CC\ 2018/aerender -project {jobpath} -comp {comp} -output {locationpath}', + jobpath=work_doc, + comp=event_id, + locationpath=intermediate_clip) + + if platform.system() == 'Windows': + run('C:/Program\ Files/Adobe/Adobe\ After\ Effects\ CC\ 2018/Support\ Files/aerender.exe -project {jobpath} -comp {comp} -output {locationpath}', + jobpath=work_doc, + comp=event_id, + locationpath=intermediate_clip) + else: with open(args.project+'intro.jsx', 'r') as fp: scriptstr = fp.read() @@ -164,30 +183,43 @@ def enqueue_job(event): value = str(value).replace('"', '\\"') scriptstr = scriptstr.replace("$"+str(key), value) - with open(script_doc, 'w') as fp: + with open(script_doc, 'w', encoding='utf-8') as fp: fp.write(scriptstr) copyfile(args.project+'intro.aep',work_doc) - copyfile(args.project+'intro.scpt',ascript_doc) + + if platform.system() == 'Darwin': + copyfile(args.project+'intro.scpt',ascript_doc) + run('osascript {ascript_path} {jobpath} {scriptpath}', + jobpath=work_doc, + scriptpath=script_doc, + ascript_path=ascript_doc) - run('osascript {ascript_path} {jobpath} {scriptpath}', - jobpath=work_doc, - scriptpath=script_doc, - ascript_path=ascript_doc) + run('/Applications/Adobe\ After\ Effects\ CC\ 2018/aerender -project {jobpath} -comp "intro" -output {locationpath}', + jobpath=work_doc, + locationpath=intermediate_clip) - run('/Applications/Adobe\ After\ Effects\ CC\ 2018/aerender -project {jobpath} -comp "intro" -output {locationpath}', - jobpath=work_doc, - locationpath=intermediate_clip) + if platform.system() == 'Windows': + run_once('C:/Program\ Files/Adobe/Adobe\ After\ Effects\ CC\ 2018/Support\ Files/AfterFX.exe -noui {jobpath}', + jobpath=work_doc) + time.sleep(15) + + run_once('C:/Program\ Files/Adobe/Adobe\ After\ Effects\ CC\ 2018/Support\ Files/AfterFX.exe -noui -r {scriptpath}', + scriptpath=script_doc) + time.sleep(5) + + run('C:/Program\ Files/Adobe/Adobe\ After\ Effects\ CC\ 2018/Support\ Files/aerender.exe -project {jobpath} -comp "intro" -output {locationpath}', + jobpath=work_doc, + locationpath=intermediate_clip) return event_id - def finalize_job(job_id, event): event_id = str(event['id']) intermediate_clip = os.path.join(tempdir.name, event_id+'.mov') final_clip = os.path.join(os.path.dirname(args.project), event_id+'.ts') - run('ffmpeg -y -hide_banner -loglevel error -i "{input}" -map 0:v -c:v mpeg2video -q:v 0 -aspect 16:9 -map 0:1 -shortest -f mpegts "{output}"', + run('ffmpeg -y -hide_banner -loglevel error -i {input} -map 0:v -c:v mpeg2video -q:v 0 -aspect 16:9 -map 0:1 -shortest -f mpegts {output}', #run('ffmpeg -y -hide_banner -loglevel error -i "{input}" -ar 48000 -ac 1 -map 0:v -c:v mpeg2video -q:v 0 -aspect 16:9 -map 1:0 -c:a copy -map 2:0 -c:a copy -shortest -f mpegts "{output}"', input=intermediate_clip, output=final_clip) @@ -214,7 +246,6 @@ for event in events: continue if args.rooms and event['room'] not in args.rooms: - #if event['room'] not in ('ZKM_Medientheater', 'ZKM_OpenHUB', 'ZKM_Vortragssaal', 'HfG_Studio'): print("skipping room %s (%s)" % (event['room'], event['title'])) continue @@ -225,8 +256,16 @@ for event in events: event_print(event, "job was not enqueued successfully, skipping postprocessing") continue - event_print(event, "finalizing job") - finalize_job(job_id, event) + if not args.nof: + event_print(event, "finalizing job") + finalize_job(job_id, event) + else: + event_id = str(event['id']) + event_print(event, "skipping finalizing job") + intermediate_clip = os.path.join(tempdir.name, event_id+'.mov') + final_clip = os.path.join(os.path.dirname(args.project), event_id+'.mov') + copyfile(intermediate_clip, final_clip) + event_print(event, "copied intermediate clip to "+final_clip) print('all done, cleaning up '+tempdir.name) tempdir.cleanup() diff --git a/voc_ae/intro.aep b/voc_ae/intro.aep index 54981f5f30116d28156e9b78b6e4949740d184cd..70021c797de725cff797124fb33ffa5a86679907 100644 GIT binary patch delta 2397 zcmcIle{2&~9KZLtv9YnOu&r!tfk!t9!?nG;w%2PnU|ZQ>0t11KA;odhYga67ZOf35 z!5}0W5wh_TpMsfWVk8RzwS+T35K!R{R8&+HL{Ky!NP>t!rXjxT#>THDXyT>!?!E8l z`|IxW>3cWdA9D22kOi}Asv8*SxK-uzjfpnPVTNJYWa*WvCPntpc{bx_GPHFoUC?VD z!_=+}HYpm0Gy}bo7{D;2bdXNjpA(jzp?yJN)jbAA_IM){ODVsg)nS%i6B=f7>k4g?{2v;6nU2WWQw!&?umm1PgjQm9_qgg%C?@-q;$8<+IOsE!7{UQL<_$%b8k~HIA*w{0l}KYyUaAS>^8vW5mFYQo?7@S@?5LH^3`0dQuK)2rbY3aOO<-zuuv5`xU zZ1l$$4O;}@89hEc+)cY4*N6>SF350kUsfG}_y#_ZeH6S$u6lt9b2pRlzOF*(zlhIu zx#6e|T&708Yc4QY5qXXFmWWjBRAH!wl zET3Q!1;J`X{eec2Gl{%a6cCMe-06U)?e=A8YgnBo!n=iv!|OPF zv2_GKwx*c;pa+PC=y1{6ajYie_^h?d#-{6LHhZSH!VwpZWyt{tC}3GfasZ#&E|btD z&@#Mz=X7~RB+#Sht<+qGhgHC`^r{HG6^Ej^@^&Wb&E!}WJ40=o=$k}CrU`-5_U161G~SU z+x|rNaQhGy*m#@C&f7Vv>bv#wC@Sz>eEZCx?<$tP5dcedk7d0^jIe+Yk8*#eR67> z213M4z{dOPr8e}+jErvp68@NVl=YwMQ%1c3pteg+Vf^M~QKKM25 zz9g***adE>oEKae0NNiJ5SqGr0H|C2YW)DUy47c1eGn?&M%!4YUfl+w>GyTm3#G&d zgwUY}A^KiBVZK3?j)P(O_hrVh$U zETDLL*GWpSv2G4Su3ZAYQZ0e--xD0uZ?3MYLZMh7$S~$_87A$|R)!hYs-CzETzYb# z8>Eno>mZlZ{swg9b{;GuOCa2xq&Xc_Pg18WmEzl>nvn+^K)Pms@y<dEotNcaiaoDWB*fv2VwT)+G~Gxhv=Qa%=rP*3N>*ODQqCC!C!0$|DRLbxHRh|0*? zBcq?DW+HOB2+meNE`ndABz8A-vk`7cK{jM}n0Qf;M6QHxfG2om2`B=M+6kAPG-|(u0Lpm&3Z$dH$d$v^-i|W+v@V Z!fc|O0t?BkNpJ!=CPBU0FdL3e{RjSXn>YXf delta 2366 zcmcIldrTBZ7@wIQaH!xR4<(4MCt9@JK5t)FyyA<3g5rxBL1E!e&U)VA9T078R5VRv z>x*gFT9a0zY4I7FOI)Lkh?>}>EhW|xHKs+|MB5mp35jXigw7stVA?G>|I}KmexMP!zxu?~t*27a0#%%*+O0lmTd-jUh5?EqG-95BTc(qY2iM z;#I2wno@wTBxNR2Q3Nd4aBor&cHy$*W=l_>>o?q!98P*X-yh~RzZNF0_i_0|)x)d_ zdqZKy;|A&C+`?e6L96r586?y7 zfjWDhz22`iYz&6B*j;>{oy2VNhN=SE7O&l9$A3_qmbJ`XN_V6NR-9f}BSk(+sfOrIKYlu?lBB&MA1_N?h~UWxPF(}h#{mD4b`### zyW1d*d((4U&islj8t#0Y7s;G_9^#I3%Vr2*HShs1C;}P?0S|bKjN8F-&_rw@ayR15 z=UtHvna|Sdc$wxnRZu8~b5agLp*h9LnnB#=lcA|*Scy-dk0#bNi2S$GMP zx>=+p)v1cqh_geIXpvJS#q?H()8M!mlVqxhPC=$#U~(MQ5Nh<2%=s5qJd#c1=Nsj5 zwl52JcW=8_;y+q>WP!gYbszq2->k@TabT(SNlBzU_fUloABQ<<1LPv53wqP{fnC*r zY`wj+H3Lq^=XS5q+cn5yx;fWkT3hz9_{#3dk>kzuZ2YJ##e#N1H~yzhgOz%j5AK+B z$XcRp5BWU}8i{v|G#h?$N`(;5KHUrt==0}6#yoQ5+kyLJ1-s7VBxmzA4W95|!GjC9 z;GlxfW)wiPARM?ITChz{NV1SnV30Gl4qrW2I_3(QY2C>ywCI#&HG1}r7#elRFT=>u zti(EHirYD=n1*d*GMS}19A&J}BP%gIqR3*dJ@TP3X}ooK?f95unw3{+iB)(Be}9b` z0RxV?JBMcmYnrDRiIk=(AeBg|gp}PV3B3f>jek*gQ*qaI$D1+fIR%y$B;o(1$C-*F zQwk9vOOYcdKS`owC2Ds@#VFSaWaS+1RH>0zDlJL^p^etz2u+k}K~M#W8buqc2z#m? zu-&JZ{B`W}?0cEFR$d$u;oT+1f^_&3gtkav?K!H zf`fO9ei(SFr|g00xPC*9QSXOak&Udl8DXfp*!c&2<8k!HizQ)^&LRE#LQOn*Ng zUWRP+RcqAGgTG|y!Tm&sN7unY?dt98;C$F@^4&UH0Y8feZ<8?j`t1rh$MW^oo0JYK z;cWQO$gPCGkJm4M3Qxjbqss>$#XzWW6v$|ffrrMW12Lb6M)lDlZ~`UyjrcYgPBOzq zk#u1++IS;|vc?&$w_r+Elo<~^3yTYv>jlr?w;8R4ix*SD27dqm<~9K1`$^gwVKv)W^dd$ftml8CGF9&cU%RUU3PMam0n Date: Wed, 22 Aug 2018 20:44:11 +0200 Subject: [PATCH 3/3] =?UTF-8?q?Froscon2018:=20Lizenz-Link=20im=20Outro=20h?= =?UTF-8?q?inzugef=C3=BCgt.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- froscon2018/artwork/outro.svg | 23 ++++++++++++++++++++--- 1 file changed, 20 insertions(+), 3 deletions(-) diff --git a/froscon2018/artwork/outro.svg b/froscon2018/artwork/outro.svg index 9b581e7..052fb97 100644 --- a/froscon2018/artwork/outro.svg +++ b/froscon2018/artwork/outro.svg @@ -405,9 +405,26 @@ x="19.25972" y="1016.6071" style="font-style:normal;font-variant:normal;font-weight:300;font-stretch:normal;font-size:44.7326355px;line-height:125%;font-family:'Open Sans';-inkscape-font-specification:'Open Sans Light';text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#ffffff;fill-opacity:1">25.- 26. August 2018 + Creative Commons Attribution 4.0 International http://creativecommons.org/licenses/by/4.0/ + + transform="matrix(0.61454795,0,0,0.61454795,550.92759,518.35751)"> @@ -417,7 +434,7 @@