当前时区为 UTC + 8 小时



发表新帖 回复这个主题  [ 18 篇帖子 ]  前往页数 1, 2  下一页
作者 内容
1 楼 
 文章标题 : [分享]把ape+cue文件切割成flac的图形操作脚本。全部标签都能写进flac的(07.12.30更新)
帖子发表于 : 2007-08-03 18:50 
头像

注册: 2007-03-24 23:45
帖子: 2357
送出感谢: 0 次
接收感谢: 9
系统要安装
gawk(貌似mawk不够强大)
monkeys-audio
zenity
shntool
cuetool
flac
才行的
如果cue是gb18030的话会自动转换成utf8编码的
把cue和ape组合的文件切割成单个的flac,标签都写进flac了,之后可以用soundkconverter慢慢折腾了
#########################
升级到7.10,旧的脚本不能工作,我改了下,发现awk不能处理shntool的输出,暂时没时间搞完美,现在这个脚本能正常工作,但图形化的进度条不能实现,想看详细进度的就在命令行运行,直接运行的话就是看不了进度而已。
我测试过,能正常使用的
#########################
今天解决了进度条的问题,现在进度条正常了
原来要加个2>&1才行,原理不清楚,那位XD知道的告诉我一声


代码:
#!/bin/bash
# PS4="##### "
selection=`zenity --title="请选择一个.ape文件和一个.cue文件" --file-selection --multiple`
if [ -z "$selection" ]; then exit 0; fi
if [[ "$selection" != *.ape\|*.cue && "$selection" != *.cue\|*.ape ]]; then exit 0; fi
if [ `echo $selection | gawk -F "|" 'END {print NF}'` -ge 3 ]; then exit 0; fi

arg1=${selection%|*}; arg2=${selection#*|}
if [[ "$arg1" == *.ape ]];then file_ape=$arg1; file_cue=$arg2
else file_ape=$arg2; file_cue=$arg1; fi

i=0
while [ -f "temp$i" ]; do
i=$(($i+1))
done
> temp$i
iconv -f gb18030 -t utf8 "$file_cue" > "temp$i" && mv "temp$i" "$file_cue"
rm -f "temp$i"

tracks=`gawk -vRS="TRACK" 'END {print NR-1}' "$file_cue"`
#echo $tracks

all_titles=`gawk -vRS='TRACK' -vFS='\n' \
'{j=0;for(i=1;i<=NF;i++){if($i~/TITLE/){print $i;j=1}}};j==0 {print "TITLE \"#####\""}' "$file_cue" | \
gawk -F "\"" 'NR>=2 {printf("%s|",$2)}'`

j=1; while [ -n "$all_titles" ]; do
title=${all_titles%%|*}
artist=${all_artists%%|*}
num=`printf "%0${#tracks}d" $j`
rm -f "${num}.$title.flac"
((j++))
all_titles=${all_titles#*|}
all_artists=${all_artists#*|}
done

shntool split -f "$file_cue" -t '%n.%t' -o flac "$file_ape" 2>&1 | \
gawk -vvar=$tracks 'NR>=1 {print "#正在转换...";print (NR-1)*100/var};{fflush();}' | \
zenity --title="进度" --text="正在转换..." --progress --auto-kill --auto-close

all_titles=`gawk -vRS='TRACK' -vFS='\n' \
'{j=0;for(i=1;i<=NF;i++){if($i~/TITLE/){print $i;j=1}}};j==0 {print "TITLE \"#####\""}' "$file_cue" | \
gawk -F "\"" 'NR>=2 {printf("%s|",$2)}'`

all_artists=`gawk -vRS='TRACK' -vFS='\n' \
'{j=0;for(i=1;i<=NF;i++){if($i~/PERFORMER/){print $i;j=1}}};\
j==0 {print "PERFORMER \"#####\""}' "$file_cue" | gawk -F "\"" 'NR>=2 {printf("%s|",$2)}'`

album=`gawk -vRS='TRACK' -vFS='\n' \
'{j=0;for(i=1;i<=NF;i++){if($i~/TITLE/){print $i;j=1}}};j==0 {print "TITLE \"#####\""}' "$file_cue" | \
gawk -F "\"" 'NR==1 {printf("%s",$2)}'`

j=1; while [ -n "$all_titles" ]; do
title=${all_titles%%|*}
artist=${all_artists%%|*}
num=`printf "%0${#tracks}d" $j`
if [ "$title" != "#####" ]; then metaflac --set-tag=TITLE="$title" "${num}.$title.flac"; fi
if [ "$artist" != "#####" ]; then metaflac --set-tag=ARTIST="$artist" "${num}.$title.flac"; fi
if [ "$album" != "#####" ]; then metaflac --set-tag=ALBUM="$album" "${num}.$title.flac"; fi
metaflac --set-tag=TRACKNUMBER="$j" "${num}.$title.flac"
#if [ "$title" != "#####" ]; then mv "${num}.$title.flac" "${num:1}.$title.flac"
#else mv "${num}.$title.flac" "${num:1}.NoTitle.flac"; fi
((j++))
all_titles=${all_titles#*|}
all_artists=${all_artists#*|}
done

zenity --info --text="结束。"
exit 0


附件:
文件注释: 不想复制粘贴的就下载这个
ape2flac-gui.bash.tar.bz2 [1.19 KiB]
被下载 133 次


最后由 fanhe 编辑于 2007-12-30 21:52,总共编辑了 10 次
页首
 用户资料  
 
2 楼 
 文章标题 :
帖子发表于 : 2007-08-03 21:50 
头像

注册: 2005-08-14 19:53
帖子: 3998
送出感谢: 1
接收感谢: 2
用什么写的?支持一下。


页首
 用户资料  
 
3 楼 
 文章标题 :
帖子发表于 : 2007-09-26 17:45 
头像

注册: 2007-03-24 23:45
帖子: 2357
送出感谢: 0 次
接收感谢: 9
更新一下,由于之前用了冷门的gawk写的,所以默认情况下会有问题,现在改好了


页首
 用户资料  
 
4 楼 
 文章标题 :
帖子发表于 : 2007-09-26 18:46 
头像

注册: 2006-10-31 14:49
帖子: 1617
送出感谢: 0 次
接收感谢: 0 次
试用了,转完一首歌就停下了,将
代码:
cuebreakpoints "$file_cue" | shnsplit -o flac -n track "$file_ape" | \
改成
代码:
shntool split -f "$file_cue" -t '%n. %t' -o flac "$file_ape" | \
就好了。中文标签仍是乱码


_________________
Borders are meant to be crossed


页首
 用户资料  
 
5 楼 
 文章标题 :
帖子发表于 : 2007-09-26 22:19 
头像

注册: 2007-03-24 23:45
帖子: 2357
送出感谢: 0 次
接收感谢: 9
测试了一下,转换没有问题,但是进度条有问题,原来是默认的那个mawk的问题,gawk没有问题,唉,又花了我一个小时的时间。
中文标签我测试没有问题的,请确保那个cue是utf-8编码的
我更新一下


页首
 用户资料  
 
6 楼 
 文章标题 :
帖子发表于 : 2007-09-26 23:44 
头像

注册: 2006-10-31 14:49
帖子: 1617
送出感谢: 0 次
接收感谢: 0 次
做测试就是这样嘛 :lol:


_________________
Borders are meant to be crossed


页首
 用户资料  
 
7 楼 
 文章标题 :
帖子发表于 : 2007-09-28 0:02 

注册: 2007-04-14 14:43
帖子: 42
送出感谢: 0 次
接收感谢: 0 次
请问下,怎么样把GB编码的cue或者说文本文件转换成UTF-8格式的


页首
 用户资料  
 
8 楼 
 文章标题 :
帖子发表于 : 2007-09-28 0:11 
头像

注册: 2006-10-31 14:49
帖子: 1617
送出感谢: 0 次
接收感谢: 0 次
gedit之类的另存为的时候可以选择编码格式


_________________
Borders are meant to be crossed


页首
 用户资料  
 
9 楼 
 文章标题 :
帖子发表于 : 2007-11-10 14:34 
头像

注册: 2007-03-24 23:45
帖子: 2357
送出感谢: 0 次
接收感谢: 9
今天更新一下
因为xmms2貌似还不是很完美地支持ape+cue,所以又要用这个脚本了 8)


页首
 用户资料  
 
10 楼 
 文章标题 :
帖子发表于 : 2007-11-10 23:43 

注册: 2007-08-29 22:44
帖子: 320
送出感谢: 0 次
接收感谢: 0 次
我用魅族的ape2flac相当不错的说,不过得用wine模拟。


页首
 用户资料  
 
11 楼 
 文章标题 :
帖子发表于 : 2007-12-30 21:53 
头像

注册: 2007-03-24 23:45
帖子: 2357
送出感谢: 0 次
接收感谢: 9
今天解决了进度条的问题,现在进度条正常了


页首
 用户资料  
 
12 楼 
 文章标题 :
帖子发表于 : 2008-01-02 17:56 
头像

注册: 2006-07-08 14:07
帖子: 1771
送出感谢: 14
接收感谢: 1
很好,但,我用还是没有进度条。


页首
 用户资料  
 
13 楼 
 文章标题 :
帖子发表于 : 2008-01-02 23:03 
头像

注册: 2007-03-24 23:45
帖子: 2357
送出感谢: 0 次
接收感谢: 9
eagle5678 写道:
很好,但,我用还是没有进度条。

请检查有没有装齐我上面提到的软件,例如gawk


页首
 用户资料  
 
14 楼 
 文章标题 :
帖子发表于 : 2008-01-04 22:05 

注册: 2006-01-01 3:00
帖子: 30
送出感谢: 0 次
接收感谢: 0 次
我最近也转了一些 APE。

不过我是装了一个 VMPlayer,然后装了 Windows XP 深度精简版,再用千千静听来转的。

反正有些东西必须用 Windows,干脆跑虚拟机。而且深度的 Windows XP 精简版安装文件才 300M 不到,装好也就 900M 的样子。内存分配个 384M 足够了。


页首
 用户资料  
 
15 楼 
 文章标题 :
帖子发表于 : 2008-01-11 21:39 
头像

注册: 2006-07-23 16:25
帖子: 1592
地址: 南京
送出感谢: 0 次
接收感谢: 0 次
dualface 写道:
我最近也转了一些 APE。

不过我是装了一个 VMPlayer,然后装了 Windows XP 深度精简版,再用千千静听来转的。

反正有些东西必须用 Windows,干脆跑虚拟机。而且深度的 Windows XP 精简版安装文件才 300M 不到,装好也就 900M 的样子。内存分配个 384M 足够了。

每次为转ape开win太过麻烦了,还是喜欢写个脚本,然后批量转比较方便。


页首
 用户资料  
 
显示帖子 :  排序  
发表新帖 回复这个主题  [ 18 篇帖子 ]  前往页数 1, 2  下一页

当前时区为 UTC + 8 小时


在线用户

正在浏览此版面的用户:没有注册用户 和 4 位游客


不能 在这个版面发表主题
不能 在这个版面回复主题
不能 在这个版面编辑帖子
不能 在这个版面删除帖子
不能 在这个版面提交附件

前往 :  
本站点为公益性站点,用于推广开源自由软件,由 DiaHosting VPSBudgetVM VPS 提供服务。
我们认为:软件应可免费取得,软件工具在各种语言环境下皆可使用,且不会有任何功能上的差异;
人们应有定制和修改软件的自由,且方式不受限制,只要他们自认为合适。

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
简体中文语系由 王笑宇 翻译