网站音乐播放器(HeoMusic)的配置

讲述了本网站的音乐播放器 HeoMusic 如何配置 LocalMusic

项目地址:https://github.com/zhheo/HeoMusic

​ 使用 git clone 命令克隆下最新版的文件到你想要的目录里,我这里就直接放在了 /home/wwwroot/ 的网站根目录下

​ 文件树

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
.
├── LICENSE
├── README.md
├── css
│   └── APlayer.css
├── img
│   ├── HeoMusic3.webp
│   ├── cover.webp
│   ├── help.webp
│   ├── icon-r.png
│   ├── icon-r.webp
│   ├── icon-r_mini.png
│   └── icon.webp
├── index.html
├── js
│   ├── APlayer.min.js
│   ├── Meting.js
│   ├── color-thief.min.js
│   ├── localEngine.js
│   └── main.js
├── main.css
├── manifest.json
├── meting-api
│   ├── LICENSE
│   ├── README.md
│   ├── composer.json
│   ├── composer.lock
│   ├── docs
│   │   ├── favicon.png
│   │   └── index.html
│   ├── favicon.png
│   ├── index.php
│   ├── public
│   │   └── index.php
│   ├── src
│   │   └── Meting.php
│   └── vendor
│       ├── autoload.php
│       ├── composer
│       │   ├── ClassLoader.php
│       │   ├── InstalledVersions.php
│       │   ├── LICENSE
│       │   ├── autoload_classmap.php
│       │   ├── autoload_namespaces.php
│       │   ├── autoload_psr4.php
│       │   ├── autoload_real.php
│       │   ├── autoload_static.php
│       │   ├── installed.json
│       │   ├── installed.php
│       │   └── platform_check.php
│       └── metowolf
│           └── meting
│               ├── LICENSE
│               ├── README.md
│               ├── composer.json
│               └── src
│                   └── Meting.php
└── update.md

一、准备工作

  1. 一个抓录好的 CD(可以自己抓,也可以从网上找)

    大概就是这样的一个文件树

    1
    2
    3
    4
    
    .
    ├── BNEI-00166.cue
    ├── BNEI-00166.flac
    └── BNEI-00166.log
    
  2. 一份带时间戳的歌词(可以自己从网上扒)

  3. 一个封面

  4. 一个 Linux 系统(这里使用的是 Debian 10)—–> 部署 music 网页用、转换 CD 用

二、将 CD 转换成 mp3 格式

2.1 .cue + .flac 文件分解成单个歌曲

​ 下载转换工具

  • ffmpeg:用于音频处理。

  • shntool:处理音频文件分割。

  • cuetools:用于解析 .cue 文件。

  • flac:用于处理 .flac 格式。

1
2
3
$ sudo apt update -y
$ sudo apt upgrade -y
$ sudo apt install ffmpeg shntool cuetools flac -y

​ 安装完之后,我们首先将 .cue 文件和 .flac 文件放在同一个目录下,由于我这里的文件是我自己自抓的CD,所以本身就在同一个目录下,不用调整

​ 然后使用 cueprint 验证 .cue 文件内容是否与 .flac 文件匹配

1
$ cueprint -d '%T %p\n' BNEI-00166.cue

​ 由于我这里是自己自抓的,所以可以不用校验

​ 然后使用 shnsplit 命令来将专辑的 flac 文件分解成单曲

1
$ shnsplit -f "BNEI-00166.cue" -t "%n %t" -o flac "BNEI-00166.flac"

​ 可以看到这样的输出,说明分解成功

1
2
3
4
5
6
7
8
$ shnsplit -f "BNEI-00166.cue" -t "%n %t" -o flac "BNEI-00166.flac"
shnsplit: warning: discarding initial zero-valued split point
Splitting [BNEI-00166.flac] (28:16.13) --> [01 Luna say maybe.flac] (4:27.18) : 100% OK
Splitting [BNEI-00166.flac] (28:16.13) --> [02[月村手毬 Solo ver.].flac] (5:19.42) : 100% OK
Splitting [BNEI-00166.flac] (28:16.13) --> [03 Campus mode!! [月村手毬 Solo ver.].flac] (4:21.58) : 100% OK
Splitting [BNEI-00166.flac] (28:16.13) --> [04 Luna say maybe [Instrumental].flac] (4:27.01) : 100% OK
Splitting [BNEI-00166.flac] (28:16.13) --> [05[Instrumental].flac] (5:19.42) : 100% OK
Splitting [BNEI-00166.flac] (28:16.13) --> [06 Campus mode!! [Instrumental].flac] (4:21.02) : 100% OK

​ 然后我们新建一个文件夹,把我们刚才输出的单曲全都移进去

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
$ mkdir Single
$ mv 0* single/
$ ll single/
总用量 208560
drwxr-xr-x 2 moka moka     4096 Jan  3 08:04  ./
drwxr-xr-x 4 moka moka     4096 Jan  3 08:04  ../
-rw-r--r-- 1 moka moka 34183856 Jan  3 08:01 '01 Luna say maybe.flac'
-rw-r--r-- 1 moka moka 41056534 Jan  3 08:02 '02 初 [月村手毬 Solo ver.].flac'
-rw-r--r-- 1 moka moka 33272134 Jan  3 08:02 '03 Campus mode!! [月村手毬 Solo ver.].flac'
-rw-r--r-- 1 moka moka 33411287 Jan  3 08:02 '04 Luna say maybe [Instrumental].flac'
-rw-r--r-- 1 moka moka 39011489 Jan  3 08:02 '05 初 [Instrumental].flac'
-rw-r--r-- 1 moka moka 32602328 Jan  3 08:02 '06 Campus mode!! [Instrumental].flac'

​ 可以看到都移进来了

​ 然后我们使用 cuetag 为分割后的文件添加元数据

1
$ cuetag "BNEI-00166.cue" single/*.flac

2.2 单曲的 .flac 文件转换成 .mp3 文件

​ 由于 .flac 文件貌似无法被这个项目所识别,所以我们需要将我们刚刚抓取下来的单曲 .flac 文件转换成 .mp3 文件

​ 我们使用 ffmpeg 工具来转换,由于我们上面已经安装完 ffmpeg 了,所以我们这里可以直接使用命令

1
2
$ cd single/
$ ffmpeg -i '03 Campus mode!! [月村手毬 Solo ver.].flac' -q:a 2 -map_metadata 0 '03 Campus mode!! [月村手毬 Solo ver.].mp3'
  • 03 Campus mode!! [月村手毬 Solo ver.].flac:输入文件名。
  • 03 Campus mode!! [月村手毬 Solo ver.].mp3:输出文件名。
  • -q:a 0:设置 MP3 的音质,范围为 0-9(0 为最高品质,9 为最低)
  • -map_metadata 0:保留 .flac 文件的元数据(如标题、艺术家、专辑等)

​ 然后我们可以看到类似于下面的输出,即说明成功

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
$ ffmpeg -i '03 Campus mode!! [月村手毬 Solo ver.].flac' -q:a 2 -map_metadata 0 '03 Campus mode!! [月村手毬 Solo ver.].mp3'
ffmpeg version 4.3.8-0+deb11u1 Copyright (c) 2000-2024 the FFmpeg developers
  built with gcc 10 (Debian 10.2.1-6)
  configuration: --prefix=/usr --extra-version=0+deb11u1 --toolchain=hardened --libdir=/usr/lib/x86_64-linux-gnu --incdir=/usr/include/x86_64-linux-gnu --arch=amd64 --enable-gpl --disable-stripping --enable-avresample --disable-filter=resample --enable-gnutls --enable-ladspa --enable-libaom --enable-libass --enable-libbluray --enable-libbs2b --enable-libcaca --enable-libcdio --enable-libcodec2 --enable-libdav1d --enable-libflite --enable-libfontconfig --enable-libfreetype --enable-libfribidi --enable-libgme --enable-libgsm --enable-libjack --enable-libmp3lame --enable-libmysofa --enable-libopenjpeg --enable-libopenmpt --enable-libopus --enable-libpulse --enable-librabbitmq --enable-librsvg --enable-librubberband --enable-libshine --enable-libsnappy --enable-libsoxr --enable-libspeex --enable-libsrt --enable-libssh --enable-libtheora --enable-libtwolame --enable-libvidstab --enable-libvorbis --enable-libvpx --enable-libwavpack --enable-libwebp --enable-libx265 --enable-libxml2 --enable-libxvid --enable-libzmq --enable-libzvbi --enable-lv2 --enable-omx --enable-openal --enable-opencl --enable-opengl --enable-sdl2 --enable-pocketsphinx --enable-libmfx --enable-libdc1394 --enable-libdrm --enable-libiec61883 --enable-chromaprint --enable-frei0r --enable-libx264 --enable-shared
  libavutil      56. 51.100 / 56. 51.100
  libavcodec     58. 91.100 / 58. 91.100
  libavformat    58. 45.100 / 58. 45.100
  libavdevice    58. 10.100 / 58. 10.100
  libavfilter     7. 85.100 /  7. 85.100
  libavresample   4.  0.  0 /  4.  0.  0
  libswscale      5.  7.100 /  5.  7.100
  libswresample   3.  7.100 /  3.  7.100
  libpostproc    55.  7.100 / 55.  7.100
Input #0, flac, from '03 Campus mode!! [月村手毬 Solo ver.].flac':
  Metadata:
    TITLE           : Campus mode!! [月村手毬 Solo ver.]
    ALBUM           : 月村手毬 1st Single「Luna say maybe」
    track           : 03
    TRACKTOTAL      : 06
    ARTIST          : 月村手毬(CV.小鹿なお)
    PERFORMER       : 月村手毬(CV.小鹿なお)
    ISRC            : JPX832004746
  Duration: 00:04:21.77, start: 0.000000, bitrate: 1016 kb/s
    Stream #0:0: Audio: flac, 44100 Hz, stereo, s16
Stream mapping:
  Stream #0:0 -> #0:0 (flac (native) -> mp3 (libmp3lame))
Press [q] to stop, [?] for help
Output #0, mp3, to '03 Campus mode!! [月村手毬 Solo ver.].mp3':
  Metadata:
    TIT2            : Campus mode!! [月村手毬 Solo ver.]
    TALB            : 月村手毬 1st Single「Luna say maybe」
    TRCK            : 03
    TRACKTOTAL      : 06
    TPE1            : 月村手毬(CV.小鹿なお)
    TPE3            : 月村手毬(CV.小鹿なお)
    ISRC            : JPX832004746
    TSSE            : Lavf58.45.100
    Stream #0:0: Audio: mp3 (libmp3lame), 44100 Hz, stereo, s16p
    Metadata:
      encoder         : Lavc58.91.100 libmp3lame
[libmp3lame @ 0x55b3e53ce700] Trying to remove 1152 samples, but the queue is empty
size=    6422kB time=00:04:21.79 bitrate= 201.0kbits/s speed=11.8x    
video:0kB audio:6422kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 0.007847%

​ 我们也可以用下面的命令来校验一下 .mp3 文件的元数据

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
$ ffprobe '03 Campus mode!! [月村手毬 Solo ver.].mp3'
ffprobe version 4.3.8-0+deb11u1 Copyright (c) 2007-2024 the FFmpeg developers
  built with gcc 10 (Debian 10.2.1-6)
  configuration: --prefix=/usr --extra-version=0+deb11u1 --toolchain=hardened --libdir=/usr/lib/x86_64-linux-gnu --incdir=/usr/include/x86_64-linux-gnu --arch=amd64 --enable-gpl --disable-stripping --enable-avresample --disable-filter=resample --enable-gnutls --enable-ladspa --enable-libaom --enable-libass --enable-libbluray --enable-libbs2b --enable-libcaca --enable-libcdio --enable-libcodec2 --enable-libdav1d --enable-libflite --enable-libfontconfig --enable-libfreetype --enable-libfribidi --enable-libgme --enable-libgsm --enable-libjack --enable-libmp3lame --enable-libmysofa --enable-libopenjpeg --enable-libopenmpt --enable-libopus --enable-libpulse --enable-librabbitmq --enable-librsvg --enable-librubberband --enable-libshine --enable-libsnappy --enable-libsoxr --enable-libspeex --enable-libsrt --enable-libssh --enable-libtheora --enable-libtwolame --enable-libvidstab --enable-libvorbis --enable-libvpx --enable-libwavpack --enable-libwebp --enable-libx265 --enable-libxml2 --enable-libxvid --enable-libzmq --enable-libzvbi --enable-lv2 --enable-omx --enable-openal --enable-opencl --enable-opengl --enable-sdl2 --enable-pocketsphinx --enable-libmfx --enable-libdc1394 --enable-libdrm --enable-libiec61883 --enable-chromaprint --enable-frei0r --enable-libx264 --enable-shared
  libavutil      56. 51.100 / 56. 51.100
  libavcodec     58. 91.100 / 58. 91.100
  libavformat    58. 45.100 / 58. 45.100
  libavdevice    58. 10.100 / 58. 10.100
  libavfilter     7. 85.100 /  7. 85.100
  libavresample   4.  0.  0 /  4.  0.  0
  libswscale      5.  7.100 /  5.  7.100
  libswresample   3.  7.100 /  3.  7.100
  libpostproc    55.  7.100 / 55.  7.100
Input #0, mp3, from '03 Campus mode!! [月村手毬 Solo ver.].mp3':
  Metadata:
    title           : Campus mode!! [月村手毬 Solo ver.]
    album           : 月村手毬 1st Single「Luna say maybe」
    track           : 03
    TRACKTOTAL      : 06
    artist          : 月村手毬(CV.小鹿なお)
    performer       : 月村手毬(CV.小鹿なお)
    ISRC            : JPX832004746
    encoder         : Lavf58.45.100
  Duration: 00:04:21.83, start: 0.025057, bitrate: 200 kb/s
    Stream #0:0: Audio: mp3, 44100 Hz, stereo, fltp, 200 kb/s
    Metadata:
      encoder         : Lavc58.91

三、获取歌词

​ 这里我常用的是 Apple Music,所以从 Apple Music 的 Web 端获取歌词,其他平台也同理

​ 登录网页端 Apple Music,搜索对应的音乐,比如这首 Campus mode!!

​ 然后放大到有歌词预览的界面,在这里按 F12,找到 Network(网络),在下面的文件列表里面找到 syllable-lyrics,然后将里面所有的内容都复制下来

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
{
    "data": [
        {
            "id": "1749006701",
            "type": "syllable-lyrics",
            "attributes": {
                "ttml": "<tt xmlns=\"http://www.w3.org/ns/ttml\" xmlns:itunes=\"http://music.apple.com/lyric-ttml-internal\" xmlns:ttm=\"http://www.w3.org/ns/ttml#metadata\" itunes:timing=\"Word\" xml:lang=\"ja\"><head><metadata><ttm:agent type=\"person\" xml:id=\"v1\"/><iTunesMetadata xmlns=\"http://music.apple.com/lyric-ttml-internal\" leadingSilence=\"0.880\"><songwriters><songwriter>田淵智也</songwriter></songwriters></iTunesMetadata></metadata></head><body dur=\"4:20.016\"><div begin=\"13.890\" end=\"24.844\" itunes:songPart=\"Chorus\"><p begin=\"13.890\" end=\"18.637\" itunes:key=\"L1\" ttm:agent=\"v1\"><span begin=\"13.890\" end=\"14.579\">ぜったい</span> <span begin=\"14.579\" end=\"15.229\">いっぱい</span> <span begin=\"15.229\" end=\"16.056\">輝け!</span><span begin=\"16.101\" end=\"16.927\">未来を</span><span begin=\"16.927\" end=\"17.977\">明るくしよう、</span><span begin=\"17.977\" end=\"18.637\">するぞ!</span></p><p begin=\"18.637\" end=\"24.844\" itunes:key=\"L2\" ttm:agent=\"v1\"><span begin=\"18.637\" end=\"19.143\">だから</span><span begin=\"19.143\" end=\"19.776\">Stepping</span> <span begin=\"19.776\" end=\"20.332\">now</span> <span begin=\"20.332\" end=\"20.949\">ワタシ</span><span begin=\"20.949\" end=\"21.677\">スピード</span><span begin=\"21.677\" end=\"22.374\">で</span><span begin=\"22.374\" end=\"22.688\">!</span><span begin=\"23.061\" end=\"23.714\">邁進</span><span begin=\"23.714\" end=\"24.425\">あそばせ</span><span begin=\"24.425\" end=\"24.844\">!</span></p></div><div begin=\"26.984\" end=\"31.094\" itunes:songPart=\"Verse\"><p begin=\"26.984\" end=\"31.094\" itunes:key=\"L3\" ttm:agent=\"v1\"><span begin=\"26.984\" end=\"27.375\">Campus</span> <span begin=\"27.375\" end=\"27.663\">modeで</span><span begin=\"27.663\" end=\"28.351\">一緒に</span><span begin=\"28.351\" end=\"28.859\">駆け</span><span begin=\"28.859\" end=\"29.763\">抜けるぞ</span> <span begin=\"29.892\" end=\"31.094\">yeah!</span></p></div><div begin=\"40.246\" end=\"50.435\" itunes:songPart=\"Verse\"><p begin=\"40.246\" end=\"44.830\" itunes:key=\"L4\" ttm:agent=\"v1\"><span begin=\"40.246\" end=\"40.971\">生きとし</span><span begin=\"40.971\" end=\"41.605\">生ける</span><span begin=\"41.605\" end=\"42.112\">人は</span><span begin=\"42.112\" end=\"42.446\">皆</span><span begin=\"42.446\" end=\"42.943\">々</span> <span begin=\"42.943\" end=\"43.410\">悩む</span><span begin=\"43.410\" end=\"43.919\">ように</span><span begin=\"43.919\" end=\"44.325\">でき</span><span begin=\"44.325\" end=\"44.830\">てる</span></p><p begin=\"44.830\" end=\"47.566\" itunes:key=\"L5\" ttm:agent=\"v1\"><span begin=\"44.830\" end=\"45.370\">なんだ</span><span begin=\"45.370\" end=\"45.879\">これは!?</span> <span ttm:role=\"x-bg\"><span begin=\"45.893\" end=\"46.633\">(なんなんだ</span><span begin=\"46.633\" end=\"46.981\">これ</span><span begin=\"46.981\" end=\"47.566\">は!?)</span></span></p><p begin=\"47.212\" end=\"50.435\" itunes:key=\"L6\" ttm:agent=\"v1\"><span begin=\"47.212\" end=\"47.884\">なんだか</span><span begin=\"47.884\" end=\"48.498\">難し</span><span begin=\"48.498\" end=\"49.300\">そうだけど</span> <span begin=\"49.300\" end=\"49.793\">やるぞ</span><span begin=\"49.793\" end=\"50.092\">スタン</span><span begin=\"50.092\" end=\"50.435\">バイ!</span></p></div><div begin=\"50.718\" end=\"59.930\" itunes:songPart=\"Verse\"><p begin=\"50.718\" end=\"55.401\" itunes:key=\"L7\" ttm:agent=\"v1\"><span begin=\"50.718\" end=\"51.246\">壁は</span><span begin=\"51.246\" end=\"52.107\">昇るか?</span><span begin=\"52.107\" end=\"52.545\">穴を</span><span begin=\"52.545\" end=\"53.397\">空けるか?</span><span begin=\"53.397\" end=\"54.169\">抜け道を</span><span begin=\"54.169\" end=\"54.848\">探す</span><span begin=\"54.848\" end=\"55.401\">か?</span></p><p begin=\"55.401\" end=\"59.930\" itunes:key=\"L8\" ttm:agent=\"v1\"><span begin=\"55.401\" end=\"55.845\">どれも</span><span begin=\"55.845\" end=\"56.352\">いいね</span><span begin=\"56.352\" end=\"56.936\">good!</span> <span begin=\"56.936\" end=\"57.699\">自分で</span><span begin=\"57.699\" end=\"58.275\">ちゃんと</span><span begin=\"58.275\" end=\"59.312\">考えたの</span><span begin=\"59.312\" end=\"59.674\">なら</span><span begin=\"59.674\" end=\"59.930\">!</span></p></div><div begin=\"59.966\" end=\"1:22.596\" itunes:songPart=\"Verse\"><p begin=\"59.966\" end=\"1:04.628\" itunes:key=\"L9\" ttm:agent=\"v1\"><span begin=\"59.966\" end=\"1:00.470\">振りの</span><span begin=\"1:00.470\" end=\"1:01.139\">ポーズが</span><span begin=\"1:01.139\" end=\"1:01.726\">全然</span><span begin=\"1:01.726\" end=\"1:02.548\">キマらない</span> <span ttm:role=\"x-bg\"><span begin=\"1:02.552\" end=\"1:03.590\">(焦んないで</span><span begin=\"1:03.590\" end=\"1:03.988\">日々</span><span begin=\"1:03.988\" end=\"1:04.263\">日々</span><span begin=\"1:04.263\" end=\"1:04.628\">go!)</span></span></p><p begin=\"1:05.194\" end=\"1:09.506\" itunes:key=\"L10\" ttm:agent=\"v1\"><span begin=\"1:05.194\" end=\"1:05.713\">歌の</span><span begin=\"1:05.713\" end=\"1:06.338\">ピッチも</span><span begin=\"1:06.338\" end=\"1:07.017\">ちっとも</span><span begin=\"1:07.017\" end=\"1:07.766\">合わない</span> <span ttm:role=\"x-bg\"><span begin=\"1:07.752\" end=\"1:08.372\">(まずは</span><span begin=\"1:08.372\" end=\"1:09.097\">エンジョイ</span><span begin=\"1:09.097\" end=\"1:09.506\">でしょ!)</span></span></p><p begin=\"1:09.516\" end=\"1:15.697\" itunes:key=\"L11\" ttm:agent=\"v1\"><span begin=\"1:09.516\" end=\"1:10.419\">負けないぞ</span> <span begin=\"1:10.419\" end=\"1:11.011\">敵は</span><span begin=\"1:11.011\" end=\"1:11.719\">自分</span><span begin=\"1:11.719\" end=\"1:12.361\">自身</span> <span begin=\"1:12.361\" end=\"1:13.009\">昨日</span><span begin=\"1:13.009\" end=\"1:13.630\">よりも</span><span begin=\"1:13.630\" end=\"1:14.524\">素敵な</span><span begin=\"1:14.524\" end=\"1:14.901\">私を</span><span begin=\"1:14.901\" end=\"1:15.697\">目指すの</span></p><p begin=\"1:15.837\" end=\"1:22.596\" itunes:key=\"L12\" ttm:agent=\"v1\"><span begin=\"1:15.837\" end=\"1:17.102\">目指した</span><span begin=\"1:17.102\" end=\"1:18.117\">先で</span> <span begin=\"1:18.117\" end=\"1:19.211\">キラキラ</span><span begin=\"1:19.211\" end=\"1:19.824\">ステージの</span><span begin=\"1:19.824\" end=\"1:20.370\">幕が</span><span begin=\"1:20.370\" end=\"1:20.707\">開</span><span begin=\"1:20.707\" end=\"1:22.596\">く</span> <span ttm:role=\"x-bg\"><span begin=\"1:20.913\" end=\"1:21.866\">(可能性を</span><span begin=\"1:21.866\" end=\"1:22.596\">信じて!)</span></span></p></div><div begin=\"1:22.606\" end=\"1:44.690\" itunes:songPart=\"Chorus\"><p begin=\"1:22.606\" end=\"1:27.724\" itunes:key=\"L13\" ttm:agent=\"v1\"><span begin=\"1:22.606\" end=\"1:23.398\">高まるぞ!</span><span begin=\"1:23.398\" end=\"1:24.043\">ぜったい</span> <span begin=\"1:24.043\" end=\"1:24.676\">いっぱい</span> <span begin=\"1:24.676\" end=\"1:25.458\">輝け!</span><span begin=\"1:25.458\" end=\"1:26.358\">人生は</span><span begin=\"1:26.358\" end=\"1:27.170\">一度きり</span><span begin=\"1:27.170\" end=\"1:27.724\">なんだ</span></p><p begin=\"1:27.724\" end=\"1:33.411\" itunes:key=\"L14\" ttm:agent=\"v1\"><span begin=\"1:27.724\" end=\"1:28.620\">そう君が</span> <span begin=\"1:28.620\" end=\"1:29.260\">勇気を</span><span begin=\"1:29.260\" end=\"1:29.752\">さ</span> <span begin=\"1:29.752\" end=\"1:30.558\">元気を</span><span begin=\"1:30.558\" end=\"1:30.836\">さ</span> <span begin=\"1:30.836\" end=\"1:31.527\">くれたんだよ</span> <span begin=\"1:31.527\" end=\"1:31.930\">何度も</span><span begin=\"1:31.930\" end=\"1:32.248\">何度も</span><span begin=\"1:32.248\" end=\"1:32.607\">何度も</span><span begin=\"1:32.607\" end=\"1:33.411\">ありがとう!</span></p><p begin=\"1:33.411\" end=\"1:38.283\" itunes:key=\"L15\" ttm:agent=\"v1\"><span begin=\"1:33.411\" end=\"1:34.137\">「できる!」って</span><span begin=\"1:34.137\" end=\"1:34.734\">叫ぼう</span> <span begin=\"1:34.734\" end=\"1:35.484\">「できる!」って</span><span begin=\"1:35.484\" end=\"1:36.049\">笑おう</span> <span begin=\"1:36.049\" end=\"1:36.884\">「できる!」って</span><span begin=\"1:36.884\" end=\"1:37.677\">走りだ</span><span begin=\"1:37.677\" end=\"1:38.283\">そう</span></p><p begin=\"1:38.030\" end=\"1:39.149\" itunes:key=\"L16\" ttm:agent=\"v1\"><span begin=\"1:38.030\" end=\"1:38.638\">いざゆけ</span><span begin=\"1:38.638\" end=\"1:39.149\">乙女!</span></p><p begin=\"1:39.149\" end=\"1:44.690\" itunes:key=\"L17\" ttm:agent=\"v1\"><span begin=\"1:39.149\" end=\"1:39.758\">Stepping</span> <span begin=\"1:39.758\" end=\"1:40.260\">now</span> <span begin=\"1:40.260\" end=\"1:40.924\">ワタシ</span><span begin=\"1:40.924\" end=\"1:41.628\">スピード</span><span begin=\"1:41.628\" end=\"1:42.287\">で</span><span begin=\"1:42.287\" end=\"1:42.839\">!</span><span begin=\"1:43.005\" end=\"1:43.752\">どうにも</span><span begin=\"1:43.752\" end=\"1:44.270\">止まら</span><span begin=\"1:44.270\" end=\"1:44.690\">ない!</span></p></div><div begin=\"1:44.690\" end=\"1:52.286\" itunes:songPart=\"Chorus\"><p begin=\"1:44.690\" end=\"1:47.202\" itunes:key=\"L18\" ttm:agent=\"v1\"><span begin=\"1:44.690\" end=\"1:45.017\">yeah</span> <span begin=\"1:45.017\" end=\"1:45.321\">yeah</span> <span begin=\"1:45.321\" end=\"1:45.687\">yeah</span> <span begin=\"1:45.687\" end=\"1:46.040\">続</span><span begin=\"1:46.040\" end=\"1:46.260\">け</span><span begin=\"1:46.260\" end=\"1:46.742\">Campus</span> <span begin=\"1:46.742\" end=\"1:47.202\">road</span></p><p begin=\"1:47.308\" end=\"1:49.833\" itunes:key=\"L19\" ttm:agent=\"v1\"><span begin=\"1:47.308\" end=\"1:47.616\">wow</span> <span begin=\"1:47.616\" end=\"1:47.928\">wow</span> <span begin=\"1:47.928\" end=\"1:48.272\">wow</span> <span begin=\"1:48.272\" end=\"1:48.808\">行くぞ</span><span begin=\"1:48.808\" end=\"1:49.278\">Campus</span> <span begin=\"1:49.278\" end=\"1:49.833\">mode</span></p><p begin=\"1:49.854\" end=\"1:52.286\" itunes:key=\"L20\" ttm:agent=\"v1\"><span begin=\"1:49.854\" end=\"1:50.195\">yeah</span> <span begin=\"1:50.195\" end=\"1:50.539\">yeah</span> <span begin=\"1:50.539\" end=\"1:50.894\">yeah</span> <span begin=\"1:50.894\" end=\"1:51.443\">続け</span><span begin=\"1:51.443\" end=\"1:51.947\">Campus</span> <span begin=\"1:51.947\" end=\"1:52.286\">road</span></p></div><div begin=\"1:52.296\" end=\"1:54.964\" itunes:songPart=\"Verse\"><p begin=\"1:52.296\" end=\"1:54.964\" itunes:key=\"L21\" ttm:agent=\"v1\"><span begin=\"1:52.296\" end=\"1:52.451\">まだ</span><span begin=\"1:52.451\" end=\"1:52.685\">まだ</span><span begin=\"1:52.685\" end=\"1:53.039\">行きます</span><span begin=\"1:53.039\" end=\"1:53.509\">よ</span> <span begin=\"1:53.509\" end=\"1:53.819\">on</span> <span begin=\"1:53.819\" end=\"1:54.115\">the</span> <span begin=\"1:54.115\" end=\"1:54.964\">stage!</span></p></div><div begin=\"1:55.049\" end=\"2:06.086\" itunes:songPart=\"Verse\"><p begin=\"1:55.049\" end=\"1:59.580\" itunes:key=\"L22\" ttm:agent=\"v1\"><span begin=\"1:55.049\" end=\"1:55.527\">道を</span><span begin=\"1:55.527\" end=\"1:56.263\">刻んだ</span><span begin=\"1:56.263\" end=\"1:56.951\">偉大な</span><span begin=\"1:56.951\" end=\"1:57.559\">歴史</span> <span begin=\"1:57.559\" end=\"1:58.284\">忘れず</span><span begin=\"1:58.284\" end=\"1:59.225\">リスペクト</span><span begin=\"1:59.225\" end=\"1:59.580\">だ</span></p><p begin=\"1:59.580\" end=\"2:01.949\" itunes:key=\"L23\" ttm:agent=\"v1\"><span begin=\"1:59.580\" end=\"2:00.392\">すごすぎる</span><span begin=\"2:00.392\" end=\"2:00.694\">ぞ!</span> <span ttm:role=\"x-bg\"><span begin=\"2:00.711\" end=\"2:01.280\">(ほんとに</span><span begin=\"2:01.280\" end=\"2:01.729\">すごい</span><span begin=\"2:01.729\" end=\"2:01.949\">ぞ!)</span></span></p><p begin=\"2:01.959\" end=\"2:06.086\" itunes:key=\"L24\" ttm:agent=\"v1\"><span begin=\"2:01.959\" end=\"2:02.252\">じゃあ</span><span begin=\"2:02.252\" end=\"2:02.617\">その</span><span begin=\"2:02.617\" end=\"2:03.538\">すごすぎる</span><span begin=\"2:03.538\" end=\"2:04.087\">バトン</span><span begin=\"2:04.087\" end=\"2:04.539\">ちゃんと</span><span begin=\"2:04.539\" end=\"2:04.975\">握っ</span><span begin=\"2:04.975\" end=\"2:05.434\">て</span> <span ttm:role=\"x-bg\"><span begin=\"2:05.427\" end=\"2:05.814\">(せー</span><span begin=\"2:05.814\" end=\"2:06.086\">の!)</span></span></p></div><div begin=\"2:06.096\" end=\"2:26.561\" itunes:songPart=\"Verse\"><p begin=\"2:06.096\" end=\"2:10.765\" itunes:key=\"L25\" ttm:agent=\"v1\"><span begin=\"2:06.096\" end=\"2:06.642\">腕は</span><span begin=\"2:06.642\" end=\"2:07.539\">振れるか?</span><span begin=\"2:07.539\" end=\"2:08.078\">前を</span><span begin=\"2:08.078\" end=\"2:08.808\">向けるか?</span><span begin=\"2:08.808\" end=\"2:09.536\">未来を</span><span begin=\"2:09.536\" end=\"2:10.404\">作れる</span><span begin=\"2:10.404\" end=\"2:10.765\">か?</span></p><p begin=\"2:10.765\" end=\"2:13.659\" itunes:key=\"L26\" ttm:agent=\"v1\"><span begin=\"2:10.765\" end=\"2:11.229\">これが</span><span begin=\"2:11.229\" end=\"2:11.762\">つまり</span><span begin=\"2:11.762\" end=\"2:12.349\">そうだ</span> <span begin=\"2:12.349\" end=\"2:13.071\">アイドル</span><span begin=\"2:13.071\" end=\"2:13.659\">なんだ</span></p><p begin=\"2:13.659\" end=\"2:16.859\" itunes:key=\"L27\" ttm:agent=\"v1\"><span begin=\"2:13.659\" end=\"2:14.505\">全力で</span><span begin=\"2:14.505\" end=\"2:14.996\">マスター!</span><span begin=\"2:14.996\" end=\"2:15.852\">お待たせ</span><span begin=\"2:15.852\" end=\"2:16.859\">しました!</span></p><p begin=\"2:16.517\" end=\"2:18.968\" itunes:key=\"L28\" ttm:agent=\"v1\"><span begin=\"2:16.517\" end=\"2:16.806\">順風</span><span begin=\"2:16.806\" end=\"2:17.258\">満帆</span> <span begin=\"2:17.258\" end=\"2:17.524\">やだ!</span><span begin=\"2:17.524\" end=\"2:17.834\">それなら</span><span begin=\"2:17.834\" end=\"2:18.304\">スカートの</span><span begin=\"2:18.304\" end=\"2:18.610\">裾に</span><span begin=\"2:18.610\" end=\"2:18.968\">注意!</span></p><p begin=\"2:18.968\" end=\"2:21.511\" itunes:key=\"L29\" ttm:agent=\"v1\"><span begin=\"2:18.968\" end=\"2:20.160\">アクシデント、</span><span begin=\"2:20.327\" end=\"2:20.745\">気を</span><span begin=\"2:20.745\" end=\"2:21.511\">つけて!</span></p><p begin=\"2:21.676\" end=\"2:24.477\" itunes:key=\"L30\" ttm:agent=\"v1\"><span begin=\"2:21.676\" end=\"2:22.213\">一礼</span><span begin=\"2:22.213\" end=\"2:22.474\">してから</span><span begin=\"2:22.474\" end=\"2:22.992\">挑戦</span> <span begin=\"2:23.034\" end=\"2:23.458\">挑戦</span><span begin=\"2:23.458\" end=\"2:23.885\">したんなら</span><span begin=\"2:23.885\" end=\"2:24.477\">一礼!</span></p><p begin=\"2:24.226\" end=\"2:26.561\" itunes:key=\"L31\" ttm:agent=\"v1\"><span begin=\"2:24.226\" end=\"2:25.396\">ひたむきさ</span><span begin=\"2:25.483\" end=\"2:26.198\">大事</span><span begin=\"2:26.198\" end=\"2:26.561\">です</span></p></div><div begin=\"2:26.561\" end=\"2:29.297\" itunes:songPart=\"Verse\"><p begin=\"2:26.561\" end=\"2:29.297\" itunes:key=\"L32\" ttm:agent=\"v1\"><span begin=\"2:26.561\" end=\"2:27.112\">諦</span><span begin=\"2:27.112\" end=\"2:27.342\">め</span><span begin=\"2:27.342\" end=\"2:27.769\">ない</span><span begin=\"2:27.769\" end=\"2:28.202\">から、</span><span begin=\"2:28.202\" end=\"2:28.680\">見て</span><span begin=\"2:28.680\" end=\"2:29.297\">てね!</span></p></div><div begin=\"2:28.855\" end=\"2:50.910\" itunes:songPart=\"Chorus\"><p begin=\"2:28.855\" end=\"2:33.950\" itunes:key=\"L33\" ttm:agent=\"v1\"><span begin=\"2:28.855\" end=\"2:29.592\">つまりは</span><span begin=\"2:29.592\" end=\"2:30.214\">後悔</span><span begin=\"2:30.214\" end=\"2:30.798\">なんて</span><span begin=\"2:30.798\" end=\"2:31.753\">しないよ</span> <span begin=\"2:31.753\" end=\"2:32.418\">私</span><span begin=\"2:32.418\" end=\"2:32.657\">が</span><span begin=\"2:32.657\" end=\"2:33.128\">決めた</span><span begin=\"2:33.128\" end=\"2:33.453\">道</span><span begin=\"2:33.453\" end=\"2:33.950\">なんだ</span></p><p begin=\"2:33.960\" end=\"2:39.645\" itunes:key=\"L34\" ttm:agent=\"v1\"><span begin=\"2:33.960\" end=\"2:34.915\">そう君も</span> <span begin=\"2:34.915\" end=\"2:35.430\">最初</span><span begin=\"2:35.430\" end=\"2:36.092\">から</span> <span begin=\"2:36.092\" end=\"2:36.658\">最後</span><span begin=\"2:36.658\" end=\"2:37.083\">まで</span> <span begin=\"2:37.083\" end=\"2:37.562\">応援</span><span begin=\"2:37.562\" end=\"2:37.878\">して</span><span begin=\"2:37.878\" end=\"2:38.517\">信じて愛して</span><span begin=\"2:38.517\" end=\"2:39.031\">着いてきて</span><span begin=\"2:39.031\" end=\"2:39.645\">欲しい!</span></p><p begin=\"2:39.645\" end=\"2:45.368\" itunes:key=\"L35\" ttm:agent=\"v1\"><span begin=\"2:39.645\" end=\"2:39.987\">論</span><span begin=\"2:39.987\" end=\"2:40.461\">より</span><span begin=\"2:40.461\" end=\"2:40.989\">証拠?</span> <span begin=\"2:40.989\" end=\"2:41.594\">結果</span><span begin=\"2:41.594\" end=\"2:41.949\">より</span><span begin=\"2:41.949\" end=\"2:42.362\">過程?</span> <span begin=\"2:42.362\" end=\"2:43.055\">いや全部</span><span begin=\"2:43.055\" end=\"2:43.883\">譲れない</span><span begin=\"2:43.883\" end=\"2:44.257\">ね</span> <span begin=\"2:44.257\" end=\"2:44.933\">欲張れ</span><span begin=\"2:44.933\" end=\"2:45.368\">乙女!</span></p><p begin=\"2:45.368\" end=\"2:50.910\" itunes:key=\"L36\" ttm:agent=\"v1\"><span begin=\"2:45.368\" end=\"2:45.746\">Rush</span> <span begin=\"2:45.746\" end=\"2:46.066\">&amp;</span> <span begin=\"2:46.066\" end=\"2:46.565\">dash</span> <span begin=\"2:46.576\" end=\"2:47.187\">ワタシ</span><span begin=\"2:47.187\" end=\"2:47.878\">スピード</span><span begin=\"2:47.878\" end=\"2:49.118\">は</span><span begin=\"2:49.315\" end=\"2:49.886\">計測</span><span begin=\"2:49.886\" end=\"2:50.910\">できません!</span></p></div><div begin=\"2:50.328\" end=\"3:01.256\" itunes:songPart=\"Chorus\"><p begin=\"2:50.328\" end=\"2:55.614\" itunes:key=\"L37\" ttm:agent=\"v1\"><span begin=\"2:50.328\" end=\"2:51.214\">失敗</span><span begin=\"2:51.214\" end=\"2:51.822\">したって</span><span begin=\"2:51.822\" end=\"2:52.698\">いいんだよ</span> <span begin=\"2:52.698\" end=\"2:53.143\">学</span><span begin=\"2:53.143\" end=\"2:53.626\">びの</span><span begin=\"2:53.626\" end=\"2:54.152\">チャンス</span> <span begin=\"2:54.152\" end=\"2:54.893\">成長の</span><span begin=\"2:54.893\" end=\"2:55.614\">合図</span></p><p begin=\"2:55.125\" end=\"3:01.256\" itunes:key=\"L38\" ttm:agent=\"v1\"><span begin=\"2:55.125\" end=\"2:55.810\">まだまだ</span><span begin=\"2:55.810\" end=\"2:56.442\">伸び</span><span begin=\"2:56.442\" end=\"2:57.157\">しろ</span><span begin=\"2:57.157\" end=\"2:57.925\">あります</span> <span begin=\"2:57.925\" end=\"2:58.341\">そんな</span><span begin=\"2:58.341\" end=\"2:58.877\">感じで</span><span begin=\"2:58.877\" end=\"2:59.629\">Campus modeは</span><span begin=\"2:59.629\" end=\"3:00.376\">無限大</span><span begin=\"3:00.376\" end=\"3:01.256\">まで!</span></p></div><div begin=\"3:13.652\" end=\"3:23.882\" itunes:songPart=\"Bridge\"><p begin=\"3:13.652\" end=\"3:17.080\" itunes:key=\"L39\" ttm:agent=\"v1\"><span begin=\"3:13.652\" end=\"3:14.402\">君と</span><span begin=\"3:14.402\" end=\"3:14.970\">私</span><span begin=\"3:14.970\" end=\"3:15.377\">で見</span><span begin=\"3:15.377\" end=\"3:15.741\">た</span><span begin=\"3:15.741\" end=\"3:16.080\">ことない</span><span begin=\"3:16.080\" end=\"3:16.558\">景色を</span><span begin=\"3:16.558\" end=\"3:17.080\">見よう</span></p><p begin=\"3:17.180\" end=\"3:23.882\" itunes:key=\"L40\" ttm:agent=\"v1\"><span begin=\"3:17.180\" end=\"3:17.796\">見た</span><span begin=\"3:17.796\" end=\"3:18.740\">ことない</span><span begin=\"3:18.740\" end=\"3:19.412\">ステージ!</span><span begin=\"3:19.412\" end=\"3:20.018\">きっと</span><span begin=\"3:20.018\" end=\"3:20.497\">きっと</span><span begin=\"3:20.497\" end=\"3:21.189\">たどり</span><span begin=\"3:21.189\" end=\"3:21.961\">着けるよ</span><span begin=\"3:21.961\" end=\"3:23.882\">ね</span> <span ttm:role=\"x-bg\"><span begin=\"3:22.227\" end=\"3:23.256\">(可能性を</span><span begin=\"3:23.256\" end=\"3:23.882\">信じて!)</span></span></p></div><div begin=\"3:23.892\" end=\"3:32.182\" itunes:songPart=\"Chorus\"><p begin=\"3:23.892\" end=\"3:30.190\" itunes:key=\"L41\" ttm:agent=\"v1\"><span begin=\"3:23.892\" end=\"3:25.051\">信じたら</span> <span begin=\"3:25.369\" end=\"3:26.018\">ぜったい</span> <span begin=\"3:26.018\" end=\"3:26.672\">いっぱい</span> <span begin=\"3:26.672\" end=\"3:27.183\">輝</span><span begin=\"3:27.183\" end=\"3:27.557\">け!</span><span begin=\"3:27.557\" end=\"3:28.360\">未来を</span><span begin=\"3:28.360\" end=\"3:29.429\">明るくしよう、</span><span begin=\"3:29.429\" end=\"3:30.190\">するぞ!</span></p><p begin=\"3:30.190\" end=\"3:32.182\" itunes:key=\"L42\" ttm:agent=\"v1\"><span begin=\"3:30.190\" end=\"3:30.570\">だから</span><span begin=\"3:30.570\" end=\"3:30.942\">Campus</span> <span begin=\"3:30.942\" end=\"3:31.260\">modeで</span> <span begin=\"3:31.260\" end=\"3:31.619\">もういっ</span><span begin=\"3:31.619\" end=\"3:31.919\">ちょ</span><span begin=\"3:31.919\" end=\"3:32.182\">!</span></p></div><div begin=\"3:32.430\" end=\"4:00.196\" itunes:songPart=\"Chorus\"><p begin=\"3:32.430\" end=\"3:37.579\" itunes:key=\"L43\" ttm:agent=\"v1\"><span begin=\"3:32.430\" end=\"3:33.187\">高まるぞ!</span><span begin=\"3:33.187\" end=\"3:33.870\">ぜったい</span> <span begin=\"3:33.870\" end=\"3:34.553\">いっぱい</span> <span begin=\"3:34.553\" end=\"3:35.043\">輝</span><span begin=\"3:35.043\" end=\"3:35.376\">け!</span><span begin=\"3:35.376\" end=\"3:36.158\">人生は</span><span begin=\"3:36.158\" end=\"3:36.763\">一度</span><span begin=\"3:36.763\" end=\"3:37.051\">きり</span><span begin=\"3:37.051\" end=\"3:37.579\">なんだ</span></p><p begin=\"3:37.579\" end=\"3:43.315\" itunes:key=\"L44\" ttm:agent=\"v1\"><span begin=\"3:37.579\" end=\"3:38.475\">そう君が</span> <span begin=\"3:38.475\" end=\"3:39.115\">勇気を</span><span begin=\"3:39.115\" end=\"3:39.607\">さ</span> <span begin=\"3:39.607\" end=\"3:40.413\">元気を</span><span begin=\"3:40.413\" end=\"3:40.691\">さ</span> <span begin=\"3:40.691\" end=\"3:41.382\">くれたんだよ</span> <span begin=\"3:41.382\" end=\"3:41.785\">何度も</span><span begin=\"3:41.785\" end=\"3:42.103\">何度も</span><span begin=\"3:42.103\" end=\"3:42.462\">何度も</span><span begin=\"3:42.462\" end=\"3:43.315\">ありがとう!</span></p><p begin=\"3:43.325\" end=\"3:48.091\" itunes:key=\"L45\" ttm:agent=\"v1\"><span begin=\"3:43.325\" end=\"3:43.958\">「できる!」って</span><span begin=\"3:43.958\" end=\"3:44.635\">叫ぼう</span> <span begin=\"3:44.635\" end=\"3:45.318\">「できる!」って</span><span begin=\"3:45.318\" end=\"3:45.962\">笑おう</span> <span begin=\"3:45.962\" end=\"3:46.738\">「できる!」って</span><span begin=\"3:46.738\" end=\"3:47.399\">走りだ</span><span begin=\"3:47.399\" end=\"3:48.091\">そう</span></p><p begin=\"3:47.713\" end=\"3:48.975\" itunes:key=\"L46\" ttm:agent=\"v1\"><span begin=\"3:47.713\" end=\"3:48.470\">いざゆけ</span><span begin=\"3:48.470\" end=\"3:48.975\">乙女!</span></p><p begin=\"3:48.985\" end=\"3:54.205\" itunes:key=\"L47\" ttm:agent=\"v1\"><span begin=\"3:48.985\" end=\"3:49.573\">Stepping</span> <span begin=\"3:49.573\" end=\"3:50.197\">now</span> <span begin=\"3:50.197\" end=\"3:50.803\">ワタシ</span><span begin=\"3:50.803\" end=\"3:51.504\">スピード</span><span begin=\"3:51.504\" end=\"3:52.478\">で!</span><span begin=\"3:52.847\" end=\"3:53.558\">邁進</span><span begin=\"3:53.558\" end=\"3:54.205\">nowです</span></p><p begin=\"3:54.205\" end=\"4:00.196\" itunes:key=\"L48\" ttm:agent=\"v1\"><span begin=\"3:54.205\" end=\"3:54.859\">Stepping</span> <span begin=\"3:54.859\" end=\"3:55.414\">now</span> <span begin=\"3:55.414\" end=\"3:56.687\">ワタシスピード</span><span begin=\"3:56.687\" end=\"3:57.628\">で!</span><span begin=\"3:57.971\" end=\"3:58.820\">一緒に</span><span begin=\"3:58.820\" end=\"3:59.491\">駆けてい</span><span begin=\"3:59.491\" end=\"4:00.196\">こう!</span></p></div><div begin=\"3:59.792\" end=\"4:11.500\" itunes:songPart=\"Chorus\"><p begin=\"3:59.792\" end=\"4:02.304\" itunes:key=\"L49\" ttm:agent=\"v1\"><span begin=\"3:59.792\" end=\"4:00.119\">yeah</span> <span begin=\"4:00.119\" end=\"4:00.423\">yeah</span> <span begin=\"4:00.423\" end=\"4:00.754\">yeah</span> <span begin=\"4:00.754\" end=\"4:01.139\">続</span><span begin=\"4:01.139\" end=\"4:01.335\">け</span><span begin=\"4:01.335\" end=\"4:01.851\">Campus</span> <span begin=\"4:01.851\" end=\"4:02.304\">road</span></p><p begin=\"4:02.344\" end=\"4:04.869\" itunes:key=\"L50\" ttm:agent=\"v1\"><span begin=\"4:02.344\" end=\"4:02.652\">wow</span> <span begin=\"4:02.652\" end=\"4:02.964\">wow</span> <span begin=\"4:02.964\" end=\"4:03.308\">wow</span> <span begin=\"4:03.308\" end=\"4:03.930\">行くぞ</span><span begin=\"4:03.930\" end=\"4:04.355\">Campus</span> <span begin=\"4:04.355\" end=\"4:04.869\">mode</span></p><p begin=\"4:04.967\" end=\"4:07.479\" itunes:key=\"L51\" ttm:agent=\"v1\"><span begin=\"4:04.967\" end=\"4:05.294\">yeah</span> <span begin=\"4:05.294\" end=\"4:05.598\">yeah</span> <span begin=\"4:05.598\" end=\"4:05.929\">yeah</span> <span begin=\"4:05.929\" end=\"4:06.314\">続</span><span begin=\"4:06.314\" end=\"4:06.510\">け</span><span begin=\"4:06.510\" end=\"4:07.026\">Campus</span> <span begin=\"4:07.026\" end=\"4:07.479\">road</span></p><p begin=\"4:07.562\" end=\"4:11.500\" itunes:key=\"L52\" ttm:agent=\"v1\"><span begin=\"4:07.562\" end=\"4:07.870\">wow</span> <span begin=\"4:07.870\" end=\"4:08.182\">wow</span> <span begin=\"4:08.182\" end=\"4:08.526\">wow</span> <span begin=\"4:08.526\" end=\"4:09.148\">行くぞ</span><span begin=\"4:09.148\" end=\"4:09.673\">Campus</span> <span begin=\"4:09.673\" end=\"4:09.925\">mo</span><span begin=\"4:09.925\" end=\"4:11.500\">de</span></p></div></body></tt>",
                "playParams": {
                    "id": "AP_1749006701",
                    "kind": "lyric",
                    "catalogId": "1749006701",
                    "displayType": 3
                }
            }
        }
    ]
}

​ 然后询问 ChatGPT,让他把这里面 ttml 的内容转换成有时间戳的歌词,并将这个歌词转换成 .lrc 版输出出来

​ 如果提示太长,无法输入,就把他新建一个 lyrics.json 文件,然后把内容复制粘贴上去,给 ChatGPT 吃 json 文件

这边也提供了一个可以将上面的 lyrics.json 文件转换成 .ttml 文件的 python 脚本1

​ 最后生成的是类似这样的文件,带时间戳 [mm:ss.ms] 和歌词的

1
2
3
4
5
[00:13.89]ぜったいいっぱい輝け!未来を明るくしよう、するぞ!
[00:18.64]だからSteppingnowワタシスピードで!邁進あそばせ!
[00:26.98]Campusmodeで一緒に駆け抜けるぞyeah!
[00:40.25]生きとし生ける人は皆々悩むようにできてる
[00:44.83]なんだこれは!?(なんなんだこれは!?)

三、编辑 index.html

​ 在播放器根目录下新建一个和歌曲名有关的文件夹(这里是 CampusMode_月村手毬solo),然后将 歌曲、封面、歌词 都传上去,并填入对应的 url cover lrc 下,并完善 nameartist 等细节

​ 编辑播放器根目录下的 index.html 文件 下面的 <script> 标签

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
<script>
   var userType = "playlist";
   var localMusic =[{
      name: 'Luna say maybe',
      artist: '月村手毬',
      url: 'Luna_say_maybe_月村手毬/music.mp3',
      cover: 'Luna_say_maybe_月村手毬/cover.jpg',
      lrc: 'Luna_say_maybe_月村手毬/LunaSayMaybe.lrc'
  },
  {
      name: 'Campus mode!! [月村手毬 Solo ver.]',
      artist: '月村手毬',
      url: 'CampusMode_月村手毬solo/music.mp3',
      cover: 'CampusMode_月村手毬solo/cover.jpg',
      lrc: 'CampusMode_月村手毬solo/Campusmode!!.lrc'
  }
  ];
</script>

四、配置 nginx 配置文件

​ 可以在主网站下面的 nginx 配置文件里添加上这么一段配置

1
2
3
4
5
    # 配置 /music 路径
    location /music {
        root /home/wwwroot;
        index index.html;
    }

​ 比方说这个网站

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
server {
    listen 80;
    server_name anitsuri.top;

    # 重定向 HTTP 到 HTTPS
    return 301 https://$host$request_uri;
}

server {
    listen 443 ssl;
    server_name anitsuri.top;

    # SSL 配置
	......

    # 网站根目录
    root /home/wwwroot/site;
    index index.html;


    # 配置 /music 路径
    location /music {
        root /home/wwwroot;
        index index.html;
    }

    # 额外的安全配置
	......
}

​ 那这样出来的 URL 就是 https://anitsuri.top/music

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
import json
import sys
from xml.dom.minidom import parseString

def format_ttml(ttml_content):
    """Format TTML content to make it more readable."""
    try:
        dom = parseString(ttml_content)
        return dom.toprettyxml(indent="  ")
    except Exception as e:
        print(f"Error formatting TTML: {e}")
        return ttml_content

def extract_ttml_from_json(json_file, output_ttml):
    """Extract TTML content from JSON file and write to formatted TTML file."""
    try:
        with open(json_file, 'r', encoding='utf-8') as f:
            data = json.load(f)
        
        # Assuming the TTML content is located at data['data'][0]['attributes']['ttml']
        ttml_content = data['data'][0]['attributes']['ttml']
        
        # Format the TTML content
        formatted_ttml = format_ttml(ttml_content)
        
        # Write the formatted TTML content to the output file
        with open(output_ttml, 'w', encoding='utf-8') as ttml_file:
            ttml_file.write(formatted_ttml)
        
        print(f"TTML content extracted and saved to {output_ttml}")
    except KeyError as e:
        print(f"Error: Missing key in JSON structure - {e}")
    except Exception as e:
        print(f"Error: {e}")

if __name__ == "__main__":
    if len(sys.argv) != 3:
        print("Usage: python extract_ttml.py <input_json_file> <output_ttml_file>")
    else:
        input_json = sys.argv[1]
        output_ttml = sys.argv[2]
        extract_ttml_from_json(input_json, output_ttml)

  1. python 脚本在这里,对从 Apple Music 上复制过来的 syllable-lyrics 文件可用 ↩︎

Licensed under CC BY-NC-SA 4.0
comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计
备案图标 辽公网安备21010602001101 辽ICP备2024027190号-1