podflow 20250315__py3-none-any.whl → 20250318__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -247,7 +247,6 @@ class bottle_app:
247
247
  upload_data = gVar.upload_data
248
248
  username = request.query.get("username")
249
249
  password = request.query.get("password")
250
-
251
250
  if username in upload_data:
252
251
  if upload_data[username] == password:
253
252
  self.print_out("login", 200)
Podflow/main_podcast.py CHANGED
@@ -53,6 +53,7 @@ from Podflow.remove.remove_dir import remove_dir
53
53
  from Podflow.youtube.build import print_fail_youtube
54
54
 
55
55
  # 长期媒体进行上传模块
56
+ from Podflow.upload.login import login_upload
56
57
  from Podflow.upload.add_upload import add_upload
57
58
  from Podflow.upload.update_upload import update_upload
58
59
  from Podflow.upload.linked_client import connect_upload_server
@@ -116,10 +117,17 @@ def main_podcast():
116
117
  gVar.xmls_original, gVar.hash_rss_original, gVar.xmls_original_fail = (
117
118
  get_original_rss()
118
119
  )
120
+ # 连接上传服务器
121
+ upload_url = connect_upload_server()
122
+ # 登陆上传服务器
123
+ if upload_url:
124
+ upload_json = login_upload(upload_url)
125
+ if upload_json:
126
+ gVar.config["upload"] = False
127
+ else:
128
+ gVar.config["upload"] = False
119
129
  # 初始化原始上传信息
120
130
  get_upload_original()
121
- # 连接上传服务器
122
- connect_upload_server()
123
131
  # 更新Youtube和哔哩哔哩频道xml
124
132
  update_youtube_bilibili_rss()
125
133
  # 判断是否有更新内容
@@ -2,13 +2,14 @@
2
2
  # coding: utf-8
3
3
 
4
4
  import re
5
+ from itertools import islice
5
6
  from Podflow.basic.time_print import time_print
6
7
 
7
8
 
8
9
  def reverse_log(filename):
9
10
  try:
10
11
  with open(f"{filename}.log", "r", encoding="utf-8") as file:
11
- lines = file.readlines()
12
+ lines = list(islice(file, 10))
12
13
  except Exception:
13
14
  return
14
15
  num = 0
@@ -24,8 +25,10 @@ def reverse_log(filename):
24
25
  while not date_time(end_num):
25
26
  end_num -= 1
26
27
  if end_num > num and lines[num][:19] > lines[end_num][:19]:
27
- # 反转行的顺序
28
- reversed_lines = lines[::-1]
28
+ with open(f"{filename}.log", "r", encoding="utf-8") as file:
29
+ lines = file.readlines()
30
+ # 反转行的顺序
31
+ reversed_lines = lines[::-1]
29
32
  with open(f"{filename}.log", "w", encoding="utf-8") as file:
30
33
  file.writelines(reversed_lines)
31
34
  time_print(f"{filename}.log反转成功")
@@ -86,7 +86,4 @@ def connect_upload_server():
86
86
  # 选择第一个找到的服务器
87
87
  server_ip, server_port = servers[0]
88
88
  time_print(f"正在连接到{server_ip}:{server_port}...", True)
89
- return {
90
- "ip": server_ip,
91
- "port": server_port
92
- }
89
+ return f"http://{server_ip}:{server_port}"
@@ -2,6 +2,7 @@
2
2
  # coding: utf-8
3
3
 
4
4
  import socket
5
+ from Podflow.basic.write_log import write_log
5
6
  from Podflow.basic.time_print import time_print
6
7
  from Podflow.httpfs.port_judge import port_judge
7
8
  from Podflow.upload.time_key import check_time_key
@@ -45,11 +46,11 @@ def handle_discovery(broadcast_port, service_port):
45
46
  # 检查消息是否包含时间关键字
46
47
  if check_time_key(data ,"PODFLOW_DISCOVER_SERVER_REQUEST"):
47
48
  # 打印接收到的发现请求成功
48
- time_print(f"来自{addr[0]}的发现请求\033[32m成功\033[0m")
49
+ write_log(f"来自{addr[0]}的发现请求\033[32m成功\033[0m")
49
50
  # 构造响应消息
50
51
  response = f"PODFLOW_SERVER_INFO|{service_port}".encode()
51
52
  # 发送响应消息
52
53
  sock.sendto(response, addr)
53
54
  else:
54
55
  # 打印接收到的发现请求失败
55
- time_print(f"来自{addr[0]}的发现请求\033[31m失败\033[0m")
56
+ write_log(f"来自{addr[0]}的发现请求\033[31m失败\033[0m")
Podflow/upload/login.py CHANGED
@@ -6,7 +6,11 @@ import json
6
6
  import uuid
7
7
  import hashlib
8
8
  from Podflow import gVar
9
+ from Podflow.upload.time_key import time_key
9
10
  from Podflow.basic.file_save import file_save
11
+ from Podflow.basic.write_log import write_log
12
+ from Podflow.basic.time_print import time_print
13
+ from Podflow.basic.http_client import http_client
10
14
 
11
15
 
12
16
  def get_login():
@@ -26,3 +30,90 @@ def create():
26
30
  gVar.upload_data[new_username] = new_password
27
31
  file_save(gVar.upload_data, "upload_login.json", "channel_data")
28
32
  return new_username, new_password
33
+
34
+
35
+ def get_account(url):
36
+ url = f"{url}/newuser"
37
+ token = time_key(
38
+ "We need to generate an account password for uploading non one-time items that need to be saved."
39
+ )
40
+ data = {"token": token}
41
+ if response := http_client(
42
+ url=url,
43
+ name="获取上传服务账号密码",
44
+ data=data,
45
+ ):
46
+ return response.json()
47
+
48
+
49
+ def login(url, username, password):
50
+ url = f"{url}/login"
51
+ data = {
52
+ "username": username,
53
+ "password": password,
54
+ }
55
+ if response := http_client(
56
+ url=url,
57
+ name="登陆上传服务",
58
+ data=data,
59
+ ):
60
+ return response.json()
61
+
62
+
63
+ def login_upload(url):
64
+ try:
65
+ # 尝试打开并读取 JSON 文件
66
+ with open("channel_data/upload_data.json", "r") as file:
67
+ upload_json = file.read()
68
+ upload_json = json.loads(
69
+ upload_json
70
+ )
71
+ except Exception:
72
+ upload_json = {}
73
+ if "username" not in upload_json:
74
+ write_log("上传服务账号密码不存在")
75
+ time_print("获取上传服务账号密码...")
76
+ account_data = get_account(url)
77
+ if "code" in account_data:
78
+ if account_data["code"] == 0:
79
+ write_log("账号密码获取\033[32m成功\033[0m")
80
+ username = account_data["data"]["username"]
81
+ password = account_data["data"]["password"]
82
+ upload_json = {
83
+ "username": username,
84
+ "password": password,
85
+ }
86
+ file_save(upload_json, "upload_data.json", "channel_data")
87
+ return upload_json
88
+ elif account_data["code"] == -1:
89
+ write_log("账号密码获取\033[31m失败\033[0m: 认证失败")
90
+ return
91
+ else:
92
+ write_log("账号密码获取\033[31m失败\033[0m")
93
+ return
94
+ else:
95
+ write_log("账号密码获取\033[31m失败\033[0m: 无法连接")
96
+ return
97
+ else:
98
+ username = upload_json["username"]
99
+ password = upload_json.get("password", "")
100
+ login_data = login(url, username, password)
101
+ if "code" in login_data:
102
+ if login_data["code"] == 0:
103
+ time_print("登陆上传服务\033[32m成功\033[0m")
104
+ return upload_json
105
+ elif login_data["code"] == -1:
106
+ write_log("登陆上传服务\033[31m失败\033[0m: 认证失败")
107
+ return
108
+ elif login_data["code"] == -2:
109
+ write_log("登陆上传服务\033[31m失败\033[0m: 账号错误")
110
+ return
111
+ elif login_data["code"] == -3:
112
+ write_log("登陆上传服务\033[31m失败\033[0m: 密码错误")
113
+ return
114
+ else:
115
+ write_log("登陆上传服务\033[31m失败\033[0m")
116
+ return
117
+ else:
118
+ write_log("登陆上传服务\033[31m失败\033[0m: 无法连接")
119
+ return
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: podflow
3
- Version: 20250315
3
+ Version: 20250318
4
4
  Summary: A podcast server that includes YouTube and BiliBili
5
5
  Home-page: https://github.com/gruel-zxz/podflow
6
6
  Author: gruel_zxz
@@ -2,7 +2,7 @@ Podflow/__init__.py,sha256=-TdRoLAAMAPVNx2S2qSWR2vN-ZRD8wsEjZR4X1-7U1Q,6964
2
2
  Podflow/download_and_build.py,sha256=LeLjLHnF5N9vdrroDsB-mT4UKY2OwPSL3APUAkhTuwc,671
3
3
  Podflow/ffmpeg_judge.py,sha256=krttVs1PDot_0CDq5rmtUIpchiaiqtAkPYFQRLG6OQM,1275
4
4
  Podflow/main.py,sha256=tevbRqCDPuIrKuViI1Zm2lfdfjushYd7Nai6xZCGF4k,739
5
- Podflow/main_podcast.py,sha256=6p-JrDfLVOYic_X_wsVrtjOZKH1SbMRWOEe7KO2vsZQ,8455
5
+ Podflow/main_podcast.py,sha256=O9wS_5gxC3Akl09z3nN1kp1nJGQOL93D2qhYKk06XeM,8750
6
6
  Podflow/main_upload.py,sha256=9FoIEO7kRwGwyyF-KKKEz5vRO9vE9_ab2VE6xTMroeM,2296
7
7
  Podflow/parse_arguments.py,sha256=H2OXiOIHUuEUKOD0fk3zt_m1VsorGkL0eTcvx4N_C3Y,2441
8
8
  Podflow/basic/__init__.py,sha256=SyFA_F_0-zn1VejCL83IPeZx1k2HCiqNY-0l0bp1N88,44
@@ -40,7 +40,7 @@ Podflow/download/show_progress.py,sha256=7oGzhj_frO2A1o5JeGuHn7bHtma5oPpD_IWcctI
40
40
  Podflow/download/wait_animation.py,sha256=E2V3cm-10e5Iif40oU722OfzDe7YiLMbDqsjZ6dshBE,1056
41
41
  Podflow/download/youtube_and_bilibili_download.py,sha256=0uuEO2ybyLlg9uOButjqFvmIkCfq6xiQ7QLV2_u4c_M,1294
42
42
  Podflow/httpfs/__init__.py,sha256=agnAtd2Xe0qfOrElKgoBattAVqUBdj79wU2e2UOpcJM,45
43
- Podflow/httpfs/app_bottle.py,sha256=ZkCRXYrBJFUEatboUEB6Og35JoguWGnnuxImFLflsVA,11424
43
+ Podflow/httpfs/app_bottle.py,sha256=190_gqxM-VBRTmB5Xecb0a1LnIbuzfPI8Zoec2QhtwE,11415
44
44
  Podflow/httpfs/port_judge.py,sha256=RrBTxD6lXHbkfiDMu69-EUv0kbflfu1HpPfpB5Wz3MU,764
45
45
  Podflow/makeup/__init__.py,sha256=HaBchKbUjRqqXSGCkMfEqLOyx3tlqB2htXvTDs59owI,45
46
46
  Podflow/makeup/del_makeup_format_fail.py,sha256=rUSJD5lXMBM5pCde1amrtF6s93MMHp66-NHCXZy56AI,642
@@ -76,21 +76,21 @@ Podflow/remove/__init__.py,sha256=kns-jfTXH8lXh9OQ5E5-llsrAPlET5rl6RYpjoZKav8,45
76
76
  Podflow/remove/remove_dir.py,sha256=tah3LCD0bCcf5dDg3NrHuseaje3-31C5NLNupMg15TU,1099
77
77
  Podflow/remove/remove_file.py,sha256=ACO2iK8RAZKGJ08uABbzGwu5-B0RLklQ-EOOkSuPFiU,982
78
78
  Podflow/repair/__init__.py,sha256=sfrjrUGdBuCri8x51oassbkHJMDqmEp0MMZHodMxYNM,45
79
- Podflow/repair/reverse_log.py,sha256=nGVM4DOcnPz-VXJG6aHoKc1E461edYlaYoQYx7i6atQ,957
79
+ Podflow/repair/reverse_log.py,sha256=LNzpYEYsLvNkhMkhwzhmVIavD9rplcDmcBgR8t8DC-w,1106
80
80
  Podflow/upload/__init__.py,sha256=9uOIL8vr_vP_XYrhfZ4IDZmfSGyCf0_MpLOc-KnbpSY,45
81
81
  Podflow/upload/add_upload.py,sha256=8kxHDLFa225WFze3oTPNtOWbcECF--bQXuALfsRJLoo,1432
82
82
  Podflow/upload/get_upload_original.py,sha256=h2aoutZ-po40N8auRDbKvse14261Y5H7vHgfAN23vV0,4358
83
- Podflow/upload/linked_client.py,sha256=ODaS95VNKcAUpfcnMxZBM4nHlZ6S9jBDFpDEmapzT5I,3242
84
- Podflow/upload/linked_server.py,sha256=Tf3ANSryGuqjHsH1EqCrCA_pxo_dDuoYfCBzSgVVTrI,2264
85
- Podflow/upload/login.py,sha256=ovQKdtrddsoea_4s-SpnMHTVstH1pWoo0dFx1dpU_sU,798
83
+ Podflow/upload/linked_client.py,sha256=P-6mvHFO4C4wppb75cHzgBswVeNktfxz7uZTSXqzTdo,3193
84
+ Podflow/upload/linked_server.py,sha256=_upOctwNxg7p82tDK1qIuMO8CTZiYoB6dI4wZ3G4A98,2308
85
+ Podflow/upload/login.py,sha256=8BciQddfs7xfmVl5PWYC54-TEt52NjPw3kU-ksFgfV8,4007
86
86
  Podflow/upload/time_key.py,sha256=aR6xVe9x7ry8dKSHKoFLSUIfor2CoCuv8N9NRmsnUVo,967
87
87
  Podflow/upload/update_upload.py,sha256=4B5HyWwfmc_4Z5ZS_Wt2VcL6sgQFvq3JEl0Qubh7TwE,3183
88
88
  Podflow/youtube/__init__.py,sha256=-bdMyuw-wxoz2miVkp284amS4Qg0k7VN0JPuGF-cXlM,46
89
89
  Podflow/youtube/build.py,sha256=o6gld4qMph7UKq9pdO2E4dmtOA8brCK4sa_-vKEtYMM,12006
90
90
  Podflow/youtube/get.py,sha256=dFLyiHttygqdJltwC29jD_v8wwoLynE5NUdow_0wERI,16970
91
91
  Podflow/youtube/login.py,sha256=DlS_ZG4g6CKWqS5ojE4UwFJSCSZDsXbeuDVgHtQAa4A,1380
92
- podflow-20250315.dist-info/METADATA,sha256=sWLPHwYRGI7rcDccvaXhU_KSsgq30adtNg2lgiN_Yjo,14030
93
- podflow-20250315.dist-info/WHEEL,sha256=tZoeGjtWxWRfdplE7E3d45VPlLNQnvbKiYnx7gwAy8A,92
94
- podflow-20250315.dist-info/entry_points.txt,sha256=44nj8jJB7bo1JLNrKQZmwMGEA1OalrALJ0tF_G0yXLY,131
95
- podflow-20250315.dist-info/top_level.txt,sha256=KcvRCiz_DRWWc9i-PgpARvFB0J4CKmpZOZgPqOdG-Lk,8
96
- podflow-20250315.dist-info/RECORD,,
92
+ podflow-20250318.dist-info/METADATA,sha256=B90P97zSINoC0OD2qRBtLf9juVPT3dfxNlq4IeVmlc0,14030
93
+ podflow-20250318.dist-info/WHEEL,sha256=tZoeGjtWxWRfdplE7E3d45VPlLNQnvbKiYnx7gwAy8A,92
94
+ podflow-20250318.dist-info/entry_points.txt,sha256=44nj8jJB7bo1JLNrKQZmwMGEA1OalrALJ0tF_G0yXLY,131
95
+ podflow-20250318.dist-info/top_level.txt,sha256=KcvRCiz_DRWWc9i-PgpARvFB0J4CKmpZOZgPqOdG-Lk,8
96
+ podflow-20250318.dist-info/RECORD,,