在网站上看到一个界面好看的音乐播放器,是GPT-4.1写的。有旋转的黑胶唱片封面、浮动的歌词显示。(程序读取歌曲内嵌的封面和歌词及目录下同名LRC。)全AI写的,没有写一句程序,大家可以随意魔改自己想要的功能。目录里有编译好的EXE文件,也有源码。(百度链接和夸克网盘)
Python代码如下:
import sys
import os
from PyQt5.QtWidgets import (
QApplication, QWidget, QLabel, QPushButton, QSlider, QHBoxLayout, QVBoxLayout, QGridLayout, QFileDialog, QListWidget, QListWidgetItem, QMenu
)
from PyQt5.QtCore import Qt, QTimer, QUrl, QByteArray, pyqtSignal
from PyQt5.QtGui import QPixmap, QPainter, QTransform, QPainterPath, QFont, QColor, QLinearGradient, QBrush, QPen, QCursor
from mutagen.mp3 import MP3
from mutagen.id3 import ID3, APIC
from PyQt5.QtMultimedia import QMediaPlayer, QMediaContent
import vlc
import re
def resource_path(relative_path):
if hasattr(sys, '_MEIPASS'):
return os.path.join(sys._MEIPASS, relative_path)
return os.path.join(os.path.abspath("."), relative_path)
# 旋转封面控件
class RotatingCover(QLabel):
def __init__(self, song_path, default_cover="fm.png"):
super().__init__()
self.angle = 0
self.pixmap = self.load_cover(song_path, default_cover)
if self.pixmap.isNull():
self.setText("未找到封面")
self.setStyleSheet("color: #fff; background: #666; border-radius: 125px; font-size: 20px;")
self.timer = QTimer(self)
self.timer.timeout.connect(self.rotate)
self.timer.start(50) # 旋转速度
def load_cover(self, song_path, default_cover):
# 1. 尝试同名jpg
base, _ = os.path.splitext(song_path)
jpg_path = base + ".jpg"
if os.path.exists(jpg_path):
return QPixmap(jpg_path)
# 2. 尝试MP3内嵌封面
try:
audio = MP3(song_path, ID3=ID3)
for tag in audio.tags.values():
if isinstance(tag, APIC):
ba = QByteArray(tag.data)
pixmap = QPixmap()
pixmap.loadFromData(ba)
if not pixmap.isNull():
return pixmap
except Exception as e:
pass
# 3. 默认封面
if os.path.exists(default_cover):
return QPixmap(default_cover)
return QPixmap() # 空pixmap
def rotate(self):
if sel