From a23119eb8c077ff5b3b05ecae66770824a77b18b Mon Sep 17 00:00:00 2001 From: Jamie Hardt Date: Sat, 12 Oct 2019 12:38:20 -0700 Subject: [PATCH] Tagging tests, fixed bug with append --- ptulsconv/transformations.py | 7 +- tests/export_cases/Tag Tests/Tag Tests.ptx | Bin 0 -> 76505 bytes tests/export_cases/Tag Tests/Tag Tests.txt | 100 +++++++++++++++++++++ tests/test_tagging.py | 67 ++++++++++++++ 4 files changed, 172 insertions(+), 2 deletions(-) create mode 100644 tests/export_cases/Tag Tests/Tag Tests.ptx create mode 100644 tests/export_cases/Tag Tests/Tag Tests.txt create mode 100644 tests/test_tagging.py diff --git a/ptulsconv/transformations.py b/ptulsconv/transformations.py index 827aaac..e53e241 100644 --- a/ptulsconv/transformations.py +++ b/ptulsconv/transformations.py @@ -191,8 +191,11 @@ class TagInterpreter(Transformation): assert len(transformed) > 0, "First clip is in '&'-Append mode, fatal error." transformed[-1].update(clip_tags['tags']) - transformed[-1]['event_name'] = transformed[-1]['event_name'] + " " + clip_tags['line'] - transformed[-1]['PT.Clip.End_Frames'] = clip['end_time_decoded']['frame_count'] + transformed[-1]['PT.Clip.Name'] = transformed[-1]['PT.Clip.Name'] + " " + clip_tags['line'] + transformed[-1]['PT.Clip.Finish_Frames'] = clip['end_time_decoded']['frame_count'] + transformed[-1]['PT.Clip.Finish'] = clip['end_time'] + transformed[-1]['PT.Clip.Finish_Seconds'] = clip['end_time_decoded']['frame_count'] / input_dict['header'][ + 'timecode_format'] elif clip_tags['mode'] == 'Timespan': rule = dict(start_time=clip_start, diff --git a/tests/export_cases/Tag Tests/Tag Tests.ptx b/tests/export_cases/Tag Tests/Tag Tests.ptx new file mode 100644 index 0000000000000000000000000000000000000000..2cccc1786de1f113c1ecb32173a94ce68cf21d80 GIT binary patch literal 76505 zcmeHw2Uu0d);5Snqc^r#VoV}-V`4$YiY-yoOv2#+Vu=EZEwRvIioK#DMMVKAHVz$o z!QLAx8Z;I_j8S8Yu@~C;-!;3OJ^O4BlHB{{{?`e6&#alX-g(zrQ#Q|o_gb}XZPVHY zh1F)rT+K~on z23cr1-sd~WnuYh*!ot$h3J-qpLK#rrBJmXqi#m;&BqNX$LS%aS4jVPj+C~^5uul-Y zdb6q}GXvr%Xtc3z)U&Hf%`)Wmy6$w8!J^+0g&Uw0Z=dOg#~Ke3uD0gRKzlcs@RBffE4Ev02Uj24v;cZ0>EOk z!~s(7%mB^9S5!VZEXr~Tu!_n&hehk51Xx9_5e|!1P6@EIR}(|x*BFmQJM!g{vwpec zXr)L8-oJOrSy;XyE=#r)>D;WmZK32C+j+o0e^?`;7A%er1+(&tj8#`*Kw?dDOemX31 zo6kkFSyihyrfx@rZVt=RT)K3+_Z{W#<>vK$B{c25JcfICd5j(E;Z0NY{C3nZx@qmb z##uX#8}|*nY5Tf)`&i@t9@cXFsBsvyuq;zXjE?1ivKF<_)5O|>T`U%5n?WiwRk%+F zl(G02VjJrLl`XoXQIW+@xOyQ9R~~Dymt`3`{);M>mIxP3(zOby0Q+@RWvenl80jnt zG_u6nd_=H$MN%U)(WVT8ZYtQ6Woc<_ZE>+CyO}L4b{Af!XjxcXZpkW(TvP+zwTMUM zVhxYzhmF`-+%Zx^Fl3(^Y_OsQyPKJg>17Qy!A^LaMx3ilNQ{-m4S><%QkBk1I;`nrp&HNc*VjRjoMX>f?UMAglaSa&?`*Ei!JoYP6La z?WBgS)Mzg?I!KLZrRAKHgc=2+-fJcY~@yaxz#~#b(CB39Bt$|+Q@UX zk>_Y5&(TJnqm3{}mv)Uu4Anb1IlV$Hceyo2Zha%QhI`1ZVRCDP+!`*o+~k(4+>+-Q zF3&Mso@2N?hnqZyn>>e`JcpY+hnqZyn>>e`JcpY+hufGcdZ)>7&&n4sq3BTc!{aR0 zj;I}354FlU!lFAGp1#igoE#mUsyI4ThWPaWd%T@o@c5#5yvu%udN>YYJs#scJbv`> z7}jqfL=TdLpC3JjIS-a>CX>!Eog@>EukSFL!4oR&eF>ZuM-W1BWF3zEhB)i=Ukw@z z0#%%yCSqWiFO65}=ky7xR!pFd8lO3R=CmLsA;BpD1szUR?47Ejdc$`RNmS03Wzeim zokV7Yo6MKGNJV1^G%20#-gpt`8~vS}zW44e2y;+P_6DO6G$wiX#oODre%IE%P21UZ z@x@P*#?+`>qjs$dPUSqRedW~q-n5;Kjm{yuN<-)&##9m+?}P-Mla2+U${?rL0QT*8 zU{h?p$KxfJkbLTMlKqtjs6jKJYWzn5t350~V#72GYiPc>QFyr&TFkL)XiV~^xYYD* zS#9Jnk73PBj%>1Y*pzEEgdPH*QaVQf!03=AHB3o@AUd+i<~ehuSf?2Zy%>@N14kC4 zk2#WyhTur~)@|%Mck%Ubb1LU6X5`x4khjVYp@;0Ll+KTk?XUUo#{L29ErJ zVU~~rG$wgds%mg6s$7*SL+BwxDy4IvTmqd;rs&eKCl{3irPvx0Oz|sfgmOjM&M7y9 z9>I&!`eEBZSj1#a{Mj)qIU@QYt*G9^`PC<>@ijw|V2WK)Bls2d_nuXBn94P(HEi9~w{}xIn>MXYdj{9Z-@EC*68&J6=!|ro z&}39fkRk~N&P2n4rRaAwCVBV5yH+Q=#=dot9w9r*Q*6WHzu6(WzT_f0v|*-jKhk7W zO5l(L1Bb$3!5pIFY?5~$yz6vs+Pb5!UE?O!9R-(^H|5{%l5omlS}K3uB?$&D-2@PG z$%w`zZ;FbyZ*9{u!*TDC+inOw6e}vFJDSzUEq#N@MYU&o=hL@TiLxTWz=fhO`(fPC zT+{2dA@m4dl-7@$VZzELYvPCxLQ@g_kdEe6#RkEjB8_6qSlvTq=6&?1s=o zrc_Fo3UzqpPjF(TN<~bZFXKwHu!iP~jY=@ZreXw_3g34t4xxwasg%wSUmyAqH!Tz4 zvsfgkO2w?XysoIFs)z&o;--H1p>cAt58)9W9?g7PRyF@1{(Fz&0ZMwR#FXOuO9=y~ z=<*!lEqX}86s6$fr5Mq%Upzz`52f0Vl3;<4Bg@{jC-8e(Jyhj;(>+$h+QzQ4?=bp| z!7ni$sLJ)OGQ^4S-b5y(!xSPuGZPa?kAhEy_0eww0HjO3d~ezu0^kT=&l)3#(dndx zDxGHxK^v9KFh}mTd&?67(YUrPAt9M&{j`u(3Gt3ji4YkCUNnSqFD@Y*6=%iQJJY+3Y{3eTeoR(8n3NkB5J-l!$Ri!YC zCG~Aq8>lM6jQMa4!%82b$cHcrl$H-G2~8@+M5a1)o^7MJ3z3N~Dk#)17i~Z-9>niY zBsPi6N|0DJ{fMIIuOYx=*^EvRQP!eQOD5sga3Pu{_nIxpdGoQbQMAoiPA_9v8U4tj z(iy{$#8)W*7ZwE=M_8kKv8rf>i3wEzuzMT%e=jLv8me82#j*^yg;b`Z@$2_vyvMfM zUS8~j1?|{fij5aai&iibOeM2}-BXJ(6ZR{cO<*jUeXwFzF=oORVP?YemCU|#QJSgU zie?t<6iARP+MU>~m`H6A!7SJslPwB*6lW31EZ8!aEe0RkQOq0*nT2pdO04D&Gg%}i z5So##xqFETS0Sw5#?qgZa2vwTZ7Iu9@bJvEtoPh#+iNr}QdNkTwDPC!|pLK&0h z<<;+=<2xlq38Lx!UrSh$T=;WWb_fuc&p+(z^@FSN3Qcx*f7+pgCj=S^MbYs8n`k5~ z{%mxM-NcD#EIZ-sVUgSGbw=aCylck77tolVvh7y?k8L|h01JBk_}$SS`&*SX8d6Mo zl>8b8zB9a$(5Q4MGgMq|9C-3$t4VobFG8tE7$IunyOdskjbjM$ZhV z-Dp~icZCJc0vCXlxHt0BL?|#>TA5ghYytbzfD;xlD{PJ@Xkw0dx(}o|@^aEn(jk#3 zE_d}5AHH}B@ls_|JQSvgQ@U~e<}*?e+)(3hUHC#5gu@c{2-7_QKauVx$%W^a($A+K zBrS46JwfP;Ct%x;tTDlJVS@eN2N&Qn}i%^hMfJ^k)IK=c{Dne z4!Mx%`Nt(JM=gc>`UQecF(YmH*P)*==rv~0qe=&D6j^hN@XjAZJIM_DlhR>}3w#aT z7telMd=e)oZL#Epl~^*%6IRe|0a@6Sx|yTAI@}oN$2t_RV)m$V{fYQ9*(zC?a1HB- z3LTq-eC(!xEXg#J3YqDP>rcr%_kqmZkPw@&Iw2-u8^?V0j8R_s(|>9$0?3sLUwOJH z@$+xU_}de5-}~c*l$F5ufdb$}_M6F}OY?r){}UZkI}_FuGRr1W^qe+w%8sh3?~A5# z1l@TvyQ7AW}gv<`r^)m8V zqtV#tOxNatAKv*MO`{~=?0x6^m_p-obQNBp0SkIjDKy4BGddI+jRhA9p40f-6UL^l z-9WAD#%so_#$SzBjKAOyOA4VQ03KL1y=fO)hsz`@3nnl?sqjKBdV#u!1}~h;+r4Of zpI)DlKy+NkuWK@7|LLQT&^~thWX}4a;3e~e7CdM0h0hCxc^DN1%6Sz^$Ec=F%fwiI zR#KEhH2nn^NSAcM7%v&K zjakM_E@gK|+-*@)KRN;`TtUj>f%A_{*->JunX;9M&$A0K2%lMi{}1xzEaq$H){^FH zH3%bLxld5De4RdaI-Qbd%9%k}FT$cg#`=YPwHOLamNKZ?#RP!DRzwUMm?8f$YGHC@x1Yz@n`Hi<+aynsa?~DPm%{ig)7*Rw}4Z4 zfp*$I?Aj~(3_Z19I78txg%Y<^5jXE&y7TxeOO?o-TTgEg5_#6R3~PuA-G{rD*fkAk zcE7$POMzD%eKd^1)}HEc1+sX!nv$uUp-GTk(<OkfZ_gK0l@SwW&&}47Sg1<=F$XovK}!W=74_$@VU(JjV4H;r2-aQ6_~Gr2JIp` zQ4pFn3xWduX_7<6gT@2K{lP1|*kjyn+-2Np z++p0#P0KzuKi~!VkF!o;!T4IW~gt(y$}_4RMir1+>mF}(MUyL)og5v|;p9cViTImz zR-7Cw>mBnUID0ue(Rl4weCl-R?2J}-$BvGPiTHB`6awz^>9XmcwOl-pWMu(x1^Ux^ zFCBV;_B9Q9O|-AkG4uC7E|WmkX_;>>cr@|{_aSJz{op~9bhYl%#DT#((H~ZjrUOw> zpm?iL7TNmy$5&3cTsoA8jwAIJ&Gru>XyWn$6!=1#CN3jM^m^#%IC@jazFH&@O5nC@ z{?%81R-0h!)O`C*pP@f^3}BXy^mi$wHedj~DJWy9_Uct5cJs->)HH?kTZGgUc)^bS zjVvjNBA>2TFo1M9(!@f#et3hX>+aZ6Oe@jr6tE_`OXjmjXmaUOtpgfHVe3Ex_!R=~ zXa;<&bif5bp#}C8z{*?OwzctjrDF?PW1Sp3o2{|R+G`BFO>1lvY|YmgtSGCBd z9p)Dq<*%4Urj5d^Auwj0;!DL? zFc7wdi0Vk^8&HKfba6bRioejbzRNtD;md1`v9Gf~?JJxq>z-_m0Cx0;gx8UdtA}_hZ1o$y+xBvf+bm2UnXpc=7 zZF7?xr?f5aePZfJ@5SXQW@7Z%LeRLM1ORUpz}ip8Op8$yMHh!mts~!JA1Z|*=nf%FQ2-W7DViQ#}+uyTRAqv zc2i#Pzv%MAYgvD=TSgWen7{=t^x6QhB zaegQz2Wi6RksLm?69PcQjfmxGY*YS8fCq45P~x~oFJe&S!bb!E;M(C&10aCgEqju= z;DX=jw!7&uOtKYs!R|IY&KaL9@}oADO_h(WK{{{jHMkndD!Xab-OSPdIc zi~(&|VI8VY5BYl%L0nyS?q2}NPw~Gn-MjPv{P|S@0Qg+c(H;_xnIGJK7)IBn>8Lra zxGl-guUCJ>4jRg!bnvK7G6FzhN94cIz!c7kDc-343f=R<6iWDSn$?}T;@sh?WLyk9 z9aJa`{xvk{1GPVD(S!2VHcf20kkb1&EtUAEhb^7{vG=+o7%C25NS%Oh0af~-Qqr$p zjWpinpnX2->3{LqXJ;@_95fB1FzRCPo#|H%kvbydGtpy`c65gLEtx%K;<|SUpoGy; z{$3zXQJc88;JCMM6XSpWY5O-`08GOujC)yx7hxITf)4!l-e+dImc6&NO@CL-hOIMYT26PAXl(}3?Sy@rAIe*NvXbDgx}pXPCNlcePtE# zOXLes)OXhlP$*6)CB4K}#mC2Ay>a=sxi<=~UeDbc2QfY_HZG1eVz-hQ|1c%~Ce?wl z$&KIdRQ=or5@z7BFCRQ*$DqLdF=$8437wmJ;rNk#$1^X+GV6F$0!%C!m|zzCJutD! zuRT5bQBEjfmxzt%l)%P0UZ_D4{@n*gVqhZcQ+hJz8hLOozOmp5o9AJl7C+Rxeg)-zGG8Q)#8jR`xnwt%giONC9qC=5Fn4Z2gMR)FM~e-`k}_sT?1YQgF803W6psFG3NrCUS9R zw-2n?QY}P-QbMs-#7(%*y2RTm5>D}oyDr2_8NXt(QWQGdW}VH@YyUmy>^AFahMxAk zRNR$UJr@~vm)V)Yr#$;x;PV)KcQg3PrGvjG=GCCit8fi;GsFKSuT=D(3ixr`Rrsb` zpbIvgdinHz@g!{jh>P=xFiDcyiHJF2bd;MmwtAkbxi54^c^9OK&g|B7X704msdTN; z38J1Tz2JotnH)-t_ud>IKR@*(z#guQzkKliT96WS#Zs^QqG*euBqI4dz z?R{s-_{*zzdtt=cnH`=cb)d5eu$foJ-w_bw>0pplXjFQH!vbhY1_@263Qbmu!dgZ+ z0zWh)X6ag3%LF8rM@>(|XGRiILVU8?(@UumH$`Bej>&0$ytF+Hr&0Vf5J5{~XD_2E zJPjutDn((@WMHPky1!Lorof71KoXWlP9tVUlcz~IcEwK?iQDw;5}v|SsK3b52x3Qg zRLgm&BBLqTMUV!SqCBO^fTY4o*d{SkU_~<^2}{G%sF}g!X$sb#%G2*;JcXxFf03tA z#4ZKjQJkmwJ2luvaqKj90!;>HDy%oPu!1?PyO3y~QYfzOIW{+FW@s4sxg1+jBl-&}LtOqq#SSD|vNhtJrLDPhW5zHzz%yAjUq{u+< zVmO!4Am8XqmEnZW3}r{qNV(kj*Bn?pY4#q zhy4xW?(NB!)}KzwN7uu`d+>wNmMFE8q3G`wMO|nxCB`XLz+&Eucmk(==edUtQzop32V<2X5bzwoZw(a~2Wa!O^+ z)7`L?vM8VtvHOL$c{iV4laMI-f+8BMm}QX-vn<|K?{qSf?A-~$H;uK|E-I~j0tkO7EyCHFFfTjT>6^^4h&JhmB%)6r*hse9z zg*VjRP5edTBzp(t;=MactZo-x=Dn*TBgrv8%CR!@j-~-46;A3UiII$Rh{M?eiOv_c z&uQNs&PYE=?%l*PP%X_XIT9GBUA%vXiPz1-9Ns@~8A|4LnB%om;Klycldv&Q63}%u zP%RngIfg||4r!BsWPBu#)1gl;{#JNZ?PA9)$wgkB^U<7JI&u50@FMTz!E6c4#4R0) ztg!RN9Elw;SJg;kG?4fc#@x#j8R_hdxmI{Z?d5`t5;2pPr2Yag*)emi@B;7Un=+Wm zOa7cO_mUknSJX&*GbLIkB>to^_cARbot-tmV&$urYu0%Q&g3Pjzrag&-27U2hWB!q z3})iSpEu@SvIFO`8mWQ?5`W@|d-7Qx7Rr{Ofcf)ij~EN{3kwQ!3-j=4qHxp(A0t0+ z@v09EeAg%~$Ou;Wrb$F2=dSVDW7KJ<(l2cY4q7@d*q;;%V3LbX_Jl`u^IY3>@V-+- z3#jIHChTm;lkmXOAiZ3yADF#ycwHq~Ry>Q;84NGSeaoT-~T}Nx#TgGH3 zf}qQ>O%<`|V<2ToaL}>^m(mIBY2hO^SjG;Cpi=ooXzUhyjNd9$)V|O{qniakqMzap zGd@7a`rzPzi0H_WBEGrF*;6|uerf{_RXDkf@K1?Kv)(T}Ak2OS0wFrch`cg}Sz&uX z6HojGSK*!ACNbpj_*+ubYwd4w;@D5d-vr1MwKJO9nc!Y`$1|5k~tnFW`5@l-L=p(f+9U$0GHS{(2PGO)Qx36S}( z8xDDIszh0d?CtJ4*?okAUXLGoz3QU3K*Q@p2Zygv*R!*0i2sS*j^6IWC%b#-(DQ}< zbA3`08hZWrc#dbiJ#SHsNgimT*W83degj%wAL^VPQCq$-umn5vVRV6G=7pkl<&z1bF zD#`qY=m*2ILHZAs{J#1jXnwgL-#ZFxk)O%J#7~J>u9}Safxf4{hyEjdA0;Ar{8ep< zC3$SJFd-^E7RLpTd+IHDkFUsBCq|DUma~x% z-SuvISN#b6aJ`2T(G!RbDt`5W2~jpNAy&mG{B@w7>WvAJ*7Pv_*Gi;wK>Be)dzxM3 zCa7|2`7Hs-iNXPIt?Jt~v?kQi`ce9k`f>WP`Y}q(=e8~9PwbOhR=`vlnfNJDL0?Aw zM*q6Ly1tses=l@o^#)K+@4VB-gsLzyp^9t9fu@Bk43+$@rLU<(n+dee-DlJ{p-IY| z=Wk*hF?6CeNqMeB6V=ey)xW8)qkltRPYLPt@zVK$uQ~+@kV*>^J0%{ajN!ebe;Yg4 zN?!)6T5&26-k2&%Jjud@S6$%eK(kTeDv_%e`toX=rWKVqOq28T8v#d8I2ObUqxx6W zC>zTvQJ5aoSYf+D=^dg~tp*V-r!T9oq_3!dRbN4kcc_9APqHw1r^JKr0$vq;W&LaV zf9c!m+oS9Y3i`1>X;Dk63<$5Hu-pjCR*mKIo(7g%kyx)P zc(qev?Yt5;|LO15PQX&+C8@p$i}C8B#QOY~u=%g%Jh^Fx#q$#GY8|_)Yqz&;)1-S- zZ;Phw>$kU~G`Vg&ArdK`vw2LZ#o9);gdpJBSE2xFFv!OjQLgBmL=k7^W4LTRW*(Y-4%kx(o} z5cAalE;a4Cw{K2Bjg&6!-qLeMn=zNGp<6rax+Y(pf z;^8>I12ickWh%VRTMl*AEu9HW6sO}p+*@J$E;q-=0 z{+j%uIb{6Nlii2*KnG1Dce=Yzc6a;8te1Yrr=7s-(y#PMaf!m8G_FL|PotRn8*$@g zmPCJ?pn9P@ZaSV0O|N@aSUfw5^hhl+K7|@_32`ZLhPbV9sj!ZVOQxatqTXbxjkSW= z#>GX?4x1hRee%{Dx7B(&a(>VSuNvPE#p}&<5?}^SuNvPE#p}&<5?}^SuNvPE#p~5 z@T?+uRuMd_2%c30&nkjv6~VKL;8{iRtRi?;kvywNo>e5zDw1av$+L>&Sw-@!B6(Jk zJgZ2aRTR%Eif0wYvx?$bMe(encvew7t0ttb%w}K|HGdUfDu`zl#Ip+GSq1T|f_PTJJgZ=yRWQ#gm}eEt zvkK-}1@o+ec~-$Zt6;`zxqNJfGFl3m@lwc)m_laE6f&cxkQq0H%*ZKZ#!ewKdJ0*^ zFHFTxIOk3JVJd!MDt=)qeqkzpVJd!MDt=)qeqkzp!hvt%6RwJ%aO5k-Rs4iQUoo!Y zCmj2VaTPy0_#edMMo00ZmncL8D1>`kMPWDUBtN>Mphn*n$$ogT@*p8@D+bmEK3Eag z4L$1ulJU+zaq#?M`e;C*?|>UWj`MsN{Y@1unfjO_HHs^kdmhH)Zx^Q|jq$TSNQ`@m zk*R)+SVG)Q!Vy((A3l_s6(2VnV*a(f__!U^FAc`UZGCNG4@J+D8*!BlB&*B$FK-B4 zPj29|=sz-V_iTD-oKtW?U%PV{m{{@?29K<-p*Ladn?H_@xRYoVHS8p zyK0#~O~wn!aa+(=;I}yLIR0B4cMk6a_8tB4Y?0QJ8xMBJ)r8i3zqn_c34#hfxRtbT zuukkMxf3f+DDl$j{Fv5ri3m)`-=uEbu`VNJZfIcW!uX@{o+9x9Ke*N#OI!3)E)kCRM6?Ywngqh}9pHz65?!d6gb`qP4%O{&NL_GJ6* zDc`@>Z}Y?|XS;51G|g>5YSe_+C-i*tbWiKsx%1q=ShX?FG0(9{tEqmY{`GdfAD+9W z&iu@B(D0;Lsi%xJUOQ6DbxW+n#~rUEOuzK66F&E!F`RVueSv~h(>07zN`h^3kKS=(r;OfI)`rfb} zoUnDAo33Sknf8+#3v^j7iFNFwf;!0SlkC{11rcaG&5r$}pgfdrWFxls(KtvAO8c>F zVF?thfFPH*_fZmVL4KYkDi&r{FVkS3q>*n`CVwXh`4I&Ltnp|MNqDqoKzA-4Dg^ul z_0bE@nOv~9NGpa`SU|v&&J*qfv<{h=(>M~u9wAxUI>I~}yzUkhfc7nxXN_Tsk4Cpf z7tKJ6>K>l85mAd5&0QD}lAV&0`V1X$0il5bPtjN!5wtioBqA_uF0I3Wz^F&47R>bv z4v1Q~Xg;aV4GowZK=}!swP0c3+?7!g0igk;6(13v9Z!R06Kb@E%oX+aMT`pzYULFa z{E`{_xS$#0d_5C;Z2*i;{f@QafyUKLO2`hsu*D0r)ANOuLpxw&%g&ARN8YtZlkEtl zOnnsd7ZyY)2TJ+7UZ@EL)vPoDElpY{9nij*`Gk@{OXhqg8suyyHU9g0o)zo@`+J$O z_X@7U%`?B3D46i~f26#;@m_E*o7Mr{cqZEoV@=;f3#Qgn}-&Ml^?is$cR1LEdt+c;c@@N_yfNO z?Xu_>kr5nT!EL?Mf>%yOj#;~6!nkq;%|A1w<_6BFw$FaY8HX~t<2Oe%8}a^5z3=8` z>)Pw4G~Qt!G-ArD?K@l>(rx3?AMzG1Znk~yTc9tT6!iYDyYc7{!x5%=6XWcDdE=Gl z#$)RMQL9q&8}Fp*#yj-nCU@gWGSc*Kyz#_YgmwJ<<&8(t{@*GuZ@g07c+GH|y@#hc zp2m0@;c1Ge37-0RtnoC&Lq&b#oup3s)}-I@%KmQtJKp&20oyxo+tK(d|D3CRW>~LY zd-g*={|?*S-EM5PbJ%{Q!^FxHzInc3W38SGT^bg?S$MZky+{w6*6XJ9iJGxD;Op=S zKLyX#jc)nom&WIBWF7t2)wg!#K0oI(re2*}9qUcnzkl?miYwn8GWgS~vko3kJNTZL z%bW2_ri||M+B@mb4%a<7&2jnmp&w0bd;dY*$LBii>6kgY>#DUO+Z(L-y-wX{zxN#J zJ9LEJ!NI{EkDk4glPe5#NJU?NuL>>>ozZads?Y;}E8^hrkyi!1!(eERrUsdKc##=O zWd|p`->o`ssJnYB>OfgP27fi{&>JmhZ&6?8y)${i7&eNRJ}FsWodkVb2M5*|IF2Md zS`(q0CZR&W{ZSA9)|tr;V;yv8Xjw5dodW^?G=Vg}LTi-C0UA$E79M)Te@z{zp=iv| z)4>6>drPM3_)wTMtTeg^e*m5#c0;NUYyHk%mX@{pp`(2L4%YQu(CFBf3a+YecF|I@E7cpJ;Sw-k_^>lh-7o^ zCYIYC4Vf#%Q!XUvE9e|{;(wp=3!e%D9OfX-pZHX;cX*7EDIZ{o97E$XA4NOmHY6QXIJ3Mu#h0H&mklJJBSNyQoT#`{JW)8_MTpVgF zojR`fnwqcwa;syu%l0#!>ZVMHXg;de!o2#^cL+Y-2KPJ65?snNP_tyL|C*Gw^GpoBBH`G3K_x!e$(|h zXV1sy0xo@*RAW}w*xH+SFWcP>T*);(d$Wsg8+H@B_&T7$F1{ovXkL7DBkFPS(GB$N z>*H83(EQKddNeumuD*0Y4E--}z0%!!Y%L&asU^Sl@bN^UmT$c}wjXh~o+OhFQ=~?5 z1<4$b@zULT;w&_Q9^XiG61=?iii`69cVjPay%*fgri|0Aw;fx3E1pz5yYTGBvjfjg zJS*|6!m}I?74@w*f;y#J?@9J@+SK#BP$~am z^>h6`iP?YH^;q}nNr%b}?=$kp;oJ61kBYR}QLAd^;kP~yYIXSP)Q9o+g9pC3Ajft~ zfZc+R8wdV4q9A0)8_CxPEl76Sb>jWQ^)?6EN4@>>lgPMssCd|P zGR`ETu`lP`k+T`k4jekO?+j@@JhW%dLmC`>?~Bopxe}w4RzWZntd8xwA~tsWw1PFU zUg+5|tso}W0weRb6r{v)q?O=RV5VcXrS> zX(hH$P6O*L%v#wAMkQovvN9NwV;xt=#_I7n;L+i+$1?=aU_4*p8H8sb9x7|3*Y%@^ z(vIwz6HGD%)%8l~^OQQNj(XG)%__U}J@Z36d;N;Pa zBWKd*JbLsiW#z${eP_=kqjBQUv6K7K51rkgLF@3$zvsqd>!5TuUXbd>>wI_}cjHMi zNV5!6U2H*wW+rKs!CI>VM0A*@@6@jr*^hz(Icu=wANTnA+o<%jq{fdav)* z-`Z6DD&^PVpUmD{V^rZ%zo46ED$kj@WVNGR^>YWd*)D$nx8yo=HXfWhpkoy1)3sq> z@Bg|Rk1j*4YvkpP_a}bGW9y)FH(s>r#`7A@-*}RYH2oWIJaHD`#!LDizwz?_7t2XF zO;16-;aUDJG#*^sh`(u~Q2dPN{MWy?JbA#cxg_6)96g~yn+NE4$7jseO*_~Aw8k$i zAZ$@Vft6Sa3-J|4o&SZzv z&3j#+a>!wAjZu{g7cH3Ber}KNFFEXdZ>|5h#3}FZwKWb-uOD0(b!TgLr#fZbAAUD+ zW0@ggz5Djw5#^LMVp8rm9-ma5(_>>~o865*e_r`XT-E!V!8H$00ef3n86M}qfxJG= zGCawTMB_=8;cosbP`H_e*xp0q05vG>X<5P&$X^aYE^qCpB;1DlEL&7GX1{LLaKEHc zP{yiY2MGm{`T4BzcrQtKv}Qmz@uNb(Pf;H^FD7FTONW*fLo?b@iZ9o_o3l+K{$29g~A3){`$XXfFv68PlNFvS!hrqva%%p zID&G~&So7*ED6R-c;y@J6uIk@KQYu#u|*&-^Su{{T+I#62H6`R79eBK?#I zWNl?NQS4&CH-r5H7l|FHgmN`FJRlNHd1|TOKQKH%qyJ`MRBHm5E zfQ8ZA7-q^12@IJncG3wz{@VISqJtv+0cdiQ(2FmZ{UZa5 zvbh=<9T^OBHQvoooRI4Nn{&e!hATT^m3Jl(|K>~V6c=r-YvkO}5WX*e&!WI6F1o6$$DXAa99zBS!9`2w5fk&0E{tlpb0>t2oe%Wk!Iw)$dI7OsGzW{ zd67YL!%Q|9H(8m;Z;K3MKAHGF<_Gs=Xb!Dk6c8L4RK(z}Fu$Tfcj2<-?e=6Sm@^LL?7$|i`CzIz!28H-xMCmjG z=Q3ytQPBp0bAy8;1B#g>D-dDA0?G)FRd#%#mNFAC+|D=zadv@3c6NT%4-rqHsHLX&an+zH*F_sN+Iag zp>+d}9VvpE%6*BX3r5SeZtq#HU4zCA>~;1+zcdPGoOHI89CTfw*4z`XR0o~TQCG=c zR|$e!jW6-GFShi9hEOEX0TA8XzLtJyP$DlV;$7)W-9gNR|GRfR@}bl9@FeSrcz$%! z>FPlrOheYBq@YJ0Vefa|bCP zwy+qP{9)$Xje1tI@9=u)kF|SM!x%$SOoa}zz})ief{L!S?gzB&?Gd=^Ab-&ZetDzE z$_KtmE;3#9tI`l%4*JUY@LrOCY#w`^7C8z6D6|Z3yh7)PL>fI>pV6XfT5xIFY)b4=yyW_4+^;tm~u8*Xd@t z>2yfz@8Cgvs1PSAaJDvVGkvg#N1}1cM_M)Vs?ZSuoxOgbgHyl$E(07Z^<&8@?@8UP zV9Bv1O3;K$WbEaZC8EZ%7>25YCn?~6`BYXBOdKJ9g$GU{Dz1o)n=&wNLrWJJghqi# zaB9Rq5o+R`f`UqCPhpY->Y&0FQ>8(=8ff=1ZOzlp!q%jE0AgiN@ezytd^9qEOuK>* zsFbA_fgvg0Xnt(M3Pvnxb=E@NK~Nh!c(ATgf8Ah6pLhx&u%&|JQfhS7_4q$G(0QTt znF;A}4`dr%0WcYa2lKPl3r$aSe`?a~43G}c_!%^NP!I?n*mSskZc>A!E}~Ljlad}W zXbBAB-cgtp6Mg~dOOp~gIRRbcpje(Tp;*aLHwCRPcr6OWHyF*pL$vU6V6NjuB!yF? zipgjv4sx z76u@VkQ#fU@d%Cjp28T;6H}qKz22#s^FYU{r>UFKW`2-V>H_n>RKV2}04Gf@P68r5 zw0ZYR=wi6Kn$+m(p+_zVm#{)E(OE9sQQAr)U~{ZkCCV(OroV(Od zMyQ;CPNLAHw@9V4iLaEo`%n}!Cn|L^DLsX0KbjadJt(45N0X8s$JWcuHZWBe?YoOA=h(~WH~ zd<(vf37dG@>l|>-(;oMI>l@c~<%qjZC)G^Qt+-1IPcC=G)?Hy#S52y^U%3j+JR${A znN@0e4Kv5(K_7bke5B$3qYfogxt)^I_i(~{OY6UWd!GOLOfGjPe?{bchg87Sb|omEvC`VwKX@wXm-| zu~^-H{#T5Fic~Yf;9RG_vPe=LVbpM4s!1tD6sW=DjS{ zm^B6i`VG@>FI(E@!3t6}NHr5)##jggd-w0Zz4cdFu0LO`*<#S(iH*LWbX$hY$+?T7{kj zJhNxdUUG5v(u=c~ELlP)FT{u?OZ_0lL0STVWW3Qu>jV0;moDH$bU=Lx;j^LE;krf;9r@+f>Li-#^}IZA*=Z-4CT-p zJHucHQH1%v0BoRN07n+i|#1CmvBvH((l*A&38Kc9z*tm!W|P9|)q)zm1(RY|HmWaz`96}C&P;V{LPHf+>vG{`o1w&6M| z!K*!X}C@g;&1)Pq!L|?9j8Tgv`i&4m{dmzuOh8gBX7mMypyQbT*|GF>U&x= zj0Kr{2`Yv6(WxvcB)}eSJj+{w_L9s(dE8+;Yi76$b=~mHDG%jIn&-Lxwe z+1QVjx(YfEM+$Xb`gX(#(aO7xg_D=}_3asTiPDuH1!6C%M~nJo3#JEA`O4wUHA18! z)wFS_NVOnwZyAJwM?V4&PUnTfOAzxA$uXfJ3hJNA&U3cd*WV@(AYMl0lgUz~^}^oB zhQ{;rGzj4es@(H8@XpJ7f@cLIQo!CcJ{1e){`oX&(hT>`Kg4@$fM4L^C7H(mpl~Oxh4^M1io^M1iq^M1is z^M1iu^M1iw^M1iy^Zp|IJz9jnM~`X8;b;;59xcM(qeb|8v^+Wkr{=<3KuiG{qvq-04E$C zp~Xb`h1+Yz!@Qp$_s^8SN5Y{!77yLJ(SqtThI%J2_aU9CUC~*1N!Gstu?kMmwx~1l zNCgTb(0+aiv*be91L4r^UDEKDC&WK5Z_6v&>2rYS5lyLxGfNDJK(r*}=6&^;>2;Bv z%B8W_W$~zvFd1tYDhk2o=FOy@!z^;w&^m4IOd8DGNefE(c`m4OFXg?~`B`2zNUn{^ zd3S#NAn>MJA`>NT4*eWWPoobdhA+~RB8XMqM%Z&=`%4+>P?Y)pCB1IIbz`HyZ(F*>C-OB&J0`>l{q(jVMr!^ z{N__*`L@)p22wyu?w~rKLusO$czfp5-G`2)9h;4|X_Qh;qw!G@3m1oErs3RCjM92g z*rrLgMD=`*5pP1@hR1|RJ4K0zlTR^99xD)!N{Hmt`5gML{vFTm#Y-2@&GcIsni;+% zDll{EszXQ8WL5eKJD)?}O0-?#7A{>7H8(SL?!xGZD9A+QDys82G!0$YTbC}JpScM@ z0*>s&MW#hN>;|4Ki|0ly$y_+!FJOtFCkKi!&galhqi|$rrs8dKmwtg&xO+@;SFj?6 zg4I^eigvQXimrbJa|$onvy>f8OPifJb(bl1xp^mGnk}q}=Xn#Lc!^~h4FQ#A-5ege zFeGrX-y;0qWbUS%r1(Y6^&@YC!4a%tC6DJ6b zY#TOeI0y~fX4c&sG^*0prlD;^(kg4yVSHH{{7NZIwr;5z@wipzEXOl(R2JBe4)^Te_>^R4?QRq``M2`<>LEZH+%c$c&MyF5nA-7 zL$-!(dz;2~jRx534v7Qwv7-YrSqJ&*T0ydF06e|@XXxqgE2^omq+a?Xbo+`<_5rB- zdCI+XcvjTeyP+D$dTH)zjoWqVKA!sQf51~`#?rZ8p6yvcva-N#IAp<&c8*}@KHjI= z7|vLC@WYZC4<%!FnnjxV>w&#WYCMdLhboQFuGBQva@Rv?SGPlNtx2`)C3k!VcC#Wi?dZed%L$~29C;$+uD`mRH0Bs-#wJP@#Dw4 zzCYgW{qe4@u5?*I9PR2l+11^Zw!13{?8j}gt1F${&>!#mqpMP+uJPmD6o>?;Ms#y6 z9U}AH9w4Md^kB3lj_%+HFC=mN_)){5?n<6Zn~v&=AKQDOtB<^kAZQkBKqC#* zpjRWSF0bE5-L`$RDs3CKZHRwR2?_C*dUWQ`$ zV4n%Z4FWCp-V+EAzk4<8)V-`QY{{Ju@sI@-I$zvf-9}9wKG_xj0?FRKjIEt5=CJRB zw#nQ|U@;!-ZJpVY#IJMptf0dLwofXCRE@MhReunYHTT~FlUwLs8 zFZT7}l&yI2A}`+I#a+BOUS7z==VJ}-RX7bV4UN|;$#l^8PD5iSWt0_~r7EwndPU6Y z82>dfVlkk;wrKzg>$ti}9{O!lR=lXR8ujYrnAjLyN=%HM)C-)Lm^&t0rbXzp>_t1K zaYI966o+x2X^?qL5+26zk8LsrK|bKc*Ld;hEKWIOCMP!J#mjTJ(G{~f@t#RU|2-2k z*}JDxWdk${G&G*KP-?`?lA|kQ{Kjdl(9k%}X>8WexHeQd%LWaN851N8%CbVE9~EKft@2De{wH8e6fjYAq5^*L|%YiN8uQOR_lhK78_vHfyFLnDX7IIf}5nbSzu z(C8-n5(`2KjnlK_A==UGQvOC(rmmA3aQCqNFerEmjgZUokQ_W$S(&;rHQ*e$ucGD}8h+fD zRa*^>P2BqKtf7&~C7_&!M#>P$En-?;L*ogjv2v#Q7f$;mvZX?GyoSbwW^7p0h@EYY zaf|bIxrWBTK}w7@8X6ZkjA_$o7RHQrC|lHJU1SXU(yYXb-}B-SUfem5vt7iCH+eCg z7hCXREnXbYi-UP__5g0)C|=Cx#WTFv+#~{IhDJoHnlvaPBY5#1%P7sy!uL5ZURo{Z zooo|hIk7A+1{=6hcV0BE;6^{@#m39I(aozk(TW!%R&t}GcriCw9)(v6SVYJ_<{5Kx zTYo0wMH^kAaeosHF>`rAEs&L&Z4fWs;l*dXc!n3PdC`s+EAZklUL4PheR*2P=r6^ra$H`L~rE^OePV}Z4Hg`kCYmBG&K4> zQO@!!(_lRh36^HrD=7$K^+FkvMo$_!aSAWK&x_globp^=?9Ge!3nb-dXb8+$&*dDM z5>d;$nEN0%5ISA(+<2aw8;0i#Jh@=H8IQZn*aU>Xjmgbb1Cc)__Y}(1)KWG%uTZ9$ zwUkYvQ798NEoD>S6v`A#EoDC70MK9EoDnK-4fG7~H@zzS&`)6kf5pGK%qouHwSSdR^h8k00MroAO;P%0D}i8=C+XU=3v zD=+6=xk;$xitF1F1jYP?5aUe{Kj!SJF4`tt+#)r}83w#S>dE~Jz!4h2{bXR8%U2^T zts98ESZK#-Xmo3+)EJ|ou}ls=Z3%^jSB^ZCbTLTMlHDF4_2d?97olO-OtvE^Hw{KL zIj@FmX#C81)mcMh4RdwZPK76_6;w3jg{?b zbgCOC&UN9$MS4zL@hK;6`J59E_L4-}4k9z6c0Eg`^h=gZCp*hSVkW0=xsL_}9UmNo z>_T?d*OE6f#O84t5VROL2-)rItnZ}=$PfpHYe0}s9E2RI?5x>R)MSVg{WTzrY6v;J z*;#&4q-BV6_8JhhnK>46O0u(}r0mEL*FMvLpu>}ckkgo*l_X_UhPeHK2E+q3gq-^9 zto70=kRhJ;mLRC>l*XEVculGCvxdgL8%m8c8XAW=jAI%a$2g568XB)$RnBr!Lt~Sd zQsab%#%Ye}oow?x{_RtW0~M;TXlP90X8Bb^qi{R}5HT)mXiRFN)c8e1qbi4ST|;B| mw@Qp_8XD8NYcx|s;|>?~+*I>;Y<^!kOYSanjrZjb&Ho1*l7R*Q literal 0 HcmV?d00001 diff --git a/tests/export_cases/Tag Tests/Tag Tests.txt b/tests/export_cases/Tag Tests/Tag Tests.txt new file mode 100644 index 0000000..9d69c66 --- /dev/null +++ b/tests/export_cases/Tag Tests/Tag Tests.txt @@ -0,0 +1,100 @@ +SESSION NAME: Tag Tests +SAMPLE RATE: 48000.000000 +BIT DEPTH: 24-bit +SESSION START TIMECODE: 01:00:00:00 +TIMECODE FORMAT: 23.976 Frame +# OF AUDIO TRACKS: 8 +# OF AUDIO CLIPS: 0 +# OF AUDIO FILES: 0 + + +P L U G - I N S L I S T I N G +MANUFACTURER PLUG-IN NAME VERSION FORMAT STEMS NUMBER OF INSTANCES + + +T R A C K L I S T I N G +TRACK NAME: Audio 1 +COMMENTS: +USER DELAY: 0 Samples +STATE: +PLUG-INS: +CHANNEL EVENT CLIP NAME START TIME END TIME DURATION STATE +1 1 Clip Name {X=300} 01:00:00:00 01:00:05:03 00:00:05:03 Unmuted + + +TRACK NAME: Audio 2 $A=1 +COMMENTS: +USER DELAY: 0 Samples +STATE: +PLUG-INS: +CHANNEL EVENT CLIP NAME START TIME END TIME DURATION STATE +1 1 Lorem ipsum {X=301} 01:00:00:00 01:00:05:03 00:00:05:03 Unmuted +1 2 Dolor sic amet {X=302} 01:00:10:00 01:00:20:00 00:00:10:00 Unmuted +1 3 & the rain in spain [ABC] 01:00:20:00 01:00:25:00 00:00:05:00 Unmuted + + +TRACK NAME: Audio 3 $A=2 +COMMENTS: {B=100} +USER DELAY: 0 Samples +STATE: +PLUG-INS: +CHANNEL EVENT CLIP NAME START TIME END TIME DURATION STATE +1 1 A 01:00:15:00 01:00:25:00 00:00:10:00 Unmuted +1 2 & B 01:00:25:00 01:00:35:00 00:00:10:00 Unmuted +1 3 & C 01:00:35:00 01:00:45:00 00:00:10:00 Unmuted + + +TRACK NAME: Audio 4 $A=3 +COMMENTS: $A=4 +USER DELAY: 0 Samples +STATE: +PLUG-INS: +CHANNEL EVENT CLIP NAME START TIME END TIME DURATION STATE +1 1 Silver Bridge 01:00:00:00 01:00:05:00 00:00:05:00 Unmuted + + +TRACK NAME: Audio 5 +COMMENTS: +USER DELAY: 0 Samples +STATE: +PLUG-INS: +CHANNEL EVENT CLIP NAME START TIME END TIME DURATION STATE +1 1 @ {D=100} 01:00:00:00 01:00:10:00 00:00:10:00 Unmuted +1 2 @ {D=101} 01:00:10:00 01:00:20:00 00:00:10:00 Unmuted +1 3 @ {D=102} 01:00:20:00 01:00:30:00 00:00:10:00 Unmuted + + +TRACK NAME: Audio 6 +COMMENTS: +USER DELAY: 0 Samples +STATE: +PLUG-INS: +CHANNEL EVENT CLIP NAME START TIME END TIME DURATION STATE +1 1 Region 02 01:00:02:00 01:00:03:00 00:00:01:00 Unmuted +1 2 Region 12 01:00:12:00 01:00:13:00 00:00:01:00 Unmuted +1 3 Region 22 01:00:22:00 01:00:23:00 00:00:01:00 Unmuted + + +TRACK NAME: Audio 7 +COMMENTS: +USER DELAY: 0 Samples +STATE: +PLUG-INS: +CHANNEL EVENT CLIP NAME START TIME END TIME DURATION STATE +1 1 @ {D=200} {E=101} 01:00:00:00 01:00:10:00 00:00:10:00 Unmuted + + +TRACK NAME: Audio 8 +COMMENTS: +USER DELAY: 0 Samples +STATE: +PLUG-INS: +CHANNEL EVENT CLIP NAME START TIME END TIME DURATION STATE +1 1 Region 04 01:00:04:00 01:00:05:00 00:00:01:00 Unmuted + + +M A R K E R S L I S T I N G +# LOCATION TIME REFERENCE UNITS NAME COMMENTS +3 01:00:05:00 240240 Samples Marker $M=0 +1 01:00:10:00 480480 Samples $M=1 +2 01:00:22:00 1057056 Samples $M=2 diff --git a/tests/test_tagging.py b/tests/test_tagging.py new file mode 100644 index 0000000..02a4376 --- /dev/null +++ b/tests/test_tagging.py @@ -0,0 +1,67 @@ +import unittest +import ptulsconv +import os.path + +class TaggingIntegratedTests(unittest.TestCase): + + path = os.path.dirname(__file__) + '/export_cases/Tag Tests/Tag Tests.txt' + + def test_append(self): + with open(self.path, 'r') as f: + visitor = ptulsconv.DictionaryParserVisitor() + result = ptulsconv.protools_text_export_grammar.parse(f.read()) + parsed: dict = visitor.visit(result) + + tcxform = ptulsconv.transformations.TimecodeInterpreter() + tagxform = ptulsconv.transformations.TagInterpreter(show_progress=False, + ignore_muted=True, + log_output=False) + + parsed = tcxform.transform(parsed) + parsed = tagxform.transform(parsed) + + self.assertTrue(len(parsed['events']) > 2) + + self.assertEqual("Dolor sic amet the rain in spain", + parsed['events'][2]['PT.Clip.Name']) + + self.assertTrue("01:00:10:00", parsed['events'][2]['PT.Clip.Start']) + self.assertTrue("01:00:25:00", parsed['events'][2]['PT.Clip.Finish']) + self.assertTrue(240, parsed['events'][2]['PT.Clip.Start_Frames']) + self.assertTrue(600, parsed['events'][2]['PT.Clip.Finish_Frames']) + + self.assertIn('X', parsed['events'][2].keys()) + self.assertIn('ABC', parsed['events'][2].keys()) + self.assertIn('A', parsed['events'][2].keys()) + self.assertEqual('302', parsed['events'][2]['X']) + self.assertEqual('ABC', parsed['events'][2]['ABC']) + self.assertEqual('1', parsed['events'][2]['A']) + + def test_successive_appends(self): + with open(self.path, 'r') as f: + visitor = ptulsconv.DictionaryParserVisitor() + result = ptulsconv.protools_text_export_grammar.parse(f.read()) + parsed: dict = visitor.visit(result) + + tcxform = ptulsconv.transformations.TimecodeInterpreter() + tagxform = ptulsconv.transformations.TagInterpreter(show_progress=False, + ignore_muted=True, + log_output=False) + + parsed = tcxform.transform(parsed) + parsed = tagxform.transform(parsed) + + self.assertTrue(len(parsed['events']) > 3) + + self.assertEqual("A B C", + parsed['events'][3]['PT.Clip.Name']) + + self.assertTrue("01:00:15:00", parsed['events'][3]['PT.Clip.Start']) + self.assertTrue("01:00:45:00", parsed['events'][3]['PT.Clip.Finish']) + self.assertTrue(80, parsed['events'][3]['PT.Clip.Start_Frames']) + self.assertTrue(1080, parsed['events'][3]['PT.Clip.Finish_Frames']) + + + +if __name__ == '__main__': + unittest.main()