找回密码
 立即注册
查看: 8246|回复: 19

有人可以把这个网站的歌词生成ass外挂字幕嘛

7

主题

89

回帖

0

VC币

高级会员

Rank: 4

积分
23538
ljx3916190 发表于 2019-4-24 22:41:35 | 显示全部楼层 |阅读模式
本帖最后由 ljx3916190 于 2019-4-24 22:43 编辑

https://www.jpmarumaru.com/tw/JPSongPlay-642.html
这个网站用来学歌超好用 双语字幕还带假名注音
但是每次都要重新加载 视频又是外挂youtobe的每次都要翻墙
重要的是木有办法整出来一个歌单一起放+.+
于素想下载下来听+.+
youtobe的视频这边自己能有办法
但是歌词写ass实在不会 T.T
检查元素能看到每句歌词的时间...
理论上知道怎么写ass的话整一个算法能把检查元素提取出来的东西编成ass+.+
又或者大佬们教窝肿么写ass 程序窝可以自己编
比如第一句这里 时间 假名 汉字 都有了 写成外挂字幕是啥样子+.+
  1. <li lang="ja" class="li1"><span class="LyricsYomi" pk="25646" sn="0" st="00:00:12.148" style=""><ruby><rb>放</rb><rt>はな</rt></ruby>て! <ruby><rb>心</rb><rt>こころ</rt></ruby>に<ruby><rb>刻</rb><rt>きざ</rt></ruby>んだ<ruby><rb>夢</rb><rt>ゆめ</rt></ruby>を <ruby><rb>未来</rb><rt>みらい</rt></ruby>さえ<ruby><rb>置</rb><rt>お</rt></ruby>き<ruby><rb>去</rb><rt>ざ</rt></ruby>りにして</span><span class="LyricsYomiKana" pk="25646" style="display: none;">はなて! こころにきざんだゆめを みらいさえおきざりにして</span></li>
  2.     <li class="li2"><span class="Translate_zh" pk="25646">放飛 心靈深處的夢想!與未來一起拋棄</span></li>
复制代码

又或者dalao们有哪里可以获取大量像这样双语加假名注音的外挂歌词的+.+

拜谢

回复

使用道具 举报

1

主题

18

回帖

0

VC币

注册会员

Rank: 2

积分
925
阿木良良荡漾 发表于 2019-4-24 23:34:57 | 显示全部楼层
写ass的话有三行,感觉一个难点在于 假名注音的对应位置
回复

使用道具 举报

7

主题

89

回帖

0

VC币

高级会员

Rank: 4

积分
23538
ljx3916190  楼主| 发表于 2019-4-25 03:51:22 | 显示全部楼层
http://docs.aegisub.org/manual/Furigana_karaoke
搜了一下
这里好像有自动注音的
但是要标每个字的时间...
琢磨了半天没整出来不要每个字时间怎么注音@.@
回复

使用道具 举报

4

主题

8

回帖

56

VC币

白金会员

Rank: 12Rank: 12Rank: 12

积分
73479

新人登场

hchdjp 发表于 2019-4-25 10:23:05 | 显示全部楼层
本帖最后由 hchdjp 于 2019-4-25 10:46 编辑

以前在tcax论坛找到过一份lua脚本,不过最近上不去tcax,忘了来源了。用法大概是(万事屋,よろずや)这样,选中之后自动化就可以了。不过我记得一年前用的时候可能按照需求魔改过,貌似会有bug,不过最近没时间修 录制_2019_04_25_10_39_43_591.gif

  1. --[[
  2. 檔案名稱:kage_autoRuby.lua
  3. 腳本製作:影kage
  4. 自動上小字特效(非卡拉OK)

  5. *請將文件放到Aegisub\automation\autoload資料夾內方可使用
  6. *每次調完參數請到[自動化腳本管理]去[重新整理]
  7. *套用的字幕樣式

  8. Copyright (c) 2013-2014,Kage Maboroshi/TUcaptions, All rights reserved.

  9. this script is a modifer of kage ruby sciprt

  10. ]]

  11. --以下資料請不要亂動--

  12. require "karaskel"

  13. script_name = "自動上小字特效(非Karaoke)"
  14. script_description = "自動上小字特效,使用方法(文字,小字) for ASS字幕研習社"
  15. script_author = "Kage Maboroshi(影kage)"
  16. script_modifer_author = "KiNen";
  17. script_version = 1.0

  18. --參數設定--
  19. rubypadding = 0 --小字間距
  20. rubyscale = 0.5 --小字縮放比例
  21. fstyle = "TEXT_JP-furigana" --小字style


  22. meta = nil;
  23. styles = nil;

  24. function Ruby(subs, sel)
  25.         meta, styles = karaskel.collect_head(subs);
  26.         -- for z, i in ipairs(sel) do
  27.         --         local l = subs[i]
  28.         --         processline(subs,l,i);
  29.         --         local l2 = subs[i];
  30.         --               l2.comment = true;
  31.         --                   subs[i] = l2;
  32.         -- end
  33.         local n = 0
  34.         local x = 0        
  35.         for z, i in ipairs(sel) do
  36.                 n = n+x
  37.                 local l = subs[i+n]
  38.                 x = processline(subs,l,i+n);
  39.                 if x == 1 then
  40.                         x = 0;
  41.                 else        
  42.                         local l2 = subs[i+n];
  43.                         l2.comment = true;                        
  44.                         subs[i+n] = l2;
  45.                 end
  46.         end
  47.         aegisub.set_undo_point(script_name)
  48. end

  49. function processline(subs,line,li)
  50.     line.comment = false;
  51.         local originline = table.copy(line);
  52.         
  53.         local ktag="{\\k0}";
  54.         local stylefs = styles[ line.style ].fontsize;
  55.         local rubbyfs = stylefs * rubyscale;
  56.         line.text = string.gsub(line.text,"%((.-),(.-)%)",ktag.."%1".."|".."%2"..ktag);
  57.     local vl = table.copy(line);
  58.         karaskel.preproc_line(subs, meta, styles, vl);
  59.         
  60.         originline.text = string.gsub(originline.text,"%((.-),(.-)%)","%1");
  61.         originline.text = string.format("{\\pos(%d,%d)}",vl.x,vl.y)..originline.text;
  62.         subs.insert(li+1,originline);
  63.         
  64.         for i = 1, vl.furi.n do
  65.                 local fl = table.copy(line)
  66.                 local rlx = vl.left + vl.kara[vl.furi[i].i].center;
  67.                 local rly = vl.top - rubbyfs/2 - rubypadding;
  68.                 fl.style = fstyle;
  69.                 fl.text = string.format("{\\an5\\fs%d\\pos(%d,%d)}%s",rubbyfs,rlx,rly,vl.furi[i].text);
  70.                 subs.insert(li+1+i,fl);
  71.         end
  72.         return vl.furi.n + 1;
  73. end


  74. aegisub.register_macro(script_name, script_description, Ruby)
复制代码

回复

使用道具 举报

7

主题

89

回帖

0

VC币

高级会员

Rank: 4

积分
23538
ljx3916190  楼主| 发表于 2019-4-25 11:37:31 | 显示全部楼层
本帖最后由 ljx3916190 于 2019-4-25 13:31 编辑

琢磨了一下还是没整明白
用那个karaoke的自动化脚本的时候
一开始要输这两行

  1. Comment: 0,0:00:00.00,0:00:00.00,Default,,0000,0000,0000,template syl,{\pos(!line.left+syl.center!,!line.middle!)\an5\k!syl.start_time/10!\k$kdur}
  2. Comment: 0,0:00:00.00,0:00:00.00,Default,,0000,0000,0000,template furi,{\pos(!line.left+syl.center!,!line.middle-line.height!)\an5\k!syl.start_time/10!\k$kdur}
复制代码


然后是{\k××时间}汉字|假名

这个脚本是怎么调用的...
搞定啦
  1. Comment: 0,00:00:12.148,0:00:19.148,Default,,0,0,0,,(放,はな)て! (心,こころ)に(刻,きざ)んだ(夢,ゆめ)を(未来,みらい)さえ(置,お)き(去,ざ)りにして
复制代码
应该是论坛这个代码复制粘贴的问题
缩进的tab载入不了一直error
这下问题就变成从检查元素的txt里找本句时间,下句时间,<ruby>变成(),<rt>变成, 窝去找个东西做文字处理+.+
回复

使用道具 举报

7

主题

89

回帖

0

VC币

高级会员

Rank: 4

积分
23538
ljx3916190  楼主| 发表于 2019-4-25 21:01:59 | 显示全部楼层
bat好蠢啊 又是<又是!各种报错
T.T
回复

使用道具 举报

14

主题

80

回帖

1949

VC币

星辰大海

Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20

积分
477288
NoobNeo 发表于 2019-4-26 00:04:14 | 显示全部楼层
本帖最后由 NoobNeo 于 2019-4-26 00:05 编辑

大概是这样的吧
only my railgun - fripSide.zip (5.45 KB, 下载次数: 94)

注音脚本用的@hchdjp提供的
声明: 本人所有手抄字幕都采用 进行许可(特殊标注除外)
已获许可的字幕组: DHR動研字幕組, TUcaptions
以往字幕有问题的, 请与我联系, 论坛不一定有时间上.
最佳途径: Telegram @noobneo
回复

使用道具 举报

7

主题

89

回帖

0

VC币

高级会员

Rank: 4

积分
23538
ljx3916190  楼主| 发表于 2019-4-26 04:45:16 | 显示全部楼层
不知道怎么搞了
提取文字跟时间自己总算是整出来了
但是字体头好大
好不容易在电脑上注音能对齐了 ass文件朝爪机上一发 就歪了
ls内位仁兄的ass在爪机上也没歪
应该还是哪里姿势不对
dalao们教教窝肿么整吧T.T

only my railgun.rar (5.43 KB, 下载次数: 93)
回复

使用道具 举报

14

主题

80

回帖

1949

VC币

星辰大海

Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20

积分
477288
NoobNeo 发表于 2019-4-26 07:22:52 | 显示全部楼层
本帖最后由 NoobNeo 于 2019-4-26 07:42 编辑

附上源码
python要3.0及以上

代码简单注释了一下, 楼主想要批量处理的话, 自己再稍微改造下吧
  1. # -*- coding: UTF-8 -*-
  2. import codecs
  3. import json
  4. import requests

  5. # 字幕保存路径, {}用于替换文件名
  6. format_path = 'D:/youtube-dl/{}.ass'


  7. # song_pk: 歌曲PK
  8. def api(song_pk):
  9.     # 样式名修改的话这里也要修改
  10.     format_ass = 'Dialogue: 0,{},{},Jp,,0,0,0,,{}\r\n'
  11.     format_tr_ass = 'Dialogue: 0,{},{},Tr,,0,0,0,,{}\r\n'
  12.     user_agent = 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.108 Safari/537.36'
  13.     referer = 'https://www.jpmarumaru.com/tw/JPSongPlay-' + str(song_pk) + '.html'
  14.     api_url = 'https://www.jpmarumaru.com/tw/api/json_JPSongTrack.asp'
  15.     song_data = 'SongPK=' + str(song_pk)
  16.     # api headers
  17.     headers = {
  18.         'Connection': 'Keep-alive',
  19.         'User-Agent': user_agent,
  20.         'Referer': referer,
  21.         'Origin': 'https://www.jpmarumaru.com',
  22.         'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8',
  23.     }
  24.     req = requests.post(api_url, headers=headers, data=song_data)
  25.     js = json.loads(req.text)
  26.     ass_file = codecs.open(format_path.format(js['Name']), 'w', 'utf-8')
  27.     # ass Header
  28.     ass_file.write('[Script Info]\r\n'
  29.                    '; Script generated by Aegisub 3.2.2\r\n'
  30.                    '; http://www.aegisub.org/\r\n'
  31.                    'Title: Default Aegisub file\r\n'
  32.                    'ScriptType: v4.00+\r\n'
  33.                    'WrapStyle: 0\r\n'
  34.                    'ScaledBorderAndShadow: yes\r\n'
  35.                    'YCbCr Matrix: None\r\n'
  36.                    '[V4+ Styles]\r\n'
  37.                    'Format: Name, Fontname, Fontsize, PrimaryColour, SecondaryColour, OutlineColour, BackColour, Bold, Italic, Underline, StrikeOut, ScaleX, ScaleY, Spacing, Angle, BorderStyle, Outline, Shadow, Alignment, MarginL, MarginR, MarginV, Encoding\r\n'
  38.                    # 日文样式
  39.                    'Style: Jp,Noto Sans CJK SC Medium,36,&H00FFFFFF,&H000000FF,&H00000000,&H00000000,0,0,0,0,100,100,0,0,1,1,0,2,10,10,20,1\r\n'
  40.                    # 译文样式
  41.                    'Style: Tr,Noto Sans CJK SC Medium,36,&H00FFFFFF,&H000000FF,&H00000000,&H00000000,0,0,0,0,100,100,0,0,1,1,0,8,10,10,20,1\r\n'
  42.                    # 注音样式
  43.                    'Style: TEXT_JP-furigana,Noto Sans CJK SC Medium,36,&H00FFFFFF,&H000000FF,&H00000000,&H00000000,0,0,0,0,100,100,0,0,1,1,0,8,10,10,20,1\r\n'
  44.                    '[Events]\r\n'
  45.                    'Format: Layer, Start, End, Style, Name, MarginL, MarginR, MarginV, Effect, Text\r\n')
  46.     start_time = js['StartTime']
  47.     end_time = js['EndTime']
  48.     ass_yomi = []
  49.     ass_tr = js['Translate_zh']

  50.     for i in js['LyricsYomi']:
  51.         ass_yomi.append(i.replace('<ruby><rb>', '(').replace('</rb><rt>', ',').replace('</rt></ruby>', ')'))
  52.     # 先写入日文歌词, 方便后期自动化时选定
  53.     for index in range(0, len(ass_yomi)):
  54.         ass_file.write(format_ass.format(start_time[index], end_time[index], ass_yomi[index]))
  55.     # 再写入译文歌词, 不需要的话注解掉
  56.     for index in range(0, len(ass_tr)):
  57.         ass_file.write(format_tr_ass.format(start_time[index], end_time[index], ass_tr[index]))

  58.     ass_file.close()


  59. # Demo
  60. api(642)
复制代码

vcb-s.zip (1.51 KB, 下载次数: 94)


声明: 本人所有手抄字幕都采用 进行许可(特殊标注除外)
已获许可的字幕组: DHR動研字幕組, TUcaptions
以往字幕有问题的, 请与我联系, 论坛不一定有时间上.
最佳途径: Telegram @noobneo
回复

使用道具 举报

7

主题

89

回帖

0

VC币

高级会员

Rank: 4

积分
23538
ljx3916190  楼主| 发表于 2019-4-26 09:06:16 | 显示全部楼层
NoobNeo 发表于 2019-4-26 07:22
附上源码
python要3.0及以上

虽然我很鸡的跑去用了pascal
但是感觉应该不是代码的问题啊
  1. Comment: 0,0:00:12.14,0:00:19.07,Jp,,0,0,0,,(放,はな)て! (心,こころ)に(刻,きざ)んだ(夢,ゆめ)を (未来,みらい)さえ(置,お)き(去,ざ)りにして
复制代码
同样的一句
我跟你这里差的只有自己之后调轴调了提前0.5秒还有小写的jp
但是后面生成的注音位置就不一样了
一个是311 一个是400


1.jpg
这个是我的
2.jpg
这个是ls的

3.jpg
神奇的是我这里点一下自动化出来的是388

我得知道自己是哪里姿势不对T.T
难受...
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表