一、哔哔一下,马上出发
作为一名偷懒爱好者,
不喜欢做重复的工作,
一直信奉一个理念:
复杂的事情简单化,
简单的事情标准化,
标准的事情流程化,
流程化然后自动化。
如何思考:
第一步,复杂问题简单化,解剖,理解,分解成一个个小的简单问题
第二步,简单问题数量化,分门别类,归类成,共有数量多少的简单问题
第三步,根据数量化归分好的,分别做一种程序,就像编程,流水线一样,固化,提高时效。
第四步,程序化的各个分支,进行关系建立,形成解决原本复杂问题的一套体系,一套方法论。
没有简单,就没有复杂。复杂的事情实际上是由简单的事情组成的,因此思考时候要从简单出着手,一个个的简单要素突破之后,复杂的问题也就解决了。
二、流程分析
流程分析也是一个进行深入的思考的过程
1、灵感收集 2、搭建骨架 3、框架填充 4、按照框架自动化
三、脚本分析
使用工具:
OBS Studio
神级代码编辑软件(Sublime Text)
神级文件比较软件(UltraCompare)
开发工具PyCharm
1、使用OBS Studio导出脚本
新建OBS场景,简单一点,建两个场景,两个是为了方便对比,每个场景里面一张素材,然后导出。
2、使用Sublime Text打开OBS脚本
Sublime Text的jsFormat插件,解析脚本。查看脚本,寻找规律
3、手动分析脚本,尝试可行性
第一步 手动拆解脚本
第二步 手动添加尝试
第三步 OBS测试可行性
四、开发实践
开发很简单,生成的脚本是压缩过的文本。
第一步 尝试编写代码
party = input('请输入会议名称:')
name = input('请输入场景名称:')
imgname = input('请输入图片名称:')
num = int(input('请输入幻灯片页数:'))
sab=''
sdatas =''
sa = '{"current_program_scene":"%s","current_scene":"%s","current_transition":"渐变","groups":[],"modules":{"auto-scene-switcher":{"active":false,"interval":300,"non_matching_scene":"","switch_if_not_matching":false,"switches":[]},"captions":{"enabled":false,"lang_id":2052,"provider":"mssapi","source":""},"decklink_captions":{"source":""},"output-timer":{"autoStartRecordTimer":false,"autoStartStreamTimer":false,"pauseRecordTimer":true,"recordTimerHours":0,"recordTimerMinutes":0,"recordTimerSeconds":30,"streamTimerHours":0,"streamTimerMinutes":0,"streamTimerSeconds":30},"scripts-tool":[]},"name":"%s","preview_locked":false,"quick_transitions":[{"duration":300,"fade_to_black":false,"hotkeys":[],"id":4,"name":"裁切"},{"duration":300,"fade_to_black":false,"hotkeys":[],"id":5,"name":"渐变"},{"duration":300,"fade_to_black":true,"hotkeys":[],"id":6,"name":"渐变"}],"saved_projectors":[],"scaling_enabled":false,"scaling_level":0,"scaling_off_x":0.0,"scaling_off_y":0.0,"scene_order":['%(name,name,party)
sb = '],"sources":['
sc = '{"balance":0.5,"deinterlace_field_order":0,"deinterlace_mode":0,"enabled":true,"flags":0,"hotkeys":{},"id":"image_source","mixers":0,"monitoring_type":0,"muted":false,'
sd = '"prev_ver":453050371,"private_settings":{},"push-to-mute":false,"push-to-mute-delay":0,"push-to-talk":false,"push-to-talk-delay":0,"settings":'
se = '"sync":0,"versioned_id":"image_source","volume":1.0},{"balance":0.5,"deinterlace_field_order":0,"deinterlace_mode":0,"enabled":true,"flags":0,"hotkeys":'
sf = '"id":"scene","mixers":0,"monitoring_type":0,"muted":false,'
sg = '"prev_ver":453050371,"private_settings":{},"push-to-mute":false,"push-to-mute-delay":0,"push-to-talk":false,"push-to-talk-delay":0,"settings":{"custom_size":false,"id_counter":1,"items":[{"align":5,"bounds":{"x":1920.0,"y":1080.0},"bounds_align":0,"bounds_type":2,"crop_bottom":0,"crop_left":0,"crop_right":0,"crop_top":0,"group_item_backup":false,"hide_transition":{"duration":0},"id":1,"locked":false,'
sh = '"pos":{"x":0.0,"y":0.0},"private_settings":{},"rot":0.0,"scale":{"x":1.0,"y":1.0},"scale_filter":"disable","show_transition":{"duration":0},"visible":true}]},"sync":0,"versioned_id":"scene","volume":1.0},'
si = '],"transition_duration":300,"transitions":[]}'
for i in range(1,num+1):
saa = '{"name":"%s%d"},'%(name,i)
sab +=saa
scc = '"name":"%s%d",'%(imgname,i)
sdd = '{"file":"幻灯片%d.jpg"},'%(i)
see=' {"OBSBasic.SelectScene": [], "libobs.hide_scene_item.%s%d": [],"libobs.show_scene_item.%s%d": []},'%(imgname,i,imgname,i)
sff= '"name":"%s%s",'%(name,i)
sdata = sc+scc+sd+sdd+se+see+sf+sff+sg+scc+sh
sdatas +=sdata
datas = sa + sab[:-1] + sb + sdatas[:-1] + si
print(datas)
f = open('huandengpian.json',mode='w',encoding='utf-8')
f.write(datas)
第二步 脚本测试对比
此阶段是一个反反复复的过程,生成的脚本导入OBS,UltraCompare分析比较在和之前成功的脚本进行对比。
第三步 调试优化
以下省略无数步繁琐操作
第四步 脚本封装
每次使用Pycharm太麻烦,尝试封装成exe程序,在未安装python的电脑上也可以使用
五、迭代优化
初步实现了脚本自动化并不是一劳永逸的事情,不同的场景需要进行优化。
世界上并没有完美的程序,因为写程序本来就是一个不断追求完美的过程。
在自我更新迭代中成长,每一次程序升级,都会把学到的经验写成代码,进行归档,你当成长,且自有力量。