标题: [文本处理] lrc歌词提取问题 [打印本页]
作者: netdzb 时间: 2021-6-21 07:23 标题: lrc歌词提取问题
[00:01.10]许茹芸 - 独角戏
[00:02.10]词:许常德
[00:03.10]曲:季忠平
[00:48.96]是谁导演这场戏
[00:53.32]在这孤单角色里
[00:56.72]对白总是自言自语
[00:59.47]对手都是回忆
[01:01.58]看不出什么结局
===============
我的目的是转成srt歌词。
直接写出成品,我现在没有能力写。
我想分成三步走,第一步生成一个临时文件
许茹芸 - 独角戏
词:许常德
曲:季忠平
是谁导演这场戏
在这孤单角色里
对白总是自言自语
对手都是回忆
看不出什么结局
==============================
第二步生成这个临时文件,如果实现了这两步,后面的代码可能我会写了。
[00:01.10] ---> [00:02.10]
[00:02.10] ---> [00:03.10]
[00:03.10] ---> [00:48.96]
[00:48.96] ---> [00:53.32]
[00:53.32] ---> [00:56.72]
[00:56.72] ---> [00:59.47]
[00:59.47] ---> [01:01.58]
[01:01.58] --->
作者: xp3000 时间: 2021-6-21 08:29
- //&cls&dir /b *.lrc|cscript -nologo -e:jscript "%~f0"&pause&exit
-
- function reStr(file){
- var f = fso.opentextfile(file, 1);
- str = f.ReadAll()
- .replace(/^(\[[0-9]{2}:[0-9]{2}.[0-9]{2}\])([^\[]+)\r\n(\[[0-9]{2}:[0-9]{2}.[0-9]{2}\])/gm, '$1 ---> $3$2\r\n$3')
- .replace(/^(\[[0-9]{2}:[0-9]{2}.[0-9]{2}\])([^\[]+)\r\n(\[[0-9]{2}:[0-9]{2}.[0-9]{2}\])/gm, '$1 ---> $3$2\r\n$3')
- .replace(/^(\[[0-9]{2}:[0-9]{2}.[0-9]{2}\])([^\[>]+)(\r\n)*$/mg, '$1 ---> $2$3');
- f.Close();
- var f = fso.opentextfile(file, 2);
- f.Write(str);
- }
- var fso = new ActiveXObject('Scripting.FileSystemObject');
- while(!WScript.StdIn.AtEndOfStream)reStr(WScript.StdIn.ReadLine());
复制代码
传闻你在学习VBS?
作者: netdzb 时间: 2021-6-21 08:59
回复 2# xp3000
对的正在学习中,谢谢你啊。我一会研究一下代码。
作者: newswan 时间: 2021-6-21 19:00
本帖最后由 newswan 于 2021-6-21 19:03 编辑
powershell- $file = "1.txt"
- $fc = Get-Content $file
- for ($i=0 ; $i -lt $t.count -1 ; $i++){
- $fc[$i].Substring(0,10) + "--->" + $fc[$i+1].Substring(0,10) + " " + $fc[$i].Substring(10)
- }
- $fc[-1]
复制代码
最后一行的结束时间怎么办?
作者: went 时间: 2021-6-21 19:37
test.bat- @echo off & cd /d "%~dp0"
- setlocal enabledelayedexpansion
- for %%i in (*.lrc) do (
- (
- cd.>"%%~ni.src"
- for /f "usebackq tokens=1* delims=[]" %%a in ("%%i") do (
- if not "!lastTime!"=="" (
- echo !lastTime! ---^> %%a
- )
- set "lastTime=%%a"
- echo %%b >> "%%~ni.src"
- )
- echo !lastTime! ---^>
- )>"%%~ni.time"
- echo done. %%i
- )
- pause&exit
复制代码
作者: netdzb 时间: 2021-6-21 21:27
回复 4# newswan
最后一行加的2秒如何啊?
作者: netdzb 时间: 2021-6-21 21:28
回复 5# went
我要认真的看一下批处理是如何时间戳的?
作者: went 时间: 2021-6-21 21:59
回复 7# netdzb
不是时间戳,这只是普通的文本
作者: newswan 时间: 2021-6-22 00:06
本帖最后由 newswan 于 2021-6-22 02:09 编辑
- $fc = Get-Content "1.txt"
-
- for ($i=0 ; $i -lt $t.count -1 ; $i++){
- $fc[$i] = $fc[$i].Substring(0,10) + " ---> " + $fc[$i+1].Substring(0,10) + " " + $fc[$i].Substring(10)
- }
- $tt = $fc[-1].Substring(1,8)
- $tt = [datetime]::ParseExact($tt, 'mm:ss.ff', $null).addseconds(2).tostring("mm:ss.ff")
- $tt = "[" + $tt + "]"
- $fc[-1] = $fc[-1].Substring(0,10) + " ---> " + $tt + " " + $fc[$i].Substring(10)
- $fc
复制代码
格式固定,字符串截取方便
作者: qixiaobin0715 时间: 2021-6-22 06:17
- @echo off
- setlocal enabledelayedexpansion
- (for /f "tokens=1* delims=[]" %%a in (test.lrc) do (
- if defined str1 (
- set /a n+=1
- echo,!n!&echo,!str1! ---^> %%a&echo,!str2!&echo,
- )
- set "str1=%%a"
- set "str2=%%b"
- )
- set /a n+=1
- echo,!n!&echo,!str1! ---^> &echo,!str2!&echo,
- )>test.srt
- pause
复制代码
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |