From 3552281a378fc710eb1acde04a5318f82b27aaf6 Mon Sep 17 00:00:00 2001 From: luming Date: Tue, 19 Sep 2023 15:04:00 +0800 Subject: [PATCH] Some scripts. --- content.py | 3 ++ demo.py | 89 ------------------------------------------------------ dm.py | 88 +++++++++++++++++++++++++++++++++++++++++++++++------ gotify.py | 21 ------------- main.py | 43 -------------------------- 5 files changed, 82 insertions(+), 162 deletions(-) create mode 100644 content.py delete mode 100644 demo.py delete mode 100644 gotify.py delete mode 100644 main.py diff --git a/content.py b/content.py new file mode 100644 index 0000000..2ff76a5 --- /dev/null +++ b/content.py @@ -0,0 +1,3 @@ + +base_url = "https://dm.video.qq.com/barrage/base/" +dm_url = "https://dm.video.qq.com/barrage/segment/p0047eb164c/t/v1/0/30000" \ No newline at end of file diff --git a/demo.py b/demo.py deleted file mode 100644 index b8f5df1..0000000 --- a/demo.py +++ /dev/null @@ -1,89 +0,0 @@ -import sys -from functools import partial -from PySide6.QtWidgets import QApplication, QMainWindow, QTableWidget, QTableWidgetItem, QPushButton, QVBoxLayout, \ - QWidget, QTextEdit, QHeaderView, QHBoxLayout - - -class TableWidgetExample(QMainWindow): - def __init__(self): - super().__init__() - - self.initUI() - - def initUI(self): - self.setWindowTitle("QTableWidget Example") - self.setGeometry(100, 100, 800, 600) - - central_widget = QWidget() - center_layout = QVBoxLayout(central_widget) - self.setCentralWidget(central_widget) - - top_widget = QWidget() - top_layout = QVBoxLayout(top_widget) - - table = QTableWidget() - table.setColumnCount(3) # Add one more column for buttons - - table.setHorizontalHeaderLabels(["URL", "状态", "操作"]) - - header = table.horizontalHeader() - header.setSectionResizeMode(QHeaderView.ResizeToContents) - header.setSectionResizeMode(0, QHeaderView.Stretch) - - data = [ - ["https://baidu.com", "队列中"], - ["https://google.com", "队列中"], - ["https://rainss.cn", "队列中"] - ] - - table.setRowCount(len(data)) # Remove extra row - - for row, rowData in enumerate(data): - for col, value in enumerate(rowData): - item = QTableWidgetItem(value) - table.setItem(row, col, item) - - # Add buttons in the last column - button_layout = QHBoxLayout() - - pause_button = QPushButton("暂停") - pause_button.setMinimumHeight(40) # Set button width - pause_button.setMinimumWidth(60) # Set button width - delete_button = QPushButton("删除") - delete_button.setMinimumHeight(40) # Set button width - delete_button.setMinimumWidth(60) # Set button width - - pause_button.clicked.connect(partial(self.pause_button_clicked, row)) - delete_button.clicked.connect(partial(self.delete_button_clicked, row)) - - button_layout.addWidget(pause_button) - button_layout.addWidget(delete_button) - - button_container = QWidget() - button_container.setLayout(button_layout) - - table.setCellWidget(row, 2, button_container) - - - top_layout.addWidget(table) - center_layout.addWidget(top_widget) - - bottom_widget = QWidget() - bottom_widget.setFixedHeight(300) - bottom_layout = QVBoxLayout(bottom_widget) - input_text = QTextEdit() - bottom_layout.addWidget(input_text) - center_layout.addWidget(bottom_widget) - - def pause_button_clicked(self, row): - print(f"Paused row {row}") - - def delete_button_clicked(self, row): - print(f"Deleted row {row}") - - -if __name__ == "__main__": - app = QApplication(sys.argv) - window = TableWidgetExample() - window.show() - sys.exit(app.exec()) diff --git a/dm.py b/dm.py index 56460ca..5fee0f2 100644 --- a/dm.py +++ b/dm.py @@ -1,6 +1,10 @@ +import hashlib import logging +import random import socket import sys +import threading +import time from urllib.parse import urlparse import pymysql @@ -9,6 +13,31 @@ from PySide6.QtWidgets import QApplication, QMainWindow, QTableWidget, QTableWid QTextEdit, QPushButton, QHBoxLayout, QLineEdit, QMessageBox, QSizePolicy +def generate_random_hex_color(): + # 生成随机的R、G、B分量 + r = random.randint(0, 255) + g = random.randint(0, 255) + b = random.randint(0, 255) + + # 将R、G、B分量转换为16进制,并保证输出的字符串长度为2 + hex_r = format(r, '02x') + hex_g = format(g, '02x') + hex_b = format(b, '02x') + + # 拼接16进制颜色代码 + hex_color = "#" + hex_r + hex_g + hex_b + + return hex_color + + +def show_completion_message(): + msg = QMessageBox() + msg.setIcon(QMessageBox.Information) + msg.setWindowTitle("采集完成") + msg.setText("没有需要采集的任务。") + msg.exec() + + class TableWidgetExample(QMainWindow): def __init__(self): super().__init__() @@ -26,14 +55,6 @@ class TableWidgetExample(QMainWindow): self.cursor = None self.is_connect = False - # self.button_add = None - # self.button_execute = None - # self.input_text = None - - # self.connection_host = None - # self.connection_port = None - # self.connection_user = None - # self.connection_pwd = None self.initLogger() self.initUI() @@ -101,6 +122,7 @@ class TableWidgetExample(QMainWindow): button_add.clicked.connect(self.add_data_to_table) action_layout.addWidget(button_add) button_execute = QPushButton("开始采集") + button_execute.clicked.connect(self.start_collection) action_layout.addWidget(button_execute) bottom_layout.addLayout(action_layout) @@ -181,7 +203,7 @@ class TableWidgetExample(QMainWindow): continue row_position = self.table.rowCount() # 获取下一个可用的行索引 self.table.insertRow(row_position) - status = QTableWidgetItem("队列中") + status = QTableWidgetItem("等待中") self.table.setItem(row_position, 0, url) self.table.setItem(row_position, 1, status) @@ -196,6 +218,54 @@ class TableWidgetExample(QMainWindow): except Exception as e: return False + def start_collection(self): + # 遍历表格并查找状态为 "队列中" 的数据行 + rows_to_collect = [] + for row in range(self.table.rowCount()): + status_item = self.table.item(row, 1) + if status_item is not None and status_item.text() == "等待中": + rows_to_collect.append(row) + + if not rows_to_collect: + show_completion_message() + return # 没有需要采集的数据 + + # 启动多线程来处理队列中的 URL 数据 + for row in rows_to_collect: + url_item = self.table.item(row, 0) + url = url_item.text() + thread = threading.Thread(target=self.collect_data, args=(row, url)) + thread.start() + + def collect_data(self, row, url): + # 模拟数据采集 + self.update_status(row, "采集中") + time.sleep(3) # 模拟耗时操作 + self.get_video_dm_data(url) + # 更新状态为采集完成 + self.update_status(row, "采集完成") + + def update_status(self, row, status): + item = QTableWidgetItem(status) + self.table.setItem(row, 1, item) + + def get_video_dm_data(self, url): + # 判断url类型 + + md5_hash = hashlib.md5() + md5_hash.update(url.encode('utf-8')) + encrypted_text = md5_hash.hexdigest() + + # 取出MD5加密后的后20位数 + last_20_chars = encrypted_text[-20:] + + # 创建新的字符串,加上空格P + video_id = last_20_chars + " P" + self.logger.debug("video_id: %s", video_id) + + def generate_insert_sql(self, data): + sql = "INSERT INTO `danmaku_list` (`id`, `cid`, `type`, `text`, `color`, `size`, `videotime`, `ip`, `time`) VALUES ('de9d5e3f5b7f9ea2197d35f383530643', NULL, 'right', '不错哦', '#FFFFFF', '27.5px', '48.275', '58.62.32.191', '1666319003')" + return sql if __name__ == "__main__": app = QApplication(sys.argv) diff --git a/gotify.py b/gotify.py deleted file mode 100644 index 65b61b6..0000000 --- a/gotify.py +++ /dev/null @@ -1,21 +0,0 @@ -# 发送通知信息类 -import requests - - -class Notify: - # 服务器地址 - url = 'https://gotify.rainss.cn/' - # 验证access_token - token = 'Ai_BR85._DZJL6L' - - def sendMessage(self, title, message): - s = requests.Session() - params = { - 'token': self.token, - } - files = { - 'title': (None, title), - 'message': (None, message), - 'priority': (None, '5'), - } - s.post('https://gotify.rainss.cn/message', params=params, files=files) diff --git a/main.py b/main.py deleted file mode 100644 index 612db17..0000000 --- a/main.py +++ /dev/null @@ -1,43 +0,0 @@ -from PySide6 import QtWidgets -from PySide6.QtWidgets import QApplication, QMainWindow, QTableWidget, QTableWidgetItem, QVBoxLayout, QWidget -import sys - -class MyWindow(QMainWindow): - def __init__(self): - super().__init__() - - self.setWindowTitle("表格内容自动占满一整行") - - central_widget = QWidget() - self.setCentralWidget(central_widget) - - layout = QVBoxLayout(central_widget) - - self.table_widget = QTableWidget() - layout.addWidget(self.table_widget) - - # 设置列数和行数 - self.table_widget.setColumnCount(3) - self.table_widget.setRowCount(2) # 两行 - - # 设置伸展性 - self.table_widget.horizontalHeader().setSectionResizeMode(QtWidgets.QHeaderView.Stretch) - - # 添加数据到表格中 - self.add_data_to_table() - - def add_data_to_table(self): - data = [("数据1", "数据2", "数据3"), - ("数据4", "数据5", "数据6")] - - for row, row_data in enumerate(data): - for col, cell_data in enumerate(row_data): - item = QTableWidgetItem(cell_data) - self.table_widget.setItem(row, col, item) - -if __name__ == "__main__": - app = QApplication(sys.argv) - window = MyWindow() - window.setGeometry(100, 100, 600, 400) - window.show() - sys.exit(app.exec())