Python ile Mp3 player

klamhat

Üye
8 Ocak 2011
103
45
Selam,

Hiç uzatmayayım ;
Python:
import sys
from PyQt5.QtWidgets import QApplication, QWidget, QPushButton, QVBoxLayout, QFileDialog, QLabel, QSlider
from PyQt5.QtMultimedia import QMediaPlayer, QMediaContent
from PyQt5.QtCore import Qt, QUrl, QTimer

class MP3Player(QWidget):
    def __init__(self):
        super().__init__()

        self.initUI()

    def initUI(self):
        self.setWindowTitle('Klamhat - MP3 Player')
        self.setFixedSize(400, 300)

        self.mediaPlayer = QMediaPlayer(None, QMediaPlayer.StreamPlayback)
        self.mediaPlayer.positionChanged.connect(self.updatePosition)

        self.playButton = QPushButton('Play')
        self.playButton.setStyleSheet("background-color: #4CAF50; color: white;")
        self.playButton.clicked.connect(self.play)

        self.pauseButton = QPushButton('Pause')
        self.pauseButton.setStyleSheet("background-color: #f44336; color: white;")
        self.pauseButton.clicked.connect(self.pause)

        self.openButton = QPushButton('Open')
        self.openButton.setStyleSheet("background-color: #008CBA; color: white;")
        self.openButton.clicked.connect(self.openFile)

        self.volumeLabel = QLabel('Volume')
        self.volumeLabel.setAlignment(Qt.AlignCenter)
        self.volumeLabel.setStyleSheet("font-size: 14px;")

        self.volumeSlider = QSlider(Qt.Horizontal)
        self.volumeSlider.setRange(0, 100)
        self.volumeSlider.setValue(50)
        self.volumeSlider.sliderMoved.connect(self.setVolume)

        self.timeLabel = QLabel('00:00 / 00:00')
        self.fileLabel = QLabel('No File Selected')

        self.positionSlider = QSlider(Qt.Horizontal)
        self.positionSlider.setRange(0, 0)
        self.positionSlider.sliderMoved.connect(self.setPosition)

        vbox = QVBoxLayout()
        vbox.addWidget(self.fileLabel)
        vbox.addWidget(self.playButton)
        vbox.addWidget(self.pauseButton)
        vbox.addWidget(self.openButton)
        vbox.addWidget(self.volumeLabel)
        vbox.addWidget(self.volumeSlider)
        vbox.addWidget(self.timeLabel)
        vbox.addWidget(self.positionSlider)

        self.setLayout(vbox)

        self.timer = QTimer(self)
        self.timer.timeout.connect(self.updatePosition)

    def play(self):
        if self.mediaPlayer.state() == QMediaPlayer.PlayingState:
            self.mediaPlayer.setPosition(0)
        else:
            self.mediaPlayer.play()
            self.timer.start(1000)

    def pause(self):
        self.mediaPlayer.pause()
        self.timer.stop()

    def openFile(self):
        fileName, _ = QFileDialog.getOpenFileName(self, "Open MP3 File", "", "MP3 Files (*.mp3)")

        if fileName != '':
            self.mediaPlayer.setMedia(QMediaContent(QUrl.fromLocalFile(fileName)))
            self.play()
            self.fileLabel.setText(fileName.split("/")[-1])

    def setPosition(self, position):
        self.mediaPlayer.setPosition(position)

    def updatePosition(self):
        position = self.mediaPlayer.position()
        duration = self.mediaPlayer.duration()

        self.positionSlider.blockSignals(True)
        self.positionSlider.setValue(position)
        self.positionSlider.setRange(0, duration)
        self.positionSlider.blockSignals(False)

        position_str = self.formatTime(position)
        duration_str = self.formatTime(duration)

        self.timeLabel.setText(f'{position_str} / {duration_str}')

    def formatTime(self, millis):
        seconds = millis // 1000
        minutes = seconds // 60
        seconds %= 60
        return '{:02}:{:02}'.format(minutes, seconds)

    def setVolume(self, volume):
        self.mediaPlayer.setVolume(volume)

if __name__ == '__main__':
    app = QApplication(sys.argv)
    mp3player = MP3Player()
    mp3player.show()
    sys.exit(app.exec_())

9cczogs.png


 
Üst

Turkhackteam.org internet sitesi 5651 sayılı kanun’un 2. maddesinin 1. fıkrasının m) bendi ile aynı kanunun 5. maddesi kapsamında "Yer Sağlayıcı" konumundadır. İçerikler ön onay olmaksızın tamamen kullanıcılar tarafından oluşturulmaktadır. Turkhackteam.org; Yer sağlayıcı olarak, kullanıcılar tarafından oluşturulan içeriği ya da hukuka aykırı paylaşımı kontrol etmekle ya da araştırmakla yükümlü değildir. Türkhackteam saldırı timleri Türk sitelerine hiçbir zararlı faaliyette bulunmaz. Türkhackteam üyelerinin yaptığı bireysel hack faaliyetlerinden Türkhackteam sorumlu değildir. Sitelerinize Türkhackteam ismi kullanılarak hack faaliyetinde bulunulursa, site-sunucu erişim loglarından bu faaliyeti gerçekleştiren ip adresini tespit edip diğer kanıtlarla birlikte savcılığa suç duyurusunda bulununuz.