266716880 发表于 2020-8-7 16:57

Pyqt5写带GUI的抖音无水印下载程序

最近开始学习用Pyqt写GUI

论坛有前辈发了一份抖音去水印的教程

修改了部分代码,利用Pyqt加了个界面打包成exe程序。


成品蓝奏云链接:**** Hidden Message *****


# -*- coding: utf-8 -*-

# Form implementation generated from reading ui file 'g:\2019_PYTHON\QJBM8\NEW\main.ui'
#
# Created by: PyQt5 UI code generator 5.15.0
#
# WARNING: Any manual changes made to this file will be lost when pyuic5 is
# run again.Do not edit this file unless you know what you are doing.

import sys
import re
import requests
from PyQt5 import QtCore, QtGui, QtWidgets
from PyQt5.QtWidgets import QApplication, QWidget,QMessageBox


class Ui_MainWindow(QtWidgets.QMainWindow):

    def __init__(self):
      super(Ui_MainWindow,self).__init__()
      self.setupUi(self)
      self.retranslateUi(self)
         
         


    def setupUi(self, MainWindow):
      MainWindow.setObjectName("MainWindow")
      MainWindow.resize(500, 162)
      self.centralwidget = QtWidgets.QWidget(MainWindow)
      self.centralwidget.setObjectName("centralwidget")
      self.pushButton = QtWidgets.QPushButton(self.centralwidget)
      self.pushButton.setGeometry(QtCore.QRect(410, 60, 75, 31))
      self.pushButton.setObjectName("pushButton")
      self.label = QtWidgets.QLabel(self.centralwidget)
      self.label.setGeometry(QtCore.QRect(10, 25, 81, 31))
      self.label.setObjectName("标签")

      self.label1 = QtWidgets.QLabel(self.centralwidget)
      self.label1.setGeometry(QtCore.QRect(380, 2, 160, 30))
      self.label1.setObjectName("BY")

      self.label2 = QtWidgets.QLabel(self.centralwidget)
      self.label2.setGeometry(QtCore.QRect(10, 115, 440, 30))
      self.label2.setObjectName("说明")

      self.lineEdit = QtWidgets.QLineEdit(self.centralwidget)
      self.lineEdit.setGeometry(QtCore.QRect(30, 60, 361, 31))
      self.lineEdit.setObjectName("lineEdit")
      MainWindow.setCentralWidget(self.centralwidget)
      self.statusbar = QtWidgets.QStatusBar(MainWindow)
      self.statusbar.setObjectName("statusbar")
      MainWindow.setStatusBar(self.statusbar)

      self.retranslateUi(MainWindow)
      QtCore.QMetaObject.connectSlotsByName(MainWindow)   

    def retranslateUi(self, MainWindow):
      _translate = QtCore.QCoreApplication.translate
      MainWindow.setWindowTitle(_translate("MainWindow", "抖音无水印下载"))
      self.pushButton.setText(_translate("MainWindow", "下载"))
      self.label.setText(_translate("MainWindow", "短视频链接:"))
      self.label1.setText(_translate("MainWindow", "大牛破解小心boss"))
      self.label2.setText(_translate("MainWindow", "说明: 复制短视频的分享链接到输入框后点击下载,视频保存在程序执行目录下"))

    def Button_Click(self):
      if self.lineEdit.text() == '' :
            QMessageBox.information(self,
                                    '提示:',
                                    '请检查分享链接是否正确'      )
            
      else:
            sender = self.sender()
            url = self.lineEdit.text()
            down(url)

def down(url):

    headers = {
      'User-Agent': 'User-Agent", "Mozilla/5.0 (iPhone; CPU iPhone OS 12_1_4 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/16D57 Version/12.0 Safari/604.1',
    }
    url = re.findall(r'http(.*)/',url)
    url = 'http' + url
    title = url.split('/')[-1]
    response = requests.get(url, headers=headers)
    now_url = response.url
    pat_item_ids = '/video/(.*?)/'
    item_ids = re.compile(pat_item_ids, re.S).findall(now_url)

    pat_dytk = 'dytk: "(.*?)"'
    dytk = re.compile(pat_dytk, re.S).findall(response.text)

    url = 'https://www.iesdouyin.com/web/api/v2/aweme/iteminfo/'
    params = {
      'item_ids': item_ids,
      'dytk': dytk
    }
    response = requests.get(url, headers=headers, params=params).json()
    true_url = response['item_list']['video']['play_addr']['url_list']
    true_url = true_url.replace('playwm','play')
    response = requests.get(true_url, headers=headers)
    # true_url = response.url
    # print(true_url)

    with open( str(title) + '.MP4', 'wb+')as t:
            t.write(response.content)

if __name__ == "__main__":
    app = QApplication(sys.argv)
    ex = Ui_MainWindow()
    ex.show()
    ex.pushButton.pressed.connect(ex.Button_Click)
    sys.exit(app.exec_())

2690620796 发表于 2020-8-7 16:57

6666

lan371123878 发表于 2020-8-7 16:57

感谢楼主分享

may31057 发表于 2020-8-7 17:01

谢谢大牛

LuKing 发表于 2020-8-7 20:33

谢谢分享

sweeet 发表于 2020-8-7 20:47

6666666666

zhudengbei 发表于 2020-8-7 21:52

这个可以用来吸引流浪啊

q146236031 发表于 2020-8-7 22:02

谢谢大佬
页: [1]
查看完整版本: Pyqt5写带GUI的抖音无水印下载程序