def make_crab(self, t, u_id): """Non blocking crab rave video generation from DankMemer bot https://github.com/DankMemer/meme-server/blob/master/endpoints/crab.py """ fp = str(cog_data_path(self) / f"Verdana.ttf") clip = VideoFileClip(str(cog_data_path(self)) + "/template.mp4") text = TextClip(t[0], fontsize=48, color="white", font=fp) text2 = ( TextClip("____________________", fontsize=48, color="white", font=fp) .set_position(("center", 210)) .set_duration(15.4) ) text = text.set_position(("center", 200)).set_duration(15.4) text3 = ( TextClip(t[1], fontsize=48, color="white", font=fp) .set_position(("center", 270)) .set_duration(15.4) ) video = CompositeVideoClip( [clip, text.crossfadein(1), text2.crossfadein(1), text3.crossfadein(1)] ).set_duration(15.4) video.write_videofile( str(cog_data_path(self)) + f"/{u_id}crabrave.mp4", threads=1, preset="superfast", verbose=False, logger=None, temp_audiofile=str(cog_data_path(self) / "crabraveaudio.mp3") ) clip.close() video.close() return True
def generate(self, avatars, text, usernames, kwargs): raise BadRequest( "Crab endpoint is disabled on flare's imgen instance. Use trustys crab rave cog or host your own imgen." ) name = uuid.uuid4().hex + '.mp4' @after_this_request def remove(response): # pylint: disable=W0612 try: os.remove(name) except (FileNotFoundError, OSError, PermissionError): pass return response t = text.upper().replace(', ', ',').split(',') if len(t) != 2: raise BadRequest( 'You must submit exactly two strings split by comma') if (not t[0] and not t[0].strip()) or (not t[1] and not t[1].strip()): raise BadRequest('Cannot render empty text') clip = VideoFileClip("assets/crab/template.mp4") text = TextClip(t[0], fontsize=48, color='white', font='Symbola') text2 = TextClip("____________________", fontsize=48, color='white', font='Verdana')\ .set_position(("center", 210)).set_duration(15.4) text = text.set_position(("center", 200)).set_duration(15.4) text3 = TextClip(t[1], fontsize=48, color='white', font='Verdana')\ .set_position(("center", 270)).set_duration(15.4) video = CompositeVideoClip([ clip, text.crossfadein(1), text2.crossfadein(1), text3.crossfadein(1) ]).set_duration(15.4) video.write_videofile(name, threads=4, preset='superfast', verbose=False) clip.close() video.close() return send_file(name, mimetype='video/mp4')
def gencrabrave(self, t, filename): clip = VideoFileClip("crabtemplate.mp4") text = TextClip(t[0], fontsize=48, color='white', font='Verdana') text2 = TextClip("____________________", fontsize=48, color='white', font='Verdana')\ .set_position(("center", 210)).set_duration(15.4) text = text.set_position(("center", 200)).set_duration(15.4) text3 = TextClip(t[1], fontsize=48, color='white', font='Verdana')\ .set_position(("center", 270)).set_duration(15.4) video = CompositeVideoClip([ clip, text.crossfadein(1), text2.crossfadein(1), text3.crossfadein(1) ]).set_duration(15.4) video.write_videofile(filename, threads=25, preset='superfast', verbose=False) clip.close() video.close()
def process_clip(): clip = VideoFileClip("assets/crabrave.mp4") text = TextClip(self._trunc(top_text).upper(), fontsize=48, color='white', font='Symbola').set_position( ("center", 200)).set_duration(15.4) text2 = TextClip("____________________", fontsize=48, color='white', font='Verdana')\ .set_position(("center", 210)).set_duration(15.4) text3 = TextClip(self._trunc(bottom_text).upper(), fontsize=48, color='white', font='Verdana').set_position( ("center", 270)).set_duration(15.4) video = CompositeVideoClip([ clip, text.crossfadein(1), text2.crossfadein(1), text3.crossfadein(1) ]).set_duration(15.4) return video, [text, text2, text3, clip]
method='caption', align='center').set_pos("center") text_clip = text_clip.set_duration(audio_duration) text_clip = text_clip.set_audio(audio) video_clip = VideoFileClip(f'../{videos}') video_duration = video_clip.duration isf_logo = ImageClip( '/home/sr1/Projects/Others/videoAUTO/scripts/mediaFiles/isf.png' ).set_duration(video_duration) render = CompositeVideoClip([ video_clip.set_start(audio_duration), isf_logo.set_start(audio_duration).set_pos(('left', 'bottom')), text_clip.crossfadein(1).crossfadeout(1) ], bg_color=[128, 0, 0]) render.write_videofile(f'{num}.mp4') videos_list.append(f'{num}.mp4') num += 1 run('rm ../*.mp4', shell=True) run('mv *.mp4 ../.', shell=True) chdir('..') run(['rm', '-rf', './tmpVids']) videos = [] for video in videos_list: video = VideoFileClip(video)