代码很简单,不再解释了,在mac机上实测通过

import web
from web import form
import tempfile
import urllib2
import subprocessimport os,re,timedef make_text(string):return stringurls = ('/', 'tutorial', '/download/(.*)', 'download')
render = web.template.render('templates/')
app = web.application(urls, globals())def checkurl0(d):if d.clipmp3==None: return Falseif d.clipmp3[:7].lower()!="http://": return Falsereturn Truedef checkurl1(d):if d.fullmp3==None: return Falseif d.fullmp3[:7].lower()!="http://": return Falsereturn Truedef checkurl2(d):if d.fulllyric==None: return Falseif d.fulllyric[:7].lower()!="http://": return Falsereturn Truemy_form = form.Form(form.Textbox("clipmp3",description='music clip url:', size=50, id='clipmp3', value='http://localhost:8080/download/4.wav'),form.Textbox("fullmp3",description='full music url:', size=50, id='fullmp3', value='http://localhost:8080/download/3.wav'),form.Textbox("fulllyric",description='full lyric url:', size=50, id='fulllyric', value='http://localhost:8080/download/1.lrc'),validators = [ form.Validator("clip mp3 url illegal", checkurl0),form.Validator("full mp3 url illegal", checkurl1),form.Validator("full lyric url illegal", checkurl2) ])
BUF_SIZE = 262144
class download:def GET(self,path):try:f = open("down/%s"%path, "rb")web.header('Content-Type','application/octet-stream')web.header('Content-disposition', 'attachment; filename=%s'%path)while True:c = f.read(BUF_SIZE)if c:yield celse:breakexcept Exception, e:print eyield 'Error'finally:if f:f.close()
class tutorial:def GET(self):myform = my_form()return render.tutorial(myform, "Please fill song information into form up here.")def download(self,var):url=self.inp[var]mp3file = urllib2.urlopen(url)fileext=url.rsplit('.',1)[-1]fileext=fileext.split('#?%%&/\\',1)[0]self.files[var]='.'.join([self.tmpdir,var,fileext])output = open(self.files[var],'wb')output.write(mp3file.read())output.close()def getMp3Data(self):self.files={}self.download("clipmp3")self.download("fullmp3")self.download("fulllyric")def lyricsparser(self):for sentence in file(self.files["fulllyric"]):sentence = sentence.strip()if len(sentence)==0: continuewhile True:timestamp,sentence = re.findall("(?:\[([^\[\]]*)\])?(.*)",sentence)[0]if timestamp=="": breakminv,secv=timestamp.split(':')stamp = int(minv)*60+float(secv)self.lyric.append((stamp, sentence))def unifyFormat(self):os.system("sox %s  -r 8000 -e signed-integer -b 16 -c 1 -t raw %s"%( self.files["clipmp3"],'/'.join([os.path.dirname(self.files["clipmp3"]),"clipmp3.wav"])))os.system("sox %s  -r 8000 -e signed-integer -b 16 -c 1 -t raw %s"%( self.files["fullmp3"],'/'.join([os.path.dirname(self.files["fullmp3"]),"fullmp3.wav"])))def alignBoundary(self):cmd=["/Users/funplus/web/lyrictool/sdhumming", '/'.join([os.path.dirname(self.files["fullmp3"]),"fullmp3.wav"]),'/'.join([os.path.dirname(self.files["clipmp3"]),"clipmp3.wav"]) ]print "cmd:", cmdstpos,dura = subprocess.check_output(cmd).split(",")print "result:",stpos,duraself.startpos = float(stpos)self.dura = float(dura)def calcLyric(self):self.lyric=[]self.lyricsparser()strout=""for l in self.lyric:if l[0]<self.startpos-2 or l[0]>self.startpos+1+self.dura:continueamendstamp=l[0]-self.startposif amendstamp<0:amendstamp=0strout+="[%d:%.2f]%s\n"%(int(amendstamp/60),amendstamp-int(amendstamp/60)*60,l[1])return stroutdef POST(self):myform = my_form()if not myform.validates():return "[%s]"%(myform.note)self.tmpdir=tempfile.mkdtemp(prefix="funp")print "tmpdir",self.tmpdirself.inp=web.input()lyrc=""try:self.getMp3Data()self.unifyFormat()self.alignBoundary()lyrc=self.calcLyric()finally:passos.rmdir(self.tmpdir)return make_text(lyrc)if __name__ == '__main__':web.internalerror = web.debugerrorapp.run()

片段音乐歌词生成工具相关推荐

  1. python爬歌词生成词云图_Python爬虫摇滚网易云音乐歌词生成词云图

    我相信经过前三篇文章,大家已经学会了怎么下载歌词和歌曲了.看了我的文章后开始行动起来的应该都享受到音乐的福利了.问一个问题,当你疲惫时,你想提起精神来去工作或者看书,你会选择听什么歌曲让自己兴奋起来呢 ...

  2. KRSReader酷狗音乐歌词写真图片提取工具(提取KRS文件中的图片)

    最近发现酷狗音乐中的歌词写真图片还是比较给力的,很多友友表示喜欢,但是苦于不懂得如何提取,小菜利用周末闲暇时间写了一个小工具,专门用来提取酷狗音乐歌词写真图片. 废话不多说,软件界面如下: 使用说明: ...

  3. AI 工具分享第 4 期:13 款国外免费AI视频生成工具

    0. 未来百科 未来百科,是一个知名的AI产品导航网站 -- 为发现全球优质AI工具而生 .目前已 聚集全球3000+优质AI工具产品 ,旨在帮助用户发现全球最好的AI工具,同时为研发AI垂直应用的创 ...

  4. 新一代开源Android渠道包生成工具Walle

    本文转载自[http://tech.meituan.com/android-apk-v2-signature-scheme.html] 在Android 7.0(Nougat)推出了新的应用签名方案A ...

  5. 声学、音乐计算常用工具总结(soundfile、librosa、pydub、madmom、spleeter)

    文章目录 一.soundfile 二.librosa 三.pydub 四.madmom 五.spleeter    学习必须要经常总结,通过总结梳理才能记得牢,也方便以后用到的时候回头查阅,这也是我写 ...

  6. unity mysql生成cexcel_【C#附源码】数据库文档生成工具支持(Excel+Html)

    [2015] 很多时候,我们在生成数据库文档时,使用某些工具,可效果总不理想,不是内容不详细,就是表现效果一般般.很多还是word.html的.看着真是别扭.本人习惯用Excel,所以闲暇时,就简单的 ...

  7. 第一百一十八期:运行 JavaScript 代码片段的 20 种工具

    运行 JavaScript 代码片段的 20 种工具 前端日常开发中,我们使用喜爱的 IDE 调试 JavaScript 代码,比如我喜欢的代码编辑器有两个,Sublime Text 3 和 VS C ...

  8. python3爬取网易云歌单数据清洗_如何利用Python网络爬虫爬取网易云音乐歌词

    赵雷的歌曲 本文以民谣歌神赵雷为数据采集对象,专门采集他的歌曲歌词,其他歌手的歌词采集方式可以类推,下图展示的是<成都>歌词. 赵雷歌曲---<成都> 一般来说,网页上显示的U ...

  9. python爬取歌词_利用Python网络爬虫抓取网易云音乐歌词

    今天小编给大家分享网易云音乐歌词爬取方法. 本文的总体思路如下: 找到正确的URL,获取源码: 利用bs4解析源码,获取歌曲名和歌曲ID: 调用网易云歌曲API,获取歌词: 将歌词写入文件,并存入本地 ...

  10. 如何用Python网络爬虫爬取网易云音乐歌词

    前几天小编给大家分享了数据可视化分析,在文尾提及了网易云音乐歌词爬取,今天小编给大家分享网易云音乐歌词爬取方法. 本文的总体思路如下: 找到正确的URL,获取源码: 利用bs4解析源码,获取歌曲名和歌 ...

最新文章

  1. DeepMind Nando(原牛津大学教授)强化学习最新进展,含图文、公式和代码,附102页PPT下载...
  2. 桌面打开图片时很慢,显示正在生成预览好几秒的解决办法
  3. 软件原型设计工具Axure RP安装教程
  4. oracle的all函数,oracle函数 MIN([distinct|all]x)
  5. php的mpdf开发实例,mpdf自动分页加页码的方法
  6. wordpress content.php,2020主题:content.php
  7. java 串口tcp客户端访问串口tcp服务器_怎么使用无线串口服务器
  8. tips:如何在chrome浏览器的网页中截长图
  9. 查看计算机内存条型号,怎么查内存条型号 这几步你要了解
  10. Alpha 冲刺(8/10)
  11. 【备忘录】浏览器不能上网但是微信能收到消息的一个解决办法
  12. Django 模型继承以及 model related_name 使用
  13. 20款国内外免费使用 主流杀毒软件
  14. 火车头怎么采集头条规则写法
  15. 【入门】已知一个圆的半径,求解该圆的面积和周长
  16. Fall 2020 Berkeley cs61a hw01答案
  17. Jenkins+Kubernetes+Docker实现微服务持续集成
  18. Jmeter性能测试之事务控制器的使用
  19. 聊聊视频分段下载的思路
  20. #详细说明# 解决在Python虚拟化境下,使用pip安装相应开发包 pipfile和pipfile.lock 文件不同步更新的问题

热门文章

  1. 【pyqt5学习】——菜单栏(QMenu())、工具栏QToolBar学习
  2. 读应届生论坛的“职业生涯步步高:一位资深经理人的职业生涯感悟”之一
  3. Anaconda 环境克隆、迁移
  4. 马士兵老师Struts2学习笔记
  5. 【VTM10.0】量化之RDOQ技术
  6. C# WPF – 利用“Attached Property” 把 RoutedEvent 接上 ICommand
  7. seraph_256 写给自己的编程小事
  8. 如何把两个表格合并到一起
  9. HTML5期末大作业:商城网站设计——仿天猫商城(9页) HTML+CSS大作业: 网页制作作业_疫情防控网页设计...
  10. The project seems to require yarn but it‘s not installed.