全AI写音乐播放器(Winamp),尽情魔改

在网站上看到一个界面好看的音乐播放器,是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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值