From 48460f6672666fe2e3c411fdda57642c9f7c6917 Mon Sep 17 00:00:00 2001 From: Simon <65854503+StopmotionSimonYT@users.noreply.github.com> Date: Fri, 29 Jul 2022 14:15:51 +0200 Subject: [PATCH] Bot can run multiple instances at the same time --- TTS/__pycache__/GTTS.cpython-310.pyc | Bin 0 -> 979 bytes TTS/__pycache__/TikTok.cpython-310.pyc | Bin 0 -> 2193 bytes TTS/__pycache__/__init__.cpython-310.pyc | Bin 0 -> 189 bytes TTS/__pycache__/aws_polly.cpython-310.pyc | Bin 0 -> 2159 bytes .../engine_wrapper.cpython-310.pyc | Bin 0 -> 4383 bytes .../streamlabs_polly.cpython-310.pyc | Bin 0 -> 2002 bytes TTS/engine_wrapper.py | 5 +- main.py | 18 ++- utils/__pycache__/CONSTANTS.cpython-310.pyc | Bin 0 -> 1190 bytes utils/__pycache__/__init__.cpython-310.pyc | Bin 0 -> 191 bytes utils/__pycache__/cleanup.cpython-310.pyc | Bin 0 -> 1086 bytes utils/__pycache__/console.cpython-310.pyc | Bin 0 -> 2939 bytes utils/__pycache__/settings.cpython-310.pyc | Bin 0 -> 4271 bytes utils/__pycache__/subreddit.cpython-310.pyc | Bin 0 -> 2360 bytes utils/__pycache__/video.cpython-310.pyc | Bin 0 -> 2181 bytes utils/__pycache__/videos.cpython-310.pyc | Bin 0 -> 2230 bytes utils/__pycache__/voice.cpython-310.pyc | Bin 0 -> 2315 bytes utils/cleanup.py | 4 +- .../__pycache__/__init__.cpython-310.pyc | Bin 0 -> 200 bytes .../__pycache__/background.cpython-310.pyc | Bin 0 -> 3719 bytes .../__pycache__/final_video.cpython-310.pyc | Bin 0 -> 4910 bytes .../screenshot_downloader.cpython-310.pyc | Bin 0 -> 3481 bytes .../__pycache__/voices.cpython-310.pyc | Bin 0 -> 2062 bytes video_creation/background.py | 9 +- video_creation/data/videos.json | 115 +++++++++++++++++- video_creation/final_video.py | 21 ++-- video_creation/screenshot_downloader.py | 12 +- 27 files changed, 154 insertions(+), 30 deletions(-) create mode 100644 TTS/__pycache__/GTTS.cpython-310.pyc create mode 100644 TTS/__pycache__/TikTok.cpython-310.pyc create mode 100644 TTS/__pycache__/__init__.cpython-310.pyc create mode 100644 TTS/__pycache__/aws_polly.cpython-310.pyc create mode 100644 TTS/__pycache__/engine_wrapper.cpython-310.pyc create mode 100644 TTS/__pycache__/streamlabs_polly.cpython-310.pyc create mode 100644 utils/__pycache__/CONSTANTS.cpython-310.pyc create mode 100644 utils/__pycache__/__init__.cpython-310.pyc create mode 100644 utils/__pycache__/cleanup.cpython-310.pyc create mode 100644 utils/__pycache__/console.cpython-310.pyc create mode 100644 utils/__pycache__/settings.cpython-310.pyc create mode 100644 utils/__pycache__/subreddit.cpython-310.pyc create mode 100644 utils/__pycache__/video.cpython-310.pyc create mode 100644 utils/__pycache__/videos.cpython-310.pyc create mode 100644 utils/__pycache__/voice.cpython-310.pyc create mode 100644 video_creation/__pycache__/__init__.cpython-310.pyc create mode 100644 video_creation/__pycache__/background.cpython-310.pyc create mode 100644 video_creation/__pycache__/final_video.cpython-310.pyc create mode 100644 video_creation/__pycache__/screenshot_downloader.cpython-310.pyc create mode 100644 video_creation/__pycache__/voices.cpython-310.pyc diff --git a/TTS/__pycache__/GTTS.cpython-310.pyc b/TTS/__pycache__/GTTS.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..e045694ed29642d6b069c8bf4de923b9c2da8d92 GIT binary patch literal 979 zcmaJ1jS5cc2tHpwN500E(tDMOs1)3=cM48YXK|7*AmuDcOZHm#U4h2>VFH`7-<*OZvtpKCyI;- zAVh>$tY3Y+NnnjDO?j$@lhXMpk8L$H{t}AwrXF1qw*qf}40az4UU}pEz*miJ2hZ$D zTia6m!Aqlc6<$}`*catnE>#|7 zm^f4FxH7dqsJd*&k(u^+k4F*AX^0{n318cjo^V)%!?{K|wC$)G!<@=v1D+f`IOv#< zs@hD;Fo`?_p9Z)9Y%g**Yd65~T>wTIy#*?NZe(Y9>KEL95s6t-tN1363!w54nt?`W z9}1POY_)BmqzSU;B;0Zx1SD@M_uArO;`lbWJa*EhXPb-6DN1todlFe`%f=`bSCwk4 zp4Dh~l{%W0^}^%UF#a8cdkBBhB@6p?NEPlp4k#x%%|$m)r@fB53uiH#g{t;xs)ZQi e$kLRN-*oR^VPpPyQPLCq(LH9$X%{}hZt!0>tk_xr literal 0 HcmV?d00001 diff --git a/TTS/__pycache__/TikTok.cpython-310.pyc b/TTS/__pycache__/TikTok.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..03adf13c341e2641824b399b21cdebe9dd5d50cf GIT binary patch literal 2193 zcmaJ?TW=IM6t?HKv$LCIvmmOdP@$?qT?ul5kgBMZTY*+;ql$zgrcp<;V{dk{JLAFj z=Cazn6kbt(0Ijs!H`IURCnTQu32h(fu_sHSs??Ux&7R|9pW|=X%uIlwz53&IdwvF? z*IGH*Y*22(5FH={5!^?i=2jnPR%qeUW{0+!b3zBW-FGuD^s-7=!Dt&1=XV_Xz+K=~ z>eK26C=5XNK(F0Lq(b~>i1<&fuukv>YE|FBUTD3Al`p82X}&F5ma2Wdx%vGq5*Lzk zlxl}R^jPBq3e$r&ps zpRV96=~3AVAl^KR2hsBK%CUIah=blcs}Zl1R&i|A;?Y_yt{pG<>{$H#ow%~xYKC5i z8wVx79D0P7y5XSHsaFwY`(^{Lee{XpSHepkGFD0dmo#F(Cbw-DI!`DKur~SYd zhQqw!tBFp=$>xA^6Nb15grX1=6j}rm>luPF2#7LZ!_&} zvR;DW(`nPP_IU?}_y`EWBNRc20magiwseU7s|}h<5O{IchmX2a7UJ5{Qe31fYnO6J zVBEhn5HuF@>f%5w%Csk0Z+9_a*-}PH8tauylJ3hTQBaz6m(qNf_2|+KZHvGb_b9)f zUW8y;wsO0JEY6jmv%Hi%kZ8W$@|6GZ!8g(ETN`&(HH-J7q#JX=J&2lDH1UBbZZkP^zi(}CP(@)DuD zw9ktFo!i{p*eY*yu{cnE6s378qv$5=CUhj0<-GOmCLYcmt(va5r|LY;3CkiAYNGFd z+Ug)^P%!yu!i9`%?v2nGO;FyDcn5O50NH_IFQDR#w8zc}?YP8QKoflE3>(rLSHR-G zKqKb`Jo^y_>iy=ztosP%s}7RhPIV_Z_z@%BVSR0a4n0}d)k3Pzt;33(8C6K|93T24 zZ#+wCBYy&5W90ff`MtY5MmgR?BX>MEL1YFZon1iNn9MDp!>VkI=SNkDC6LXLMH)}7 zUuF+$quTh?D41Z39s#5|(4X2G+&0h(5vSSOGs!rB zU`^K<2fRzE7*=%UL*Wno=@U>6iDewRyOEHb>&K+5y>{!gs+Acw2`;1cV3SU|t-NwZ zc}Z6nDzE8}e292Jg%rvu08DvR8w0wZ&_bpx7s}t*`1UU6jH}896#{HrmkrlPQEtWt zxm3=MV7c5MJnL=gMXSX7vGwPfD#&2@`0X$_dLr=g`{Ahp9wizBK$Xv6qW@Rcx=DJ=<{!c|KdXtp zQm$Xpzk=fnU?VVuuAc@THmBQ~=V%TOf4+OIihj;{oY5#!K@??-4EkEGN70i(+%IRi zjz>9d#`=62MC1L$jv98jz7y^OxdFq#f{%RMsMOCHYiovo0u#y|$h0p^p_J!12i9C{9{RfEf BIxheK literal 0 HcmV?d00001 diff --git a/TTS/__pycache__/__init__.cpython-310.pyc b/TTS/__pycache__/__init__.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..2dfcfdb331091e55aafb01fbf04f9acf0e352ce6 GIT binary patch literal 189 zcmd1j<>g`kf(NS~CxPh4AOaaM0yz#qT+9L_QW%06G#UL?G8BP?5yYK{PMh<{KS;vn4r{@l+2Q_%#_r8-^A?HBB%Tk-IUa_)SUbRymBES!7=gi fnR%Hd@$q^EmA5!-a`RJ4b5iXwVdx@9(iC^(t9wY(mdAyc~N%(?S zPwG2}`oG|$aRbqS)*d5TJ9LsJbvvjPJ_p;Vg-xx)l*&ZWa?Qkbp~a$*Y)MKXO>>cF ztkC0+se4jvXPm7Hy)4Rtu7YZ)nATabqgqqOzb-RU7;h=hiK*Q$m13M5@1|e_Q@ca7 z-er9g+!UlJhzW0H`4*FWVBBjt?B8ILWQ8`tYStB;fn2G;uyI%R1}3=03Mz^5JB0HL zY?D343evUypB)~2T!pDV1;S8*DM}oQsq+{mE^SbcdD{;4Y48|uqcs`=KcIEMqG`fw z8=ZTC^FbGb^69W^2j(J7H4TK~5lWG^6s&`$vzqVBz=|ktmp0Cz=Ua<6`4-c_pHYjkN`LE@Z9O`+Nb-=CX%F}B2Oz{yH@mc*xa>N=Kvc z5UM~=98J>3F|0Pw1E`6E@Y}HP$NzoYN3=Pr?IHO{PmLTJ9Xbc~QT=FoRHMyVbad_* zSxw-~93yMN#!*Lf;!Vqz4?dh9{D?sgPL1efB@@x9*JZ5_9n?py=~d%bv1s8W>W%9q zElAE}0C*Z#Yn4pB4A>a@;qpDsh+;9+QVc~Buid?KJKiHuO^y?#kj)tVK+K z&odfVF>A-7r=f0DOe9-~jhpwbBtgMSNqEaM-WuE2Np!c=y%H)`=0qp8b(@$gGzpf9 zovdKbPhcd?YbDJ@M@vR>BrDX9ylrnyS!tnP-d}iFvigJG;-qpIN7Ut)v=&Cm0(k3|>ilW^W z`Fw@rJSUndJx_P$0iLoq2SRgQp0#&%&R?^*kwG^1)&H~k;tq2ao^w530w|xoZM$_r z+Ad%MI2rn(X^u;$(i%rL7~k47)(J1i-BZ3(g&Y7hjV|eB09H0+$vHJBAj%5Xsp>J- z-IXo~N?U-CJkoYSR}GZ$*nXysCwi6%bVz=kG9peLRUne;P+1<-pH7nGT#khtbRK17_dqulDv; zr-@*p(Gm34ht4sE-ilY@NeaeT1NOT%cPmuoEQr40v-}8nw_qw8st6A+ygIdNbk+Ug z(OPcRY@4)InWm0+ d^KTBA@Qd*kzO>JkngkNz3lIVuhR~Tg{|^teN~Zt- literal 0 HcmV?d00001 diff --git a/TTS/__pycache__/engine_wrapper.cpython-310.pyc b/TTS/__pycache__/engine_wrapper.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..aad140983655298ebf5412407d4316fdd152c8cc GIT binary patch literal 4383 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 literal 0 HcmV?d00001 diff --git a/TTS/__pycache__/streamlabs_polly.cpython-310.pyc b/TTS/__pycache__/streamlabs_polly.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..d6efb935fd745844655136264eef62949221dd58 GIT binary patch literal 2002 zcmaJ?TW=gS6t?HSn@zG!q0mCn08;4+*a#jgE^X7a>TO$fdr?P`M$Xuqon&UbwY{6} zYQh8CSA+zQfRyl7@sIq3)F=J|LMq2IOCf!;>xw|XsUxaPK#8<@dxIf9uNuJX5o5^Xn1i02R1o~N3nH^=f@u(MF&(kktPsuKEW)=~a` ztMv944-gGbq656=tEJMSjk)z>doL)1{pHf%ZXaNb9zg9l@XXCd%f)_$SC33po9vBY<9r$ygcz!eL@|li*wNX@P&LA?V`?7 zPnaUtwo)=WaWqmj)U$iHGe#r}p(sNrtuW!mAl(Wl1gdZ|V`2a9o%IVhZ(O+8k8j_) zapPfp|JK#D^-%GUz@{vvVHL7&$VV#Wg$#*c=fcRXvH`Nwt;E_%H-H&u(i9XU1oa3Y^BFTvp)oBk`7WvKb(Df=x4>6g7s<#_yHbIm;mp&+0T+; zclJruYeJqRV<8v~6I1ZTR`@Fa!m2tuZ|Q|P@hUHCxV#zy-Mmk-aox2SjVl zse+5om<|McG-gss?Tk1GO{xo%yV@4xLfczRX=hvVLOXoK3hnNSR59&?0mTZXgX?Ts zc`8g-(C$b;@9H#!Y24zNVFiOUVBa$j30{mp~k-!WGNH0d}6BvRk+fs}*e7E4YQ1@R{drkQrV8t2VZtTmQ_Czrw77 ztP3}Lqp6uRTQf$CNrm>It!-Ne=1+iokON+gvG$UoX-yTH!qoLqXWs_i*G7-QqlIVh zy396uV9td@vH&}LxcSp|nMW?nOG+M}qz za$$8ErZn*mP=MQR>y$9uPE(wPmpBC^I(``UE_(O-K`O<3X!>0&C^Oznb?FcmMzZ literal 0 HcmV?d00001 diff --git a/TTS/engine_wrapper.py b/TTS/engine_wrapper.py index 6d09c7a..d09c117 100644 --- a/TTS/engine_wrapper.py +++ b/TTS/engine_wrapper.py @@ -34,13 +34,14 @@ class TTSEngine: self, tts_module, reddit_object: dict, - path: str = "assets/temp/mp3", + path: str = "assets/temp/", max_length: int = DEFAULT_MAX_LENGTH, last_clip_length: int = 0, ): self.tts_module = tts_module() self.reddit_object = reddit_object - self.path = path + self.redditid = re.sub(r"[^\w\s-]", "", reddit_object["thread_id"]) + self.path = path + self.redditid + "/mp3" self.max_length = max_length self.length = 0 self.last_clip_length = last_clip_length diff --git a/main.py b/main.py index 6725540..69dee42 100755 --- a/main.py +++ b/main.py @@ -1,5 +1,6 @@ #!/usr/bin/env python import math +import re from subprocess import Popen from os import name @@ -7,7 +8,7 @@ from prawcore import ResponseException from reddit.subreddit import get_subreddit_threads from utils.cleanup import cleanup -from utils.console import print_markdown, print_step +from utils.console import print_markdown, print_step, print_substep from utils import settings from video_creation.background import ( @@ -36,20 +37,27 @@ print( print_markdown( "### Thanks for using this tool! [Feel free to contribute to this project on GitHub!](https://lewismenelaws.com) If you have any questions, feel free to reach out to me on Twitter or submit a GitHub issue. You can find solutions to many common problems in the [Documentation](https://luka-hietala.gitbook.io/documentation-for-the-reddit-bot/)" ) -print_step(f"You are using v{__VERSION__} of the bot") +print_step(f"You are using v{__VERSION__} of the bot in the {__BRANCH__} branch.") def main(POST_ID=None): - cleanup() reddit_object = get_subreddit_threads(POST_ID) + id(reddit_object) length, number_of_comments = save_text_to_mp3(reddit_object) length = math.ceil(length) download_screenshots_of_reddit_posts(reddit_object, number_of_comments) bg_config = get_background_config() download_background(bg_config) - chop_background_video(bg_config, length) + chop_background_video(bg_config, length, reddit_object) make_final_video(number_of_comments, length, reddit_object, bg_config) +def id(reddit_obj: dict): + """ + This function takes a reddit object and returns the post id + """ + id = re.sub(r"[^\w\s-]", "", reddit_obj["thread_id"]) + print_substep(f"Thread ID is {id}", style="bold blue") + return id def run_many(times): for x in range(1, times + 1): @@ -61,8 +69,6 @@ def run_many(times): def shutdown(): - print_markdown("## Clearing temp files") - cleanup() print("Exiting...") exit() diff --git a/utils/__pycache__/CONSTANTS.cpython-310.pyc b/utils/__pycache__/CONSTANTS.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..b23d621c5aea5ccfc59e2ed56d4e32cbe20c4d94 GIT binary patch literal 1190 zcmb7DO-~a+7~b8Mg$1e2|Xpv(C(R*^Nhk zhJT>(kN6vUl5q0u&3JHTTdM~JoMfJT-^^t8d7k%uNue;Uh;{kt%6h0P%9Tw1T=Mj} z*zBbMq#zY(D2MVNlujN^ARSGjsZnO2X*45FXGeJf-9dNJ94e0T`Hy;2K?@C~w3se; zIS<*!%1Ru^<%C2$vTzv^eX?kA)qdasA+Rh_QTb5 zW(#(crCs1Vfelqb?$?rWPVB1K-)03!&hM4`N=Iub{akIJLmY5SoiE~MU+Jp@mD9Yq zm%(>f-DsUMOj(OLJ_%aeBn~_R5NjP{gdBe6AWRN{i|Gr(O@w>cBjL4Y5qCV+s@7|b zldalGqZ}rKsV5%rEd(|TlB6bJR-sekbF(v#-&Brv-?rP2_V&^uCD6sZ?O|X?IJ0H0 zPA!K6PdbA`42OVz1>^gKXl@Q z^>k)bI?1nTSQd*No?@E)_vV-0?ShJXe!No;cG7uKe3S7g;3fqy6MVfqDy_X<)`S0% zwPUXDdr5t*vPaSaWHvEbL_3+V+?MOyQc`qwaKX``y?=I^7NHk0(T#0RBj{!&yjLSj zRT3uDvAg`1b-abp<*`sbHGINJHcM$?*hA*9hnj|%Ck!d*@Mcc9of>16Lhz8PnNh8k z)WN(3pleeS1*lCz?vQ}}o}^(U+efs!Pf+CHP1$m+EI>0fRa13U`=L#aBmM93^yN=a C#4;fO literal 0 HcmV?d00001 diff --git a/utils/__pycache__/__init__.cpython-310.pyc b/utils/__pycache__/__init__.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..4bbf1e511fc83394c49c5c7c084240deac445568 GIT binary patch literal 191 zcmd1j<>g`kf`_XgCxPh4AOaaM0yz#qT+9L_QW%06G#UL?G8BP?5yY<~XRDad;?$zz znBvUb{Ja>K{PMh<{KS;vn4r{@l+2Q_%#_r8-^A?HBB%Tk-IUa_)SUbRymF-_nK{KV h@$s2?nI-Y@dIgoYIBatBQ%ZAE?Lc-HGXV(}1^}C}G)({i literal 0 HcmV?d00001 diff --git a/utils/__pycache__/cleanup.cpython-310.pyc b/utils/__pycache__/cleanup.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..876d21f374972936716f550b648fa6a2b766e023 GIT binary patch literal 1086 zcmaJ=%}N|W5bo~zb^S?*7m*O=x`*rv2?RtW#1)c*23F!>S&_+huNgBlJ$CnMc9}gX zL~_e55ClE?B6*0pdh!)=2&w8_iC)q}cUN^)eO+B&jhvsa5g0#y-F&=dgxsKVe>kAL zhN&B{aKdRyI=HixW~{>~;SP7tNXOxxaQlq=JUDYZ9;Z8`9^OI>*{;*d7he)>bdTb} zbfE0Q#2fSyEMG~Va?06RXvif!Cs(vZP7%l1eh>(05+CLw1}?*LKuWSVGp2?d(o1$u zN_xe@ct|7Q$Qde#fn@^Q{D3iR-D%M!3X#bj4lqWwtdxi}W7EdFa7m?YKRUMk{zP&A5RRa;A;1U;D*>zKU8 zS1gm!(|tVViE6B+vKOa%9fUi_I#XDoDwz7H8PIIT6KNKW;T?hpnuT4WY5^_25@w+C z2gM7)fQ}pJ{0$ZZoSss(!5I_~%Ez56I%Xv`PRUN`D>9}fYmvQR?10rR!Ai-|B6myj zlW^|>*te2@;T*8BYdqtdpma|mcI=fNL_Qw-r4Re;I4CI(5YZw97U|{DN(mfuAgdmZ z4q74=M(8L`)5wUdkSbQgDArmS9VPixYNDxDi(s_v6ZNW9@F2;}YV=l~L|L2;Mj-{A+4knv``yj`*1Psj=aDt+8@WG$>C8Yw zh@O#ZSh;AMaE`62Ea$rlI)P0+DCy=^< lf5YS*wox1?n)SJN&%evUwM_CsD%SD+8nX`x+~hoQ{{jmQ2ZaCt literal 0 HcmV?d00001 diff --git a/utils/__pycache__/console.cpython-310.pyc b/utils/__pycache__/console.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..6fc80c256f3792aca7b37a06560bed7ce5140fd1 GIT binary patch literal 2939 zcma)8O>7*u6(%{eJF~MtS}96oH;FU#q3t&9wgrkDQp0s>H*f<)Fe*1j*D{3Bl9I-n zpB2fmw2Sd+eM(@UITr;apqC&)k3IJoptt14Tai;P%_#^_G_;A8$LQ*=S6ls>Q)EPOJb`m#jj2f19 zlV<9TJWDqcKW&X#mTo3N+8(tn?IoR2N6u=#*HWw35>Zn#gWFjt9eqSnOYxH6jDD7{tmRO(9}!t z(L~dd%qgdHcAsi??3DBby~9AiGyC}s8E0CBQ7Gf_UKnRPd6){NqFpfzH;Tz5mpWV^ z3e_~z(b4d8)UrNsr3-(F>Wnw83^0ue3LG%wYQSk&%0D2o2Q2@JuD-tcJ0+yrRB@VT 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 literal 0 HcmV?d00001 diff --git a/utils/__pycache__/video.cpython-310.pyc b/utils/__pycache__/video.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..560e7a9e5e7f398e243f2232ace704fc1aecafeb GIT binary patch literal 2181 zcmaJ?%WfP+6s@YRe#}hIc;Yy*Ll6W6iq13pV+O@iL#lKfs1%t&k#tM&bid7KD3i;@~6_WzX&VsOPD3Z&lrHn?P&*{P6p4 z14166ake>NTqA_m-+>~CpgAdMOeyLtXN40xR(En&ECbXVU%H6aa$cUNNH<^&tR-TQY^g^r&a2UOx^02@z<&Zw`=D zr>zePj@d#aegj3&siOf84Hz8L75Gj0SzEBn=yQcL^#q^#n$4UOG7U7Jxx#ID;|^Kl zpE%Rj3!b+2W`5H;q0>&&nFS4Lf)lpGrs1>;b_>RaYe4JEq;Z?>LW8+T<3T@8iEht2 zc66`l%|hWdY>mKNOHF&$ZCb)_mQElU!0I*538aW#YMf&Vw-;<5y}G`U*0t32hL**6 zV_c3l4pJ>uk*d9Qu;$2y$eBNek6Jwy5myxTXNBRnZ(jd+j?Re9FJXt5Q12TjgVbJ{^tce3Hf7Eq$Bn?MR`50TBT(@ zPL+hcavU48gTk<^FkE0FQ~2LCOqPZhX}xDzyb$McxpT=tNq{bSiXT#_z5;@?K3$<4 z{sOj4muVa9H!K%>AOm`|`h=0s&oD=99iW4h^f~x_8N#g5Db*eq3G<(C@`+7 zCZ$j>V|)XI=>WHr)9Vk>I4x1eT2Jx9=f+m6C{Pw$T*3!pM3J1asCYquxIu?>l|V3GZ>=_2|+01qYrPwGC&*>S_yh zMAZe*A@}g35H0mC3VaN}Yq$A6I_zGN0FjSXuuKb?B&MAtMI|OV>S2=nFiG=8M6Ezq zfCFE)K_T^SB`kRADo%#Q`iwxXE3BvpSdE(tNSiV@r0hcfv5jm;OSsr@q9+O#Q&>Wb zrw_+jIkLPo&X>17v!%c$zs-A_;byg{_A@y?Twhdi3kklD766;w=B;PD;AP;e33IQ% k_<|~Xt+?GYN3bWdIU8JEAo3B`EPI%cglrAcGo;JTzh$r=(*OVf literal 0 HcmV?d00001 diff --git a/utils/__pycache__/videos.cpython-310.pyc b/utils/__pycache__/videos.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..2fea084b62095170a4b00f86ca4fcb42bab211c5 GIT binary patch literal 2230 zcmaJ?&2Jk;6rb5Iuh%xD9}=YWV<ouRd2cp$Q`)ktnVmOp=6%24=B-vl;Q8aXCxahD zLY^RT{6X$b7}~(Z38yLPRbSepKs%{3aeFSsJva3xe$TgSFAXNOUd^ukG@R6Xbyx?& z=QZIEJs$G<1FskHNHll@MiWL0#v7tBjQE>;3Ajy8yQF>MDQG5ZZCZM(GBNOty0gJV zYAy2&s89=IWH!>snJSr?zBXc7)|KE~ntZTP21=Nj$`Xo_jvf!b;4rxjL;nDi0q3~G zUG6<}e`@VfLl2ySKB9ZhcZB;M@yI^7nT1!0eruajg6~}zg|kZTUEFgEmj}zlxCPm# zn~u6^ybW-6neY%seVM3hCg9ON+$@L#_qqh=2GS51zf10)FJQ0T-2MIbSR|X8$ssdi z!IE*VMaHJNHf$Vg7N<(Ye1{DL?2bexRBQx~A_mVVYNS`}3aLc^*rj6;TVZ!>U>HP3 zB!-Q0V?feS<&&cuSM+R9-R(?wD#3Sb0FTLjF0fe3Gx1-cGGj5=Vof=Gw{vAna*_8F zu-rh_uJG8z)t>Hb=sYW_I`n5|c=_YUkWi5&Ifsm{m5$_?Jj`Pmm@ztD)-V!%$#>1& ze716g5}9FW!%KNW%i6Wl%cmkM zJ?pZU=HQL1jZ#>PWdJHbzw&`-dn&-a7T)WFGrF(h?Xoc^MXpQV`uLcrWjJ~G{q2?Y zZ?sT)UCT+Ht*_?W87k20Rkpvy1bi893UwY$7gEXzKc z&;X74EKEzyCO!Ksbe8Bz>cHzg3*C?g)cMN`)jQ}xeNjtgh>^|Wi71;@O8Z8dRLmO{ zQVKBujx-6zVE$l}E*kY$AYN$HTYJ83R392OfEM(5@PHJ-Dm391Q5Wh2nzuG@US8`$ z^A)afjc5D={}G(pr-fHQqx0~WV6RpL2SHJLM4?IjgBq{n%FvCl2nwG^9B}HPM_-Z& zknqKENI*U9R(uNZrVDjh)khUcD3uud7^?Nvjm%8WV)l9WtF@{Up*Zc$*Ei3rT7MpD zb_wdMy~4hRdLGJ5>M<0*mB(!G8RlaF7&oUe7W^V*&!OaqGZ*_3<0zq$zm8+IRZNB1 z+;!9k3V$vNi|GYqc3=ZLq6;hh7F!e%!1B(m2`WzE9AY;6PJzx2c zuuuh|zVP;a*wZLrDT-{%F8%HJ4t>KmuS0{wD2(W7dht*7AslMADtjvf&CV1sSz!dr z#uW5-COH?WRxa)UdIMZkNY=9J4&a&2Q(*zkf`RqfNi_@% literal 0 HcmV?d00001 diff --git a/utils/__pycache__/voice.cpython-310.pyc b/utils/__pycache__/voice.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..14a32c857713581aebd73d206da2e8ac8be7e2cb GIT binary patch literal 2315 zcmaJ?TW=dh6yBNL^(~IuqN+_HLPM*zSyCqmiAsdtZ&JlYRnu~DHgz|iaWctzcRMqi zCa#U5rvCsQKv2nkLJQ+hJis|?r!+jU)|{C+b8d6yJIC?lWW|E-_n-e* z>BH&|+`Rrdu(<+5KLx@qPC~0Onn{Deo`$qT8RukeXyR%3!!MU_vAYTMy8eh5w`Ia##4 z!!IBX>obpJB_0@IWJkc-)u9jxGVcnV#E}*+Y!E{RN_68$WF<8|Y7sOs{wT~P7}sHF zA4tzyhg)t?b*?*Y2<#}QC#+r4C&uP>j~HT{fjb1wl=Xwfo#*y0A(koh2+m)?{T409 zGR5s#V&U(robwp&3(*(5+Z6`i^)=Dj&`h?OSrcqOFeWt%n1XACvLnqa{#>qeyUlz-H2CbS7ms++Bti_Dgh$%<xjlM(jN%(V5RT$9KbG7cX(;hGKXPTd<&3DtVh?pa(9^H=uVJo!M5X6u|&nID(JBMbpU!} z1htrmIK$@~A?GYE&mua71iUJc+zdj=*?tAGcx7F*3Yf?_g-LWf94&@DiWMQIN(qrFSGTw&Z?ULH5o@u8MWiAV7mES2{d}bhN1AWGdne{ ztc<+;LaGYP9JZMq#gDT|6PqAxj_;_-sN%K(wk9jz+-ix$fD2^<+jGZiklRKH9o&%Z zwwgu_hvO2fU__4Kss`k37#fM=R_vqn4Z`RYso5n$VZhIINY$o)=CV+5VhhSo36rYm z0Ccg5V^Xi9xm!Ruwlix$dV~YyhIXHFyKmJvyKOPj`rOfft7qr0Bo~zB9Cj z*o;f*Utnx8h@_ESp+~I6yU5`D5DKs$ zKBmiG@|XP?-}5nN7iX7WlG)5j!c@N`XEHm8xaVe6K_}PgN>)@N34<22?)6wk@TZ!D z(s+(K2@y0ZO00^lW~xGs7}IHJ_IY9}QU5`2Ho2eDCMN4DSkPEHPOU~AyGD+Z8ddYa z@M_9~NgYFi)tOhxsLZfz@NfH33dN@tqF5bAf|Z#!=n?R3c%IzYYeD42gmsjaE_7m^ bhT;-76ODdKRtfq%jw-FuDi+j{W2gQB2Jv_E literal 0 HcmV?d00001 diff --git a/utils/cleanup.py b/utils/cleanup.py index 75074b7..f7bde35 100644 --- a/utils/cleanup.py +++ b/utils/cleanup.py @@ -6,7 +6,7 @@ def _listdir(d): # listdir with full path return [os.path.join(d, f) for f in os.listdir(d)] -def cleanup() -> int: +def cleanup(id) -> int: """Deletes all temporary assets in assets/temp Returns: @@ -18,7 +18,7 @@ def cleanup() -> int: count += len(files) for f in files: os.remove(f) - REMOVE_DIRS = ["./assets/temp/mp3/", "./assets/temp/png/"] + REMOVE_DIRS = [f"./assets/temp/{id}/mp3/", f"./assets/temp/{id}/png/"] files_to_remove = list(map(_listdir, REMOVE_DIRS)) for directory in files_to_remove: for file in directory: diff --git a/video_creation/__pycache__/__init__.cpython-310.pyc b/video_creation/__pycache__/__init__.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..cdb725d77fa44acd6ff463b412471667b1f46720 GIT binary patch literal 200 zcmd1j<>g`kf`_XgCxPh4AOaaM0yz#qT+9L_QW%06G#UL?G8BP?5yY=-XRDad;?$zz znBvUb{Ja>K{PMh<{KS;vn4r{@l+2Q_%#_r8-^A?HBB%Tk-IUa_)SUbRymDnA9r4LU nsfi_-Km+6BGxIV_;^XxSDsOSv#t>riH literal 0 HcmV?d00001 diff --git a/video_creation/__pycache__/background.cpython-310.pyc b/video_creation/__pycache__/background.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..2fa9025468abd1f82770a4ca00124a9ae59394c5 GIT binary patch literal 3719 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 WimFTjtX?RJ^1Y%e-<7n|xBmm{LTDoZ literal 0 HcmV?d00001 diff --git a/video_creation/__pycache__/screenshot_downloader.cpython-310.pyc b/video_creation/__pycache__/screenshot_downloader.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..1aa349f8272b9293eabdba402366c35738d23299 GIT binary patch literal 3481 zcmaJ^&2!tv6$e0o1V1HHvTQlFgV<^<#wJxKZS5*?rj6Z9r_*{el^c&?sR+njkq`ka zvbz*TlRyY07SFY5?rMeV@O5 z@9m0Jt0e_~<i;LUkx-{Q!`r5&H*jw>w#e# zDNXnDLBTGhW5YLtqFqeKdA}5t?Q&4DE9t!8SA&{eOUJ6eU@w9m(?1o|?Rv0eF9E%1 zFOw2IP0Dm-S0@!x{he-~A?lXWsC@-KDR&!cqJQYh9)9n59SL7kP$|8zD`33nic#2c zBHtYix!3KtF1Ngxf{-D(+vx*mDdJuz9U*CyRHx%X8>b&6RZa=< zq{G^Kv?G(6=x|Cy(PPpH2SGpboyA~zXzYrramEc6{su6N-A|``dudH zX1t&)o25Ld&#!@{^YC0)Rrp^(*Toc_vwN%H#p|oei#)`Fc#5Fs9C>40JO=+l9i%Ry z)D*wVPjZt|YH96Q-Ft0ZBHwz1h@aXi4&lU%kM{zhJq7s2K__|iDk4%Iu# zj@;HJMU@^@X4uRm5tKUHBr zU`HUfTgq4^Z{1KPsD2edZEj%_~4yY}d-_!-|-Y!g665%EMxzC41Bw(ss+5OG*X|P_<%1 z(jeN1!fvT#!S6@BD>l;+&YmkcYdx*@P3sqF8CqEx0#Ao}`;=I_oCQ;f4KZkEvaM+J zOxxUBtXFFt3cayu-5msN%F+G#y0E}MG7U48kKdg64sGT+&KKftwOX{4>IB3xnuUvM6SKntj90|xUQ!z9OuZ*%BsMoTrsW7i zNqH*iK>j3^*`&?LDE`y>!+D6;FkFx9G+qJk$Cu@GXYJQ1e7ldVP>)G8wJZm)2 z!?p&U4ix+D!1qV3xYTAovATH6fNe5_9QpKa;|*TK`qwy3a@gna-jNtVpLm?-Va)O3 zVVj*E^h0kD*m*x~CU!Zb!)yl+WY$9RkcYcoH_=%{!$imCkm%Ui?XpV<@M8B6wuyof zq`a+nnPm1U=-bZz^aAAwxIu9!dL=3Ntm8tS*dX|39n=r^ zD=7LzgQl17GS>Ae^rC&&9{|-Z&7n$)Y2IP$N{SSkHs!#9Fch&2K8ioU%PiE@b6QC=Reb7NO|57p zwWOL_U9GD%)y%=8)-+w!RPAYAtLvt!t9f-%&3~;MK!dMoRDfI0RD|WMpJ%W1I_x^n!XJ3rKh!A9(1EV?Y}i+?XUbDaHw&XufqoqL)r7aEUWotB<1A@ z+Z@l~1kNtc7is$1%kw*aE4%c&k;e^SvzJaRrFVZ^Ns9wB)vj`{(`!YXL2U_<P2@4(h14DR^gV11;w-#O Vr2>EhRPeV5keTYDrfVy?{{fh)D8v8& literal 0 HcmV?d00001 diff --git a/video_creation/__pycache__/voices.cpython-310.pyc b/video_creation/__pycache__/voices.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..12839d86ed86d08d036c0578a51ee6d6e080d656 GIT binary patch literal 2062 zcmaJ?&2Jnv6t_M5F+01PY|}O+6`)c0P**D9qv8^(h?1g;L#wE}Ez*!`G`se0rtypi z+q-F^L;@ueNc;mFIJCzi@ej?lCr%u=pb8=0^JZyUiF)KW@A>oj_kMm>?RG$*?ELm@ z@KcSDXK0))RWLq>YJLU538#`|G@==c7)6^&FRMfqr+c!R)uNiyE3%&Xk?-`XY-B+c zIK3vDSu1Key)N6?LbTv?UoK{ysN?j8JeMs+OWFD8JSC!XOri_I7cCKp1s?oTi7xV{ zU}9M;kJt(sG2Y_slS*`nFYv_^61~AYJ<>h*JNQewtgPHjhqkQtCxsMUTGlsJZj@6S z{eJJue4OUkUbzJp{1-=`nrmJt4NjE4+F_Z1tE;iC(oeTenr{WryUL9kE09xb=keNP}3P z*N-VBwgF@DA8`Me9(jk}={k)w>wK11ZIcH$?%Q`x*YsXpv)erQqnAvD39Wc!L#x8u zTi3!-Dur1Kf)L6LJvQr3LrV+JQyZ(n!|+OXJ-qA85KJ+&&^Z+8RPb=5RdzZwys`CF znC7R}hh{REEwNVY&(^=|&^xn*#W;Th(YOlr!FqVbDx1hqihOK$LNyBQjtG+pPt{eY z=96q7GrxF9X*NKa4euX(vLyvLAHty({8SEghAEs!sy(<6AzY-e&XROxe zU|{KGNl~`Im#w)g8gp6s_E^{$0}!XV5xGe%kS^X8`|&i96QNtURTD>6)4Z5K>TvhD z^zf`M^D4NPVF&Xjh^62%?NC2pfB6)@Wy(OZ=bgGw z^}8@&i1C>h)G;-9P~CJ(ejp=A4xF9%z%u%T+$6`8!_|i*=-qhT)ib7~dp~%M$d@nS-nD98E3A{UfHsS)`4VU7hHg+X@=Cloci2`h!JtMOxpgOUs zG&3Hzo&KL6$V11-vOaeWIa7L&+#EUFiO!JC-5mq~?s%s7M2ZbeMrIX6hqdsd^RGi| Q9`hI=!)WdAWxuuZFQK^><^TWy literal 0 HcmV?d00001 diff --git a/video_creation/background.py b/video_creation/background.py index 6e656fa..1676f97 100644 --- a/video_creation/background.py +++ b/video_creation/background.py @@ -1,6 +1,7 @@ from pathlib import Path import random from random import randrange +import re from typing import Any, Tuple @@ -62,7 +63,7 @@ def download_background(background_config: Tuple[str, str, str, Any]): print_substep("Background video downloaded successfully! 🎉", style="bold green") -def chop_background_video(background_config: Tuple[str, str, str, Any], video_length: int): +def chop_background_video(background_config: Tuple[str, str, str, Any], video_length: int, reddit_object: dict): """Generates the background footage to be used in the video and writes it to assets/temp/background.mp4 Args: @@ -72,7 +73,7 @@ def chop_background_video(background_config: Tuple[str, str, str, Any], video_le print_step("Finding a spot in the backgrounds video to chop...✂️") choice = f"{background_config[2]}-{background_config[1]}" - + id = re.sub(r"[^\w\s-]", "", reddit_object["thread_id"]) background = VideoFileClip(f"assets/backgrounds/{choice}") start_time, end_time = get_start_and_end_times(video_length, background.duration) @@ -81,12 +82,12 @@ def chop_background_video(background_config: Tuple[str, str, str, Any], video_le f"assets/backgrounds/{choice}", start_time, end_time, - targetname="assets/temp/background.mp4", + targetname=f"assets/temp/{id}/background.mp4", ) except (OSError, IOError): # ffmpeg issue see #348 print_substep("FFMPEG issue. Trying again...") with VideoFileClip(f"assets/backgrounds/{choice}") as video: new = video.subclip(start_time, end_time) - new.write_videofile("assets/temp/background.mp4") + new.write_videofile(f"assets/temp/{id}/background.mp4") print_substep("Background video chopped successfully!", style="bold green") return background_config[2] diff --git a/video_creation/data/videos.json b/video_creation/data/videos.json index fe51488..c48ebec 100644 --- a/video_creation/data/videos.json +++ b/video_creation/data/videos.json @@ -1 +1,114 @@ -[] +[ + { + "subreddit": "AskReddit", + "id": "wau5wa", + "time": "1659091419", + "background_credit": "bbswitzer", + "reddit_title": "which animal should go extinct", + "filename": "which animal should go extinct.mp4" + }, + { + "subreddit": "AskReddit", + "id": "waemn4", + "time": "1659091617", + "background_credit": "bbswitzer", + "reddit_title": "What if you found the Death Note", + "filename": "What if you found the Death Note.mp4" + }, + { + "subreddit": "AskReddit", + "id": "wad2a5", + "time": "1659091827", + "background_credit": "bbswitzer", + "reddit_title": "What single ingredient will spoil an entire meal for you if its included", + "filename": "What single ingredient will spoil an entire meal for you if its included.mp4" + }, + { + "subreddit": "AskReddit", + "id": "wav2ge", + "time": "1659092067", + "background_credit": "bbswitzer", + "reddit_title": "You are held at gunpoint and your kidnappers will not kill you if you can speak about a topic for 30 minutes straight What are you talking about", + "filename": "You are held at gunpoint and your kidnappers will not kill you if you can speak about a topic for 30 minutes straight What are you talking about.mp4" + }, + { + "subreddit": "AskReddit", + "id": "wag2zd", + "time": "1659092442", + "background_credit": "bbswitzer", + "reddit_title": "Men what advice do you have for men whose wives want to bring a third into the bedroom", + "filename": "Men what advice do you have for men whose wives want to bring a third into the bedroom.mp4" + }, + { + "subreddit": "AskReddit", + "id": "waa1bn", + "time": "1659092709", + "background_credit": "bbswitzer", + "reddit_title": "Whats a quote from history that gives you chills", + "filename": "Whats a quote from history that gives you chills.mp4" + }, + { + "subreddit": "AskReddit", + "id": "wabnds", + "time": "1659093024", + "background_credit": "bbswitzer", + "reddit_title": "What immediately makes you think less of someone", + "filename": "What immediately makes you think less of someone.mp4" + }, + { + "subreddit": "AskReddit", + "id": "waheci", + "time": "1659093225", + "background_credit": "bbswitzer", + "reddit_title": "Whats your wildest story that sounds too far-fetched to be true", + "filename": "Whats your wildest story that sounds too far-fetched to be true.mp4" + }, + { + "subreddit": "AskReddit", + "id": "watszs", + "time": "1659093457", + "background_credit": "bbswitzer", + "reddit_title": "Whats the best response to I hate you", + "filename": "Whats the best response to I hate you.mp4" + }, + { + "subreddit": "AskReddit", + "id": "waf9bi", + "time": "1659093744", + "background_credit": "bbswitzer", + "reddit_title": "What is something fucked up that we just ignore", + "filename": "What is something fucked up that we just ignore.mp4" + }, + { + "subreddit": "AskReddit", + "id": "wax7i4", + "time": "1659094206", + "background_credit": "bbswitzer", + "reddit_title": "If your life was a game what would loading screen tips be", + "filename": "If your life was a game what would loading screen tips be.mp4" + }, + { + "subreddit": "AskReddit", + "id": "walxy5", + "time": "1659094418", + "background_credit": "bbswitzer", + "reddit_title": "Whats your trick for falling asleep", + "filename": "Whats your trick for falling asleep.mp4" + }, + { + "subreddit": "AskReddit", + "id": "wb1rql", + "time": "1659094606", + "background_credit": "bbswitzer", + "reddit_title": "Enough sex questions whats your favourite fruit and why", + "filename": "Enough sex questions whats your favourite fruit and why.mp4" + }, + { + "subreddit": "AskReddit", + "id": "way799", + "time": "1659094868", + "background_credit": "bbswitzer", + "reddit_title": "You have to survive a horror movie with just one weapon What is your weapon of choice", + "filename": "You have to survive a horror movie with just one weapon What is your weapon of choice.mp4" + } +] \ No newline at end of file diff --git a/video_creation/final_video.py b/video_creation/final_video.py index fd12642..1384f4d 100755 --- a/video_creation/final_video.py +++ b/video_creation/final_video.py @@ -62,21 +62,22 @@ def make_final_video( # except (TypeError, KeyError): # print('No background audio volume found in config.toml. Using default value of 1.') # VOLUME_MULTIPLIER = 1 + id = re.sub(r"[^\w\s-]", "", reddit_obj["thread_id"]) print_step("Creating the final video 🎥") VideoFileClip.reW = lambda clip: clip.resize(width=W) VideoFileClip.reH = lambda clip: clip.resize(width=H) opacity = settings.config["settings"]["opacity"] transition = settings.config["settings"]["transition"] background_clip = ( - VideoFileClip("assets/temp/background.mp4") + VideoFileClip(f"assets/temp/{id}/background.mp4") .without_audio() .resize(height=H) .crop(x1=1166.6, y1=0, x2=2246.6, y2=1920) ) # Gather all audio clips - audio_clips = [AudioFileClip(f"assets/temp/mp3/{i}.mp3") for i in range(number_of_clips)] - audio_clips.insert(0, AudioFileClip("assets/temp/mp3/title.mp3")) + audio_clips = [AudioFileClip(f"assets/temp/{id}/mp3/{i}.mp3") for i in range(number_of_clips)] + audio_clips.insert(0, AudioFileClip(f"assets/temp/{id}/mp3/title.mp3")) audio_concat = concatenate_audioclips(audio_clips) audio_composite = CompositeAudioClip([audio_concat]) @@ -88,7 +89,7 @@ def make_final_video( new_transition = 0 if transition is None or float(transition) > 2 else float(transition) image_clips.insert( 0, - ImageClip("assets/temp/png/title.png") + ImageClip(f"assets/temp/{id}/png/title.png") .set_duration(audio_clips[0].duration) .resize(width=W - 100) .set_opacity(new_opacity) @@ -98,7 +99,7 @@ def make_final_video( for i in range(0, number_of_clips): image_clips.append( - ImageClip(f"assets/temp/png/comment_{i}.png") + ImageClip(f"assets/temp/{id}/png/comment_{i}.png") .set_duration(audio_clips[i + 1].duration) .resize(width=W - 100) .set_opacity(new_opacity) @@ -139,11 +140,11 @@ def make_final_video( # # lowered_audio = audio_background.multiply_volume( # todo get this to work # # VOLUME_MULTIPLIER) # lower volume by background_audio_volume, use with fx # final.set_audio(final_audio) - final = Video(final).add_watermark( + '''final = Video(final).add_watermark( text=f"Background credit: {background_config[2]}", opacity=0.4 - ) + )''' # todo add watermark final.write_videofile( - "assets/temp/temp.mp4", + f"assets/temp/{id}/temp.mp4", fps=30, audio_codec="aac", audio_bitrate="192k", @@ -151,14 +152,14 @@ def make_final_video( threads=multiprocessing.cpu_count(), ) ffmpeg_extract_subclip( - "assets/temp/temp.mp4", + f"assets/temp/{id}/temp.mp4", 0, length, targetname=f"results/{subreddit}/{filename}", ) save_data(subreddit, filename, title, idx, background_config[2]) print_step("Removing temporary files 🗑") - cleanups = cleanup() + cleanups = cleanup(id) print_substep(f"Removed {cleanups} temporary files 🗑") print_substep("See result in the results folder!") diff --git a/video_creation/screenshot_downloader.py b/video_creation/screenshot_downloader.py index 7898e8d..0542c49 100644 --- a/video_creation/screenshot_downloader.py +++ b/video_creation/screenshot_downloader.py @@ -1,6 +1,7 @@ import json from pathlib import Path +import re from typing import Dict from utils import settings from playwright.async_api import async_playwright # pylint: disable=unused-import @@ -24,9 +25,9 @@ def download_screenshots_of_reddit_posts(reddit_object: dict, screenshot_num: in screenshot_num (int): Number of screenshots to download """ print_step("Downloading screenshots of reddit posts...") - + id = re.sub(r"[^\w\s-]", "", reddit_object["thread_id"]) # ! Make sure the reddit screenshots folder exists - Path("assets/temp/png").mkdir(parents=True, exist_ok=True) + Path(f"assets/temp/{id}/png").mkdir(parents=True, exist_ok=True) with sync_playwright() as p: print_substep("Launching Headless Browser...") @@ -72,11 +73,12 @@ def download_screenshots_of_reddit_posts(reddit_object: dict, screenshot_num: in else: print_substep("Skipping translation...") - page.locator('[data-test-id="post-content"]').screenshot(path="assets/temp/png/title.png") + postcontentpath = f"assets/temp/{id}/png/title.png" + page.locator('[data-test-id="post-content"]').screenshot(path= postcontentpath) if storymode: page.locator('[data-click-id="text"]').screenshot( - path="assets/temp/png/story_content.png" + path=f"assets/temp/{id}/png/story_content.png" ) else: for idx, comment in enumerate( @@ -104,7 +106,7 @@ def download_screenshots_of_reddit_posts(reddit_object: dict, screenshot_num: in ) try: page.locator(f"#t1_{comment['comment_id']}").screenshot( - path=f"assets/temp/png/comment_{idx}.png" + path=f"assets/temp/{id}/png/comment_{idx}.png" ) except TimeoutError: del reddit_object["comments"]