Milowork Wiki 3 / Zh / Python代码

Python 代码

如无特殊说明,适用于Python 3.8以上版本

多媒体

Uasset 转 Wav

本程序用于提取在虚幻引擎商城购买的音效包,请按需修改,出于版权,请勿随意分发提取结果

import os
d1=r'D:\Unreal Projects\Rooftile\Content\8bit16bitSoundFX\SoundWav\\' # \\结尾
d2=r'D:\Unreal Projects\Rooftile\Content\8bit16bitSoundFX\wav\\'
for  n0 in os.listdir(d1):
 for n1 in os.listdir(d1+n0+'\\'):
  ua='-Audio.uasset'
  if len(n1)<len(ua) or n1[-len(ua):]!=ua: continue
  n2=n1[:-len(ua)]+'.wav'
  with  open(d1+n0+'\\'+n1,'rb') as f1:
   with open(d2        +n2,'wb') as f2:
    c1=f1.read(); c2=c1[c1.find(b'WAVEfmt'):-4]
    f2.write(b'RIFF'+len(c2).to_bytes(4,'little')+c2)
    print('%s OK'%n2)
print('-ENTER-');input()

LRC 制作器

txt="""あの曲がり角を片足に宙返り中華街
素敵なあなたに届けたい愛の小籠包
美味しいものを食べたシェシェ
トキメキ胸にまでニーハオ""" # 按需修改这里
from time import time, sleep
print('欢迎使用LRC制作器,请按Enter键继续')
t0=time(); txt2=""
print('请在3秒后按下播放按钮……'); sleep(1)
print('请在2秒后按下播放按钮……'); sleep(1)
print('请在1秒后按下播放按钮……'); sleep(1)
for l in txt.splitlines():
  print('[  :  .   ]'+l,end='')
  input(); t=time()-t0
  l2='[%02d:%02d.%03d]'%(t//60,t%60,(t%1)*1000)+l
  print(l2); txt2+=l2+'\n'
print('以下是LRC:'); print(txt2)
print('以上是LRC;输入q,然后按Enter退出……')
while(not input()): pass

音乐裁剪时间计算

print("输入BPM:"); bpm=input()
print("输入固定一侧的开始/结束时间:"); a=input().split(":")
a=(int(a[0])*3600+int(a[1])*60+float(a[2]))if len(a)==3 else (int(a[0])*60+float(a[1]))if len(a)==2 else float(a[0])
print(a)
print("输入浮动一侧的开始/结束时间:"); b=input().split(":")
b=(int(b[0])*3600+int(b[1])*60+float(b[2]))if len(b)==3 else (int(b[0])*60+float(b[1]))if len(b)==2 else float(b[0])
print(b)
print("单拍时间长度:",c:=(60/float(bpm)))
print("拍数:",(b-a)/c)
print("取整后的拍数:",d:=round(float((b-a)/c)))
print("取整后的浮动一侧的开始/结束时间:","%.5f"%(a+d*c))

嵌入式

使代码在树莓派 Pico 上执行

把下列代码保存成 .py 文件,然后执行:

import sys, serial
class pico(serial.Serial):
  def exec(self, str):
    self.write(("exec('''"+str.replace('\\','\\\\').replace('\n',r'\r').replace("'''",r"\'\'\'")+"''')\r\n").encode("utf8"))
    return b"".join(self.readlines()[1:-1]).decode(encoding="utf8").replace("Traceback (most", "Traceback of Pico (most")[:-2]
piko=pico("COM3",115200,timeout=1) # comport/baudrate/timeout
with open(__file__) as f: str=f.read(); print(piko.exec(str[str.find("# Following code run on Pi"+"co #"):]))
piko.close(); sys.exit()
# Following code run on Pico #

提示:如报错 ENOMEM 不一定是内存耗尽,可能是某项资源耗尽,譬如 PIO 的 32*32 位程序内存