Я создаю тегедитор, который отображает ID3-теги mp3-файла в стиле «до» и «после» в различных текстовых строках.Если нет доступных тегов, ничего не отображается.Вы также можете редактировать текстовые строки "after", и любые сделанные в них изменения должны быть сохранены в файл, но когда я нажимаю кнопку2, я получаю нижнюю трассировку.Как я могу сохранить строки 6-10 как новые "audio [" title "], audio [" artist "]" и т. Д.? Это графический интерфейс пользователя
import sys
import easygui
import mutagen
from mutagen.easyid3 import EasyID3
from PyQt5.QtCore import pyqtSlot
from PyQt5.QtWidgets import QApplication, QDialog
from PyQt5.uic import loadUi
from PyQt5.QtWidgets import QLineEdit
lied = None
error = "No ID3-Tag available."
class TrackTag1(QDialog):
def __init__(self):
super(TrackTag1,self).__init__()
loadUi("TrackTag1.ui",self)
self.setWindowTitle("TrackTag")
@pyqtSlot()
def on_button1_clicked(self):
#root.fileName = filedialog.askopenfilename( filetypes = ( ("Musik Dateien", "*.mp3"), ("Alle Dateien", "*.*") ) )
#print(easygui.fileopenbox('MP3 Dateien','', '*.MP3'))
lied = easygui.fileopenbox('MP3 Dateien','', '*.MP3')
audio = EasyID3(lied)
self.line0.setText(lied) #printing filepath to line0
try:
self.line1.setText(str(audio["title"]).strip("[']")) #printing the ID3 tags after they've been stripped of "['']"
self.line6.setText(str(audio["title"]).strip("[']"))
except:
KeyError
self.line1.setText(error)
try:
self.line2.setText(str(audio["album"]).strip("[']"))
self.line7.setText(str(audio["album"]).strip("[']"))
except:
KeyError
self.line2.setText(error)
try:
self.line3.setText(str(audio["date"]).strip("[']"))
self.line8.setText(str(audio["date"]).strip("[']"))
except:
KeyError
self.line3.setText(error)
try:
self.line4.setText(str(audio["artist"]).strip("[']"))
self.line9.setText(str(audio["artist"]).strip("[']"))
except:
KeyError
self.line4.setText(error)
try:
self.line5.setText(str(audio["genre"]).strip("[']"))
self.line10.setText(str(audio["genre"]).strip("[']"))
except:
KeyError
self.line5.setText(error)
def on_button2_clicked(self):
audio = EasyID3(lied)
audio["title"] = self.line6.text()
audio.save()
app=QApplication(sys.argv)
widget=TrackTag1()
widget.show()
sys.exit(app.exec_())
app=QApplication(sys.argv)
widget=TrackTag1()
widget.show()
sys.exit(app.exec_())
Когда я нажимаю кнопку сохранения изменений, я получаю эту трассировку:
Traceback (most recent call last):
File "<string>", line 69, in on_button2_clicked
File "h:\program files (x86)\python\lib\site-packages\mutagen\_util.py", line 139, in wrapper
writable, create) as h:
File "h:\program files (x86)\python\lib\contextlib.py", line 59, in __enter__
return next(self.gen)
File "h:\program files (x86)\python\lib\site-packages\mutagen\_util.py", line 270, in _openfile
raise TypeError("Missing filename or fileobj argument")
TypeError: Missing filename or fileobj argument
Пока вы можете толькоотредактировать теги, но я планирую вскоре выполнить запрос MusicBrainz.