Development. Just some dev

This commit is contained in:
BarsTiger
2021-09-15 21:26:04 +03:00
parent fa15f7d0f3
commit f64f067c57

View File

@@ -1,6 +1,7 @@
import threading import threading
import time import time
from tkinter import * from tkinter import *
import platform
import sys, subprocess, os import sys, subprocess, os
import urllib.parse import urllib.parse
import json import json
@@ -31,7 +32,13 @@ except:
def cls(): def cls():
os.system('cls' if os.name == 'nt' else 'clear') os.system('cls' if os.name == 'nt' else 'clear')
class Ui_MainWindow(object): instance = vlc.Instance()
media = None
mediaplayer = instance.media_player_new()
is_paused = False
timeToSleep = 0
class Ui_MainWindow(QtWidgets.QMainWindow):
def setupUi(self, MainWindow): def setupUi(self, MainWindow):
MainWindow.setObjectName("MainWindow") MainWindow.setObjectName("MainWindow")
MainWindow.resize(801, 580) MainWindow.resize(801, 580)
@@ -42,6 +49,8 @@ class Ui_MainWindow(object):
self.timeline.setPageStep(1) self.timeline.setPageStep(1)
self.timeline.setOrientation(QtCore.Qt.Horizontal) self.timeline.setOrientation(QtCore.Qt.Horizontal)
self.timeline.setObjectName("timeline") self.timeline.setObjectName("timeline")
self.timeline.setMaximum(1000)
self.playpausebutton = QtWidgets.QPushButton(self.centralwidget) self.playpausebutton = QtWidgets.QPushButton(self.centralwidget)
self.playpausebutton.setEnabled(True) self.playpausebutton.setEnabled(True)
self.playpausebutton.setGeometry(QtCore.QRect(390, 520, 40, 40)) self.playpausebutton.setGeometry(QtCore.QRect(390, 520, 40, 40))
@@ -49,15 +58,33 @@ class Ui_MainWindow(object):
font.setKerning(True) font.setKerning(True)
self.playpausebutton.setFont(font) self.playpausebutton.setFont(font)
self.playpausebutton.setStyleSheet("background-color: rgba(10, 0, 0, 0);\n" self.playpausebutton.setStyleSheet("background-color: rgba(10, 0, 0, 0);\n"
"") "")
self.playpausebutton.setText("") self.playpausebutton.setText("")
self.playpausebutton.setObjectName("playpausebutton") self.playpausebutton.setObjectName("playpausebutton")
self.playpausePicture = QtWidgets.QLabel(self.centralwidget) self.playpausePicture = QtWidgets.QLabel(self.centralwidget)
self.playpausePicture.setGeometry(QtCore.QRect(390, 520, 40, 40)) self.playpausePicture.setGeometry(QtCore.QRect(390, 520, 40, 40))
self.playpausePicture.setText("") self.playpausePicture.setText("")
self.playpausePicture.setPixmap(QtGui.QPixmap("D:\\RAZNOE\\prgrming\\PyQtUIs\\../../!программирование/PYSHARM projects/MultiMate Player/resources/MultiMate40x40.png")) self.playpausePicture.setPixmap(QtGui.QPixmap("resources/MultiMate40x40.png"))
self.playpausePicture.setTextInteractionFlags(QtCore.Qt.NoTextInteraction) self.playpausePicture.setTextInteractionFlags(QtCore.Qt.NoTextInteraction)
self.playpausePicture.setObjectName("playpausePicture") self.playpausePicture.setObjectName("playpausePicture")
self.hardstopbutton = QtWidgets.QPushButton(self.centralwidget)
self.hardstopbutton.setEnabled(True)
self.hardstopbutton.setGeometry(QtCore.QRect(290, 520, 40, 40))
font = QtGui.QFont()
font.setKerning(True)
self.hardstopbutton.setFont(font)
self.hardstopbutton.setStyleSheet("background-color: rgba(10, 0, 0, 0);\n"
"")
self.hardstopbutton.setText("")
self.hardstopbutton.setObjectName("hardstopbutton")
self.hardstopPicture = QtWidgets.QLabel(self.centralwidget)
self.hardstopPicture.setGeometry(QtCore.QRect(290, 520, 40, 40))
self.hardstopPicture.setText("")
self.hardstopPicture.setPixmap(QtGui.QPixmap("resources/hardstopbutton.png"))
self.hardstopPicture.setTextInteractionFlags(QtCore.Qt.NoTextInteraction)
self.hardstopPicture.setObjectName("hardstopPicture")
self.prevbutton = QtWidgets.QPushButton(self.centralwidget) self.prevbutton = QtWidgets.QPushButton(self.centralwidget)
self.prevbutton.setEnabled(True) self.prevbutton.setEnabled(True)
self.prevbutton.setGeometry(QtCore.QRect(340, 520, 40, 40)) self.prevbutton.setGeometry(QtCore.QRect(340, 520, 40, 40))
@@ -71,7 +98,7 @@ class Ui_MainWindow(object):
self.prevPicture = QtWidgets.QLabel(self.centralwidget) self.prevPicture = QtWidgets.QLabel(self.centralwidget)
self.prevPicture.setGeometry(QtCore.QRect(340, 520, 40, 40)) self.prevPicture.setGeometry(QtCore.QRect(340, 520, 40, 40))
self.prevPicture.setText("") self.prevPicture.setText("")
self.prevPicture.setPixmap(QtGui.QPixmap("D:\\RAZNOE\\prgrming\\PyQtUIs\\../../!программирование/PYSHARM projects/MultiMate Player/resources/prev.png")) self.prevPicture.setPixmap(QtGui.QPixmap("resources/prev.png"))
self.prevPicture.setTextInteractionFlags(QtCore.Qt.NoTextInteraction) self.prevPicture.setTextInteractionFlags(QtCore.Qt.NoTextInteraction)
self.prevPicture.setObjectName("prevPicture") self.prevPicture.setObjectName("prevPicture")
self.nextbutton = QtWidgets.QPushButton(self.centralwidget) self.nextbutton = QtWidgets.QPushButton(self.centralwidget)
@@ -87,9 +114,27 @@ class Ui_MainWindow(object):
self.nextPicture = QtWidgets.QLabel(self.centralwidget) self.nextPicture = QtWidgets.QLabel(self.centralwidget)
self.nextPicture.setGeometry(QtCore.QRect(440, 520, 40, 40)) self.nextPicture.setGeometry(QtCore.QRect(440, 520, 40, 40))
self.nextPicture.setText("") self.nextPicture.setText("")
self.nextPicture.setPixmap(QtGui.QPixmap("D:\\RAZNOE\\prgrming\\PyQtUIs\\../../!программирование/PYSHARM projects/MultiMate Player/resources/next.png")) self.nextPicture.setPixmap(QtGui.QPixmap("resources/next.png"))
self.nextPicture.setTextInteractionFlags(QtCore.Qt.NoTextInteraction) self.nextPicture.setTextInteractionFlags(QtCore.Qt.NoTextInteraction)
self.nextPicture.setObjectName("nextPicture") self.nextPicture.setObjectName("nextPicture")
self.hardplaybutton = QtWidgets.QPushButton(self.centralwidget)
self.hardplaybutton.setEnabled(True)
self.hardplaybutton.setGeometry(QtCore.QRect(490, 520, 40, 40))
font = QtGui.QFont()
font.setKerning(True)
self.hardplaybutton.setFont(font)
self.hardplaybutton.setStyleSheet("background-color: rgba(10, 0, 0, 0);\n"
"")
self.hardplaybutton.setText("")
self.hardplaybutton.setObjectName("hardplaybutton")
self.hardplayPicture = QtWidgets.QLabel(self.centralwidget)
self.hardplayPicture.setGeometry(QtCore.QRect(490, 520, 40, 40))
self.hardplayPicture.setText("")
self.hardplayPicture.setPixmap(QtGui.QPixmap("resources/hardplaybutton.png"))
self.hardplayPicture.setTextInteractionFlags(QtCore.Qt.NoTextInteraction)
self.hardplayPicture.setObjectName("hardplayPicture")
self.speedBox = QtWidgets.QDoubleSpinBox(self.centralwidget) self.speedBox = QtWidgets.QDoubleSpinBox(self.centralwidget)
self.speedBox.setGeometry(QtCore.QRect(10, 515, 62, 22)) self.speedBox.setGeometry(QtCore.QRect(10, 515, 62, 22))
self.speedBox.setDecimals(1) self.speedBox.setDecimals(1)
@@ -116,7 +161,7 @@ class Ui_MainWindow(object):
self.VolDialBG = QtWidgets.QLabel(self.centralwidget) self.VolDialBG = QtWidgets.QLabel(self.centralwidget)
self.VolDialBG.setGeometry(QtCore.QRect(720, 0, 81, 81)) self.VolDialBG.setGeometry(QtCore.QRect(720, 0, 81, 81))
self.VolDialBG.setText("") self.VolDialBG.setText("")
self.VolDialBG.setPixmap(QtGui.QPixmap("D:\\RAZNOE\\prgrming\\PyQtUIs\\../../!программирование/PYSHARM projects/MultiMate Player/resources/MultiMate80x80.png")) self.VolDialBG.setPixmap(QtGui.QPixmap("resources/MultiMate80x80.png"))
self.VolDialBG.setObjectName("VolDialBG") self.VolDialBG.setObjectName("VolDialBG")
self.playlistsComboBox = QtWidgets.QComboBox(self.centralwidget) self.playlistsComboBox = QtWidgets.QComboBox(self.centralwidget)
self.playlistsComboBox.setGeometry(QtCore.QRect(0, 0, 231, 22)) self.playlistsComboBox.setGeometry(QtCore.QRect(0, 0, 231, 22))
@@ -138,9 +183,9 @@ class Ui_MainWindow(object):
self.TextAllSongs.setGeometry(QtCore.QRect(0, 20, 301, 23)) self.TextAllSongs.setGeometry(QtCore.QRect(0, 20, 301, 23))
self.TextAllSongs.setTextInteractionFlags(QtCore.Qt.NoTextInteraction) self.TextAllSongs.setTextInteractionFlags(QtCore.Qt.NoTextInteraction)
self.TextAllSongs.setObjectName("TextAllSongs") self.TextAllSongs.setObjectName("TextAllSongs")
self.textEdit = QtWidgets.QTextEdit(self.centralwidget) self.toFindName = QtWidgets.QTextEdit(self.centralwidget)
self.textEdit.setGeometry(QtCore.QRect(310, 0, 331, 23)) self.toFindName.setGeometry(QtCore.QRect(310, 0, 331, 23))
self.textEdit.setObjectName("textEdit") self.toFindName.setObjectName("toFindName")
self.findSongButton = QtWidgets.QPushButton(self.centralwidget) self.findSongButton = QtWidgets.QPushButton(self.centralwidget)
self.findSongButton.setGeometry(QtCore.QRect(640, 0, 75, 23)) self.findSongButton.setGeometry(QtCore.QRect(640, 0, 75, 23))
self.findSongButton.setObjectName("findSongButton") self.findSongButton.setObjectName("findSongButton")
@@ -156,9 +201,12 @@ class Ui_MainWindow(object):
self.restartPlayerButton = QtWidgets.QPushButton(self.centralwidget) self.restartPlayerButton = QtWidgets.QPushButton(self.centralwidget)
self.restartPlayerButton.setGeometry(QtCore.QRect(720, 140, 75, 51)) self.restartPlayerButton.setGeometry(QtCore.QRect(720, 140, 75, 51))
self.restartPlayerButton.setObjectName("restartPlayerButton") self.restartPlayerButton.setObjectName("restartPlayerButton")
self.textBrowser = QtWidgets.QTextBrowser(self.centralwidget) if platform.system() == "Darwin": # for MacOS
self.textBrowser.setGeometry(QtCore.QRect(310, 70, 401, 381)) self.videoframe = QtWidgets.QMacCocoaViewContainer(self.centralwidget)
self.textBrowser.setObjectName("textBrowser") else:
self.videoframe = QtWidgets.QFrame(self.centralwidget)
self.videoframe.setGeometry(QtCore.QRect(310, 70, 401, 381))
self.videoframe.setObjectName("videoframe")
self.timeline.raise_() self.timeline.raise_()
self.playpausePicture.raise_() self.playpausePicture.raise_()
self.prevPicture.raise_() self.prevPicture.raise_()
@@ -177,13 +225,15 @@ class Ui_MainWindow(object):
self.openPlaylistButton.raise_() self.openPlaylistButton.raise_()
self.songList.raise_() self.songList.raise_()
self.TextAllSongs.raise_() self.TextAllSongs.raise_()
self.textEdit.raise_() self.toFindName.raise_()
self.findSongButton.raise_() self.findSongButton.raise_()
self.foundSongs.raise_() self.foundSongs.raise_()
self.addThisSongButton.raise_() self.addThisSongButton.raise_()
self.mixButton.raise_() self.mixButton.raise_()
self.restartPlayerButton.raise_() self.restartPlayerButton.raise_()
self.textBrowser.raise_() self.videoframe.raise_()
self.hardplaybutton.raise_()
self.hardstopbutton.raise_()
MainWindow.setCentralWidget(self.centralwidget) MainWindow.setCentralWidget(self.centralwidget)
self.menubar = QtWidgets.QMenuBar(MainWindow) self.menubar = QtWidgets.QMenuBar(MainWindow)
self.menubar.setGeometry(QtCore.QRect(0, 0, 801, 21)) self.menubar.setGeometry(QtCore.QRect(0, 0, 801, 21))
@@ -196,6 +246,17 @@ class Ui_MainWindow(object):
self.retranslateUi(MainWindow) self.retranslateUi(MainWindow)
QtCore.QMetaObject.connectSlotsByName(MainWindow) QtCore.QMetaObject.connectSlotsByName(MainWindow)
self.timer = QtCore.QTimer(self)
self.timer.timeout.connect(self.update_ui)
def update_ui(self):
global mediaplayer
media_pos = int(mediaplayer.get_position() * 1000)
self.timeline.setValue(media_pos)
if not mediaplayer.is_playing():
self.timer.stop()
def retranslateUi(self, MainWindow): def retranslateUi(self, MainWindow):
_translate = QtCore.QCoreApplication.translate _translate = QtCore.QCoreApplication.translate
MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow")) MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow"))
@@ -216,7 +277,6 @@ class Ui_MainWindow(object):
self.restartPlayerButton.setText(_translate("MainWindow", "(Re)start \n" self.restartPlayerButton.setText(_translate("MainWindow", "(Re)start \n"
"player \n" "player \n"
"cycle")) "cycle"))
self.textBrowser.setPlaceholderText(_translate("MainWindow", "Logs"))
class YoutubeSearch: class YoutubeSearch:
def __init__(self, search_terms: str, max_results=None): def __init__(self, search_terms: str, max_results=None):
@@ -311,22 +371,50 @@ def addtopl(playlist, plname):
json.dump(playlist, playlistfile, indent=3, ensure_ascii=False) json.dump(playlist, playlistfile, indent=3, ensure_ascii=False)
playlistfile.close() playlistfile.close()
def set_position():
global instance
global media
global mediaplayer
global is_paused
ui.timer.stop()
pos = ui.timeline.value()
mediaplayer.set_position(pos / 1000.0)
ui.timer.start(100)
def playmusic(url, name, author): def playmusic(url, name, author):
video = pafy.new(url) video = pafy.new(url)
best = video.getbestaudio() best = video.getbest()
playurl = best.url playurl = best.url
# playurl = url
mediatoplay = vlc.MediaPlayer(playurl) global instance
mediatoplay.audio_set_volume(100) global media
mediatoplay.play() global mediaplayer
global is_paused
media = instance.media_new(playurl)
mediaplayer.set_media(media)
if platform.system() == "Linux": # for Linux using the X Server
mediaplayer.set_xwindow(int(ui.videoframe.winId()))
elif platform.system() == "Windows": # for Windows
mediaplayer.set_hwnd(int(ui.videoframe.winId()))
elif platform.system() == "Darwin": # for MacOS
mediaplayer.set_nsobject(int(ui.videoframe.winId()))
if mediaplayer.is_playing():
mediaplayer.pause()
is_paused = True
ui.timer.stop()
else:
mediaplayer.play()
ui.timer.start(100)
is_paused = False
mediaplayer.audio_set_volume(100)
time.sleep(0.5) time.sleep(0.5)
length = mediatoplay.get_length() / 1000 timeToSleep = mediaplayer.get_length() / 1000
cls() cls()
print("Playing " + author + " - " + name) print("Playing " + author + " - " + name)
time.sleep(length)
mediatoplay.stop()
app = QtWidgets.QApplication(sys.argv) app = QtWidgets.QApplication(sys.argv)
MainWindow = QtWidgets.QMainWindow() MainWindow = QtWidgets.QMainWindow()
@@ -343,14 +431,16 @@ def getplaylist():
# addtopl(playlist, 'play.list') # addtopl(playlist, 'play.list')
for item in list(playlist): def playallpl():
for item in list(playlist):
playmusic(playlist[item]['url'], playlist[item]['name'], playlist[item]['author']) playmusic(playlist[item]['url'], playlist[item]['name'], playlist[item]['author'])
MainWindow.show() MainWindow.show()
ui.openPlaylistButton.clicked.connect(getplaylist) ui.openPlaylistButton.clicked.connect(getplaylist)
ui.hardplaybutton.clicked.connect(playallpl)
ui.timeline.sliderMoved.connect(set_position)
ui.timeline.sliderPressed.connect(set_position)
sys.exit(app.exec_()) sys.exit(app.exec_())