Video

  • Step 1:
    
                  from PyQt5.QtCore import QDir, Qt, QUrl
    from PyQt5.QtMultimedia import QMediaContent, QMediaPlayer
    from PyQt5.QtMultimediaWidgets import QVideoWidget
    from PyQt5.QtWidgets import (QApplication, QFileDialog, QHBoxLayout, QLabel,
            QPushButton, QSizePolicy, QSlider, QStyle, QVBoxLayout, QWidget)
    from PyQt5.QtWidgets import QMainWindow,QWidget, QPushButton, QAction
    from PyQt5.QtGui import QIcon
    
    
    from PyQt5.QtGui     import *
    from PyQt5.QtCore    import *
    from PyQt5.QtWidgets import *
    
    from PyQt5.QtGui import QPixmap  
    
    from selenium import webdriver
    from selenium.webdriver.support.ui import WebDriverWait
    from selenium.webdriver.support import expected_conditions as EC
    from selenium.webdriver.common.keys import Keys
    from selenium.webdriver.common.by import By
    import time
    import os
    import sys
    
     
    class Window(QDialog):
        def __init__(self):
            super().__init__()
            self.title = "Login"
            self.top = 100
            self.left = 100
            self.width = 680
            self.height = 500
            self.InitUI()
    
        def InitUI(self):
           
            self.setWindowTitle(self.title)
            self.setFixedWidth(250)  
            self.label1 = QLabel('Username')
            self.lineEdit1 = QLineEdit("", self)
    
            self.label2 = QLabel('Password')
            self.lineEdit2 = QLineEdit("", self)
            
            layoutV = QVBoxLayout()
            self.pushButton = QPushButton(self)
            self.pushButton.setStyleSheet('background-color: rgb(0,0,255); color: #fff')
            self.pushButton.setText('LOGIN')  
            self.pushButton.clicked.connect(self.doLogin)     
           
            
            layoutH1 = QHBoxLayout()
            layoutH1.addWidget(self.label1)
            layoutH1.addWidget(self.lineEdit1)
    
            layoutH2 = QHBoxLayout()
            layoutH2.addWidget(self.label2)
            layoutH2.addWidget(self.lineEdit2)
    
            
            layoutV.addLayout(layoutH1)
            layoutV.addLayout(layoutH2)
            layoutV.addWidget(self.pushButton)
            self.setLayout(layoutV)
            self.show()
    
        def doLogin(self):
            self.cams = Window1('') 
            self.cams.show()
            self.close()
    
    
        @pyqtSlot()
        def buttonWindow1_onClick(self):
            self.statusBar().showMessage("Switched to window 1")
            self.cams = Window1(self.lineEdit1.text()) 
            self.cams.show()
            self.close()
    
        @pyqtSlot()
        def buttonWindow2_onClick(self):
            self.statusBar().showMessage("Switched to window 2")
            self.cams = Window2(self.lineEdit2.text()) 
            self.cams.show()
            self.close()
            
            
    class Window1(QDialog):
        def __init__(self, value, parent=None):
            super().__init__(parent)
            self.setWindowTitle('Window1')
            self.setFixedWidth(500)
            self.setFixedHeight(600)
            self.setWindowIcon(self.style().standardIcon(QStyle.SP_FileDialogInfoView))
    
    
            self.mediaPlayer = QMediaPlayer(None, QMediaPlayer.VideoSurface) 
            videoWidget = QVideoWidget()
            self.play() 
    
           
            
            pixmap = QPixmap(os.path.abspath('image.png')) 
            lbl = QLabel(self)                                                                                                                 
            lbl.setPixmap(pixmap) 
    
          
            with open('message.txt', 'r', encoding="utf-8") as f:
                self.message = f.read()
            lb2 = QLabel(self.message)                                                                                                                 
             
    
    
    
            label1 = QLabel(value)
            self.button = QPushButton()
            self.button.setSizePolicy(QSizePolicy.Minimum, QSizePolicy.Expanding)
            self.button.setIcon(self.style().standardIcon(QStyle.SP_ArrowLeft))
            self.button.setIconSize(QSize(200, 200))
            
            layoutV = QVBoxLayout()
            self.pushButton = QPushButton(self)
            self.pushButton.setStyleSheet('background-color: rgb(0,0,255); color: #fff')
            self.pushButton.setText('Send Now')
            self.pushButton.clicked.connect(self.doSend)
            
            layoutV.addWidget(lbl)
            layoutV.addWidget(lb2) 
            layoutV.addWidget(self.pushButton) 
    
            layoutV.addWidget(videoWidget) 
            
            self.setLayout(layoutV)
            self.mediaPlayer.setVideoOutput(videoWidget)
            
    
        def doSend(self):
            driver = webdriver.Chrome()
    
            driver.get("https://web.whatsapp.com/")
            wait = WebDriverWait(driver, 1000)
    
            with open('recipients.txt', 'r') as f:
                groups = [group.strip() for group in f.readlines()]
    
            for group in groups:	 
                #target = '"Dhanya Abhilash"'
                
                target = '"'+group+'"'
                print(target)
    
                x_arg = '//span[contains(@title,' + target + ')]'
                group_title = wait.until(EC.presence_of_element_located((
                    By.XPATH, x_arg)))
                group_title.click()
    
    
                inp_xpath = '//div[@contenteditable="true"][@data-tab="10"]'
                input_box = wait.until(EC.presence_of_element_located((
                    By.XPATH, inp_xpath)))
    
                attachment_xpath='//div[@title="Attach"]'
                attachment_box = wait.until(EC.presence_of_element_located((
                    By.XPATH, attachment_xpath)))
                attachment_box.click()
    
                image_xpath='//input[@accept="image/*,video/mp4,video/3gpp,video/quicktime"]'
                image_box = wait.until(EC.presence_of_element_located((
                    By.XPATH, image_xpath)))
                image_box.send_keys('E:\\python\\pyqt\\image.png')
    
                send_xpath='//span[@data-icon="send"]'
                send_button= wait.until(EC.presence_of_element_located((
                    By.XPATH, send_xpath)))
    
                send_button.click()
    
    
    
                inp_xpath1 = '//div[@contenteditable="true"][@data-tab="10"]'
                input_box1 = wait.until(EC.presence_of_element_located((
                    By.XPATH, inp_xpath1)))
    
                attachment_xpath1='//div[@title="Attach"]'
                attachment_box1 = wait.until(EC.presence_of_element_located((
                    By.XPATH, attachment_xpath1)))
                attachment_box1.click()
    
                image_xpath1='//input[@accept="image/*,video/mp4,video/3gpp,video/quicktime"]'
                image_box1 = wait.until(EC.presence_of_element_located((
                    By.XPATH, image_xpath1)))
                image_box1.send_keys('E:\\python\\pyqt\\video.mp4')
    
                send_xpath1='//span[@data-icon="send"]'
                send_button1= wait.until(EC.presence_of_element_located((
                    By.XPATH, send_xpath1)))
    
                send_button1.click()
    
                
                input_box.send_keys(self.textbox.text() + Keys.ENTER)
                time.sleep(1)
    
    
        def play(self):
            fileName='E:/python/pyqt/video.mp4'        
            if fileName != '':
                self.mediaPlayer.setMedia(
                        QMediaContent(QUrl.fromLocalFile(fileName)))
               
            if self.mediaPlayer.state() == QMediaPlayer.PlayingState:
                self.mediaPlayer.pause()
            else:
                self.mediaPlayer.play()        
            
        
    class Window2(QDialog):
        def __init__(self, value, parent=None):
            super().__init__(parent)
            self.setWindowTitle('Window2')
            self.setWindowIcon(self.style().standardIcon(QStyle.SP_FileDialogInfoView))
    
            label1 = QLabel(value)
            self.button = QPushButton()
            self.button.setSizePolicy(QSizePolicy.Minimum, QSizePolicy.Expanding)
            self.button.setIcon(self.style().standardIcon(QStyle.SP_ArrowLeft))
            self.button.setIconSize(QSize(200, 200))
            
            layoutV = QVBoxLayout()
            self.pushButton = QPushButton(self)
            self.pushButton.setStyleSheet('background-color: rgb(0,0,255); color: #fff')
            self.pushButton.setText('Click me!')
            self.pushButton.clicked.connect(self.goMainWindow)
            layoutV.addWidget(self.pushButton)
            
            layoutH = QHBoxLayout()
            layoutH.addWidget(label1)
            layoutH.addWidget(self.button)
            layoutV.addLayout(layoutH)
            self.setLayout(layoutV)
    
        def goMainWindow(self):
            self.cams = Window()
            self.cams.show()
            self.close()    
            
    
    if __name__ == '__main__':
        app=QApplication(sys.argv)
        ex=Window()
        sys.exit(app.exec_())
    
    

    Browsing option

    
    
    from PyQt5.QtCore import QDir, Qt, QUrl
    from PyQt5.QtMultimedia import QMediaContent, QMediaPlayer
    from PyQt5.QtMultimediaWidgets import QVideoWidget
    from PyQt5.QtWidgets import (QApplication, QFileDialog, QHBoxLayout, QLabel,
            QPushButton, QSizePolicy, QSlider, QStyle, QVBoxLayout, QWidget)
    from PyQt5.QtWidgets import QMainWindow,QWidget, QPushButton, QAction
    from PyQt5.QtGui import QIcon
    import sys
    
    class VideoWindow(QMainWindow):
    
        def __init__(self, parent=None):
            super(VideoWindow, self).__init__(parent)
            self.setWindowTitle("PyQt Video Player Widget Example - pythonprogramminglanguage.com") 
    
            self.mediaPlayer = QMediaPlayer(None, QMediaPlayer.VideoSurface)
    
            videoWidget = QVideoWidget()
    
            self.playButton = QPushButton()
            self.playButton.setEnabled(False)
            self.playButton.setIcon(self.style().standardIcon(QStyle.SP_MediaPlay))
            self.playButton.clicked.connect(self.play)
    
            self.positionSlider = QSlider(Qt.Horizontal)
            self.positionSlider.setRange(0, 0)
            self.positionSlider.sliderMoved.connect(self.setPosition)
    
            self.errorLabel = QLabel()
            self.errorLabel.setSizePolicy(QSizePolicy.Preferred,
                    QSizePolicy.Maximum)
    
            # Create new action
            openAction = QAction(QIcon('open.png'), '&Open', self)        
            openAction.setShortcut('Ctrl+O')
            openAction.setStatusTip('Open movie')
            openAction.triggered.connect(self.openFile)
    
            # Create exit action
            exitAction = QAction(QIcon('exit.png'), '&Exit', self)        
            exitAction.setShortcut('Ctrl+Q')
            exitAction.setStatusTip('Exit application')
            exitAction.triggered.connect(self.exitCall)
    
            # Create menu bar and add action
            menuBar = self.menuBar()
            fileMenu = menuBar.addMenu('&File')
            #fileMenu.addAction(newAction)
            fileMenu.addAction(openAction)
            fileMenu.addAction(exitAction)
    
            # Create a widget for window contents
            wid = QWidget(self)
            self.setCentralWidget(wid)
    
            # Create layouts to place inside widget
            controlLayout = QHBoxLayout()
            controlLayout.setContentsMargins(0, 0, 0, 0)
            controlLayout.addWidget(self.playButton)
            controlLayout.addWidget(self.positionSlider)
    
            layout = QVBoxLayout()
            layout.addWidget(videoWidget)
            layout.addLayout(controlLayout)
            layout.addWidget(self.errorLabel)
    
            # Set widget to contain window contents
            wid.setLayout(layout)
    
            self.mediaPlayer.setVideoOutput(videoWidget)
            self.mediaPlayer.stateChanged.connect(self.mediaStateChanged)
            self.mediaPlayer.positionChanged.connect(self.positionChanged)
            self.mediaPlayer.durationChanged.connect(self.durationChanged)
            self.mediaPlayer.error.connect(self.handleError)
    
        def openFile(self):
            fileName, _ = QFileDialog.getOpenFileName(self, "Open Movie",
                    QDir.homePath())
    
            if fileName != '':
                self.mediaPlayer.setMedia(
                        QMediaContent(QUrl.fromLocalFile(fileName)))
                self.playButton.setEnabled(True)
    
        def exitCall(self):
            sys.exit(app.exec_())
    
        def play(self):
            if self.mediaPlayer.state() == QMediaPlayer.PlayingState:
                self.mediaPlayer.pause()
            else:
                self.mediaPlayer.play()
    
        def mediaStateChanged(self, state):
            if self.mediaPlayer.state() == QMediaPlayer.PlayingState:
                self.playButton.setIcon(
                        self.style().standardIcon(QStyle.SP_MediaPause))
            else:
                self.playButton.setIcon(
                        self.style().standardIcon(QStyle.SP_MediaPlay))
    
        def positionChanged(self, position):
            self.positionSlider.setValue(position)
    
        def durationChanged(self, duration):
            self.positionSlider.setRange(0, duration)
    
        def setPosition(self, position):
            self.mediaPlayer.setPosition(position)
    
        def handleError(self):
            self.playButton.setEnabled(False)
            self.errorLabel.setText("Error: " + self.mediaPlayer.errorString())
    
    if __name__ == '__main__':
        app = QApplication(sys.argv)
        player = VideoWindow()
        player.resize(640, 480)
        player.show()
        sys.exit(app.exec_())