Sorry,有钱真的可以为所欲为 ~

news/2024/7/10 22:28:16 标签: python, Sorry, ffmpeg, Sorrypy, Jinja2
原文地址为: Sorry,有钱真的可以为所欲为 ~

  • sorry,有钱真的可以为所欲为 ~
    • 源起
    • python版关键点
      • 1. jinja2模板渲染自定义ass
      • 2. ffmpeg根据MP4和ass生成gif
    • 完整源码

sorry,有钱真的可以为所欲为 ~

源起

sorry是一款很有意思的应用,源自于sorry,有钱真的可以为所欲为这个梗。
亮点是可以换自己的梗生成gif。
可惜部署环境是ubuntu+ruby,我就重制了个全平台的python重置版sorrypy(
Github & 码云)博大家一笑。
荣誉首先属于xtyxtyx

Hardy兄弟的NodeJs版:node-sorry也非常好用,有DEMO为证,嘎嘎。

sorry 原版网站 生成的样例:

大

python版关键点

1. jinja2模板渲染自定义ass

python">def render_ass(template_name, sentences, filename):
    output_file_path = "static/cache/%s.ass" % filename
    template = ass_text(template_name)
    rendered_ass_text = Template(template).render(sentences=sentences)
    with open(output_file_path, "w", encoding="utf8") as fp:
        fp.write(rendered_ass_text)
    return output_file_path

2. ffmpeg根据MP4和ass生成gif

python">def make_gif_with_ffmpeg(template_name, sentences, filename):
    ass_path = render_ass(template_name, sentences, filename)
    gif_path = "static/cache/" + filename
    video_path = "static/" + template_name + "/template.mp4"
    print(ass_path, gif_path, video_path)
    cmd = "ffmpeg -i {video_path} -r 8 -vf ass={ass_path},scale=300:-1 -y {gif_path}" \
        .format(video_path=video_path, ass_path=ass_path, gif_path=gif_path)
    print(cmd)
    p = Popen(cmd, shell=True, stdout=PIPE, stderr=PIPE)
    p.wait()
    if p.returncode != 0:
        print("Error.")
    return -1

完整源码

Ruby原版:sorry Github
Python版:sorrypy Github & 码云

欢迎 star & fork ,哈哈~~


版权声明:转载必须注明本文转自 East196 的博客:http://blog.csdn.net/east196


转载请注明本文地址: Sorry,有钱真的可以为所欲为 ~

http://www.niftyadmin.cn/n/1167147.html

相关文章

Lua Web快速开发指南(8) - 利用httpd提供Websocket服务

Websocket的技术背景 WebSocket是一种在单个TCP连接上进行全双工通信的协议, WebSocket通信协议于2011年被IETF定为标准RFC 6455并由RFC7936补充规范. WebSocket使得客户端和服务器之间的数据交换变得更加简单, 使用WebSocket的API只需要完成一次握手就直接可以创建持久性的连接…

抽象类和接口的异同点

接口和抽象类的区别: (1)抽象类可以有构造方法,接口中不能有构造方法。 (2)抽象类中可以有普通成员变量,接口中没有普通成员变量 (3)抽象类中可以包含静态方法&#xff0…

vs2012 error LNK2038 RuntimeLibrary 不匹配的解决

原文地址为: vs2012 error LNK2038 RuntimeLibrary 不匹配的解决在工程上右键-》属性-》c/c-》代码生成-》运行库 改成(release为MT,debug为MTD)即可解决: error LNK2038: 检测到“RuntimeLibrary”的不匹配项: 值“MT…

在JSP中使用jQuery的冲突解决(收集整理)

在JSP中使用<jsp:include page"somethingPage.jsp"></jsp>来嵌套页面的时候&#xff0c;会出现jQuery之间的冲突 解决办法&#xff1a; 在需要嵌套的页面中有jQuery引入冲突问题的地方做如下处理&#xff1a; var $jq jQuery.noConflict(); $jq(documen…

spring MVC 上传图片 DEMO

原文地址为&#xff1a; spring MVC 上传图片 DEMOHTML 页面&#xff1a; <%--Created by IntelliJ IDEA.User: johnDate: 14-9-1Time: 下午4:49To change this template use File | Settings | File Templates. --%> <% page contentType"text/html;charsetUTF-…

Javascript 严格模式详解(转)

一、概述 除了正常运行模式&#xff0c;ECMAscript 5添加了第二种运行模式&#xff1a;"严格模式"&#xff08;strict mode&#xff09;。顾名思义&#xff0c;这种模式使得Javascript在更严格的条件下运行。 设立"严格模式"的目的&#xff0c;主要有以下几…

Sublime Text3 注册码激活码(持续更新中2018-6-5)

原文地址为&#xff1a; Sublime Text3 注册码激活码(持续更新中2018-6-5)Sublime Text 3的注册码 个人记录,便于查找 6月5版本又来了 CSDN下载Sublime Text3破解版传送门:https://download.csdn.net/download/qq_29819449/10473189 *此方法为国外用户的推荐(最新) 主要意思就是…

02-CSS基础与进阶-day7_2018-09-07-20-15-37

盒子模型布局稳定性 1 什么时候用内边距 什么时候用外边距 绝大多数情况下可以混用&#xff0c;想用什么就用什么&#xff0c;但是总有一个 最好用的&#xff0c;建议 优先使用width > padding > margin浮动(float) 1 标准流&#xff08;文档流 普通流&#xff09; 一个网…