Ich habe vor einigen Jahren vom iPod zum Sony Walkman gewechselt. Mit walkman können Sie die Texte anzeigen. Wenn Sie die Zeitinformationen in jede Zeile der Texte eingeben, wird entsprechend dem Lied oder der englischen Konversation gescrollt. Es ist sehr praktisch, um das Singen zu üben und Englisch zu lernen. Die Texte in der MP3 / MP4-Datei werden jedoch nicht angezeigt, und der Text muss in der LRC-Datei gespeichert werden, die den Texten gewidmet ist.
Bisher konnten Sie mit der von Sony bereitgestellten Software "Media Go" in iTunes gespeicherte Titel für den iPod abspielen, an walkman übertragen, die Eigenschaften der einzelnen Titel in iTunes öffnen und den Text kopieren. Dann habe ich es auf der Media Go-Seite eingefügt und die Textzeit bearbeitet. Dieser Übertragungsprozess wurde langwierig und ich erstellte ein Python-Skript, das den Text aus der MP3 / MP4-Datei extrahiert und in der LRC-Datei speichert. Sie können einfach die Texte anzeigen oder ein Verzeichnis angeben, um LRC-Dateien für alle Dateien gleichzeitig zu erstellen.
Benötigt Python3 und Mutagen-Modul. Ich verwende es in einer Windows-Umgebung und japanische Songs haben viele japanische Dateinamen, daher brauchte ich Python3, um gut mit Japanisch umgehen zu können. Ich habe auch das Mutagen-Modul installiert und mit pip verwendet, um Textinformationen aus MP3 / MP4 zu lesen.
$ pip3 install mutagen
Oder
$ python3 -m pip install mutagen
Oder
$ sudo python3 -m pip install mutagen
$ lyrics.py -h
usage: lyrics.py [-h] [-l] [-s] [-c] [-r] file [file ...]
positional arguments:
file file or directory name
optional arguments:
-h, --help show this help message and exit
-l, --list show file names containing lyrics (default)
-s, --show show lyrics
-c, --create create "*.lrc" lyrics files if it does not exist
-r, --replace create or replace "*.lrc" lyrics files
$ lyrics.py -l .
$ lyrics.py -s "1-01 Just The Way You Are.mp3"
$ lyrics.py -s "Billy Joel"
$ lyrics.py -c "Billy Joel"
$ lyrics.py -r "Billy Joel"
github
https://github.com/shiracamus/lyrics_converter
#!/usr/bin/env python3
# -*- coding:utf-8 -*-
#
# Lyrics converter
#
# version: 2017.4.18
# author: @shiracamus
# github: https://github.com/shiracamus/lyrics_converter
#
# Need to install mutagen module
# $ python3 -m pip install mutagen
# or
# $ sudo python3 -m pip install mutagen
#
import os
import sys
import argparse
from mutagen.id3 import ID3, ID3NoHeaderError
from mutagen.mp4 import MP4, MP4StreamInfoError
def read_lyrics_in_mp3(path):
try:
tags = ID3(path)
for key in tags:
if key.startswith('USLT'):
return tags[key].text
except ID3NoHeaderError:
pass
return None
def read_lyrics_in_mp4(path):
try:
tags = MP4(path).tags
if '\xa9lyr' in tags:
return tags['\xa9lyr'][0]
except MP4StreamInfoError:
pass
return None
def read_lyrics(path):
return (read_lyrics_in_mp3(path) or
read_lyrics_in_mp4(path) or
None)
class Lyrics:
def __init__(self, path):
self.path = path
self.path_base, self.path_ext = os.path.splitext(path)
self.text = read_lyrics(path)
self.exists = bool(self.text)
def __repr__(self):
return '<base="%s", ext="%s", lyrics=%s>' % (self.path_base,
self.path_ext,
self.exists)
class LRC:
ext = '.lrc'
def __init__(self, path):
self.path = path
self.exists = os.path.exists(self.path)
def save(self, text):
with open(self.path, 'w') as f:
f.write(text)
self.exists = True
def show_filename(lyrics):
print(lyrics.path)
def show_lyrics(lyrics):
print('=' * 30)
print(lyrics.path)
print('-' * 30)
print(lyrics.text)
print()
def save_lrc(lyrics, replace=False):
lrc = LRC(lyrics.path_base + LRC.ext)
if not lrc.exists or replace:
lrc.save(lyrics.text)
print('Saved "%s"' % lrc.path)
else:
print('Already exists "%s"' % lrc.path)
def pathes(files_and_directories):
for file_or_directory in files_and_directories:
if os.path.isfile(file_or_directory):
yield file_or_directory
elif os.path.isdir(file_or_directory):
for root, dirs, files in os.walk(file_or_directory):
for filename in files:
yield os.path.join(root, filename)
def parse_args():
p = argparse.ArgumentParser()
p.add_argument('-l', '--list', action='store_true',
help='show file names containing lyrics (default)')
p.add_argument('-s', '--show', action='store_true',
help='show lyrics')
p.add_argument('-c', '--create', action='store_true',
help='create "*.lrc" lyrics files if it does not exist')
p.add_argument('-r', '--replace', action='store_true',
help='create or replace "*.lrc" lyrics files')
p.add_argument('file', nargs='+', default='.',
help='file or directory name')
args = p.parse_args()
if not (args.show or args.create or args.replace):
args.list = True
return args
def main(args):
for path in pathes(args.file):
lyrics = Lyrics(path)
if not lyrics.text:
continue
if args.list:
show_filename(lyrics)
if args.show:
show_lyrics(lyrics)
if args.create or args.replace:
save_lrc(lyrics, replace=args.replace)
if __name__ == '__main__':
main(parse_args())
In-Source-Kommentare werden nacheinander hinzugefügt. Ich möchte in der Lage sein, andere als MP3 / MP4 zu verarbeiten. Bitte lassen Sie mich wissen, wenn Sie die Verarbeitungsmethode kennen. Ich möchte auch einen GUI-Wrapper erstellen. Es wäre großartig, wenn Zeitinformationen automatisch erstellt werden könnten, aber es gibt immer noch keine Bibliothek, die Stimmen aus Songs erkennt und Texte erstellt, oder?
Recommended Posts