podflow 20250413.3__py3-none-any.whl → 20250415.1__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.
podflow/__init__.py CHANGED
@@ -107,6 +107,7 @@ class Application_gVar:
107
107
  self.hash_rss_original = "" # 原始rss哈希值文本
108
108
  self.xmls_original = {} # 原始xml信息字典
109
109
  self.xmls_original_fail = [] # 未获取原始xml频道列表
110
+ self.xmls_quantity = {} # xml数量字典
110
111
  self.youtube_xml_get_tree = {} # YouTube频道简介和图标字典
111
112
  self.all_youtube_content_ytid = {} # 所有YouTube视频id字典
112
113
  self.all_bilibili_content_bvid = {} # 所有哔哩哔哩视频id字典
@@ -119,7 +120,7 @@ class Application_gVar:
119
120
  self.upload_data = {} # 上传用户账号密码字典
120
121
 
121
122
  self.shortcuts_url = {} # 输出至shortcut的url字典
122
-
123
+
123
124
  self.index_message = { # 图形界面显示信息字典
124
125
  "podflow": [], # 主窗口信息列表
125
126
  "http": [], # httpfs窗口信息列表
@@ -4,7 +4,7 @@
4
4
  import time
5
5
  import threading
6
6
  import contextlib
7
- from datetime import datetime
7
+ from podflow.basic.time_print import time_print
8
8
  from podflow.basic.http_client import http_client
9
9
 
10
10
 
@@ -57,5 +57,5 @@ def time_stamp():
57
57
  thread3.join()
58
58
  if time_stamps:
59
59
  return int(sum(time_stamps) / len(time_stamps))
60
- print(f"{datetime.now().strftime('%H:%M:%S')}|\033[31m获取时间戳api失败\033[0m")
60
+ time_print("\033[31m获取时间戳api失败\033[0m")
61
61
  return round(time.time() * 1000)
podflow/bilibili/get.py CHANGED
@@ -318,7 +318,13 @@ def bilibili_json_update(bilibili_key, bilibili_value):
318
318
 
319
319
 
320
320
  # 更新哔哩哔哩频道xml模块
321
- def bilibili_rss_update(bilibili_key, bilibili_value):
321
+ def bilibili_rss_update(
322
+ bilibili_key,
323
+ bilibili_value,
324
+ ratio_thread,
325
+ rss_update_lock,
326
+ ):
327
+ bilibili_content_bvid_backward = [] # 初始化向后更新的内容列表
322
328
  # 获取已下载文件列表
323
329
  bilibili_content_bvid_original = get_file_list(
324
330
  bilibili_key, gVar.channelid_bilibili[bilibili_value]["media"]
@@ -352,11 +358,13 @@ def bilibili_rss_update(bilibili_key, bilibili_value):
352
358
  "content": bilibili_space,
353
359
  "type": "int",
354
360
  } # 设置为整型内容
361
+ gVar.xmls_quantity[bilibili_key]["update"] = 0
355
362
  elif bilibili_space is None:
356
363
  gVar.channelid_bilibili_rss[bilibili_key] = {
357
364
  "content": bilibili_space_original,
358
365
  "type": "json",
359
366
  } # 使用原始json内容
367
+ gVar.xmls_quantity[bilibili_key]["update"] = 0
360
368
  else:
361
369
  gVar.channelid_bilibili_rss[bilibili_key] = {
362
370
  "content": bilibili_space,
@@ -369,6 +377,7 @@ def bilibili_rss_update(bilibili_key, bilibili_value):
369
377
  bilibili_content_bvid = bilibili_space["list"][
370
378
  : gVar.channelid_bilibili[bilibili_value]["update_size"]
371
379
  ]
380
+ gVar.xmls_quantity[bilibili_key]["update"] = len(bilibili_content_bvid)
372
381
  bilibili_space_new = list_merge_tidy(
373
382
  bilibili_content_bvid, guids
374
383
  ) # 合并新内容和原内容
@@ -463,7 +472,6 @@ def bilibili_rss_update(bilibili_key, bilibili_value):
463
472
  gVar.channelid_bilibili_ids_update[bilibili_key] = (
464
473
  bilibili_value # 标记ID更新
465
474
  )
466
- bilibili_content_bvid_backward = [] # 初始化向后更新的内容列表
467
475
  for guid in backward_list:
468
476
  if (
469
477
  guid not in bilibili_content_bvid_original
@@ -475,3 +483,10 @@ def bilibili_rss_update(bilibili_key, bilibili_value):
475
483
  gVar.bilibili_content_bvid_backward_update[bilibili_key] = (
476
484
  bilibili_content_bvid_backward # 更新最终的向后更新内容
477
485
  )
486
+ gVar.xmls_quantity[bilibili_key]["backward"] = len(bilibili_content_bvid_backward)
487
+ # 更新进度条
488
+ with rss_update_lock:
489
+ ratio = gVar.index_message["schedule"][1] + ratio_thread
490
+ if ratio > 0.09:
491
+ ratio = 0.09
492
+ gVar.index_message["schedule"][1] = ratio
podflow/httpfs/to_html.py CHANGED
@@ -16,14 +16,14 @@ def ansi_to_html(ansi_text):
16
16
  "\033[35m": "ansi-35m", # 品红
17
17
  "\033[36m": "ansi-36m", # 青色
18
18
  "\033[37m": "ansi-37m", # 白色
19
- "\033[90m": "ansi-90m", # 亮黑色 (通常显示为灰色)
20
- "\033[91m": "ansi-91m", # 亮红色 (例如:热粉色)
21
- "\033[92m": "ansi-92m", # 亮绿色 (例如:浅绿色)
22
- "\033[93m": "ansi-93m", # 亮黄色 (通常与黄色相同)
23
- "\033[94m": "ansi-94m", # 亮蓝色 (例如:浅蓝色)
24
- "\033[95m": "ansi-95m", # 亮品红 (通常与品红相同)
25
- "\033[96m": "ansi-96m", # 亮青色 (通常与青色相同)
26
- "\033[97m": "ansi-97m", # 亮白色 (例如:爱丽丝蓝)
19
+ "\033[90m": "ansi-90m", # 亮黑色
20
+ "\033[91m": "ansi-91m", # 亮红色
21
+ "\033[92m": "ansi-92m", # 亮绿色
22
+ "\033[93m": "ansi-93m", # 亮黄色
23
+ "\033[94m": "ansi-94m", # 亮蓝色
24
+ "\033[95m": "ansi-95m", # 亮品红
25
+ "\033[96m": "ansi-96m", # 亮青色
26
+ "\033[97m": "ansi-97m", # 亮白色
27
27
  "\033[0m": "", # 重置
28
28
  }
29
29
  inside_span = False
@@ -46,9 +46,8 @@ def ansi_to_html(ansi_text):
46
46
 
47
47
  if inside_span:
48
48
  html_output += "</span>"
49
- html_output = re.sub(r'^\n', '', html_output)
50
- html_output = re.sub(r'\n+$', '', html_output)
51
- html_output = re.sub(r' +$', '', html_output)
49
+ html_output = re.sub(r'^\s', '', html_output)
50
+ html_output = re.sub(r'\s+$', '', html_output)
52
51
  return html_output
53
52
 
54
53
 
podflow/main_podcast.py CHANGED
@@ -29,6 +29,7 @@ from podflow.download_and_build import download_and_build
29
29
  from podflow.message.save_rss import save_rss
30
30
  from podflow.message.get_original_rss import get_original_rss
31
31
  from podflow.message.get_video_format import get_video_format
32
+ from podflow.message.optimize_download import optimize_download
32
33
  from podflow.message.original_rss_fail_print import original_rss_fail_print
33
34
  from podflow.message.update_information_display import update_information_display
34
35
  from podflow.message.update_youtube_bilibili_rss import update_youtube_bilibili_rss
@@ -122,15 +123,18 @@ def main_podcast():
122
123
  # 恢复进程打印
123
124
  bottle_app_instance.cherry_print()
124
125
  # 获取原始xml字典和rss文本
125
- gVar.xmls_original, gVar.hash_rss_original, gVar.xmls_original_fail = (
126
- get_original_rss()
127
- )
128
- gVar.index_message["schedule"][1] = 0.03 + random.uniform(0, 0.0049)
126
+ (
127
+ gVar.xmls_original,
128
+ gVar.hash_rss_original,
129
+ gVar.xmls_original_fail,
130
+ gVar.xmls_quantity,
131
+ ) = get_original_rss()
132
+ gVar.index_message["schedule"][1] = 0.025 + random.uniform(0, 0.0024)
129
133
  # 暂停进程打印
130
134
  gVar.server_process_print_flag[0] = "pause"
131
135
  # 连接上传服务器
132
136
  upload_url = connect_upload_server()
133
- gVar.index_message["schedule"][1] = 0.04 + random.uniform(0, 0.0049)
137
+ gVar.index_message["schedule"][1] = 0.03 + random.uniform(0, 0.0024)
134
138
  # 恢复进程打印
135
139
  bottle_app_instance.cherry_print()
136
140
  # 登陆上传服务器
@@ -140,10 +144,10 @@ def main_podcast():
140
144
  gVar.config["upload"] = False
141
145
  else:
142
146
  gVar.config["upload"] = False
143
- gVar.index_message["schedule"][1] = 0.045 + random.uniform(0, 0.0024)
147
+ gVar.index_message["schedule"][1] = 0.035 + random.uniform(0, 0.0024)
144
148
  # 初始化原始上传信息
145
149
  get_upload_original()
146
- gVar.index_message["schedule"][1] = 0.05
150
+ gVar.index_message["schedule"][1] = 0.04
147
151
  # 更新Youtube和哔哩哔哩频道xml
148
152
  update_youtube_bilibili_rss()
149
153
  gVar.index_message["schedule"][1] = 0.1
@@ -175,6 +179,8 @@ def main_podcast():
175
179
  gVar.index_message["schedule"][1] = 0.199
176
180
  # 恢复进程打印
177
181
  bottle_app_instance.cherry_print()
182
+ # 优化下载顺序
183
+ optimize_download()
178
184
  # 删除中断下载的媒体文件
179
185
  if gVar.config["delete_incompletement"]:
180
186
  delete_part(gVar.channelid_youtube_ids | gVar.channelid_bilibili_ids)
@@ -251,6 +257,7 @@ def main_podcast():
251
257
  gVar.hash_rss_original = "" # 原始rss哈希值文本
252
258
  gVar.xmls_original.clear() # 原始xml信息字典
253
259
  gVar.xmls_original_fail.clear() # 未获取原始xml频道列表
260
+ gVar.xmls_quantity.clear() # xml数量字典
254
261
  gVar.youtube_xml_get_tree.clear() # YouTube频道简介和图标字典
255
262
  gVar.all_youtube_content_ytid.clear() # 所有YouTube视频id字典
256
263
  gVar.all_bilibili_content_bvid.clear() # 所有哔哩哔哩视频id字典
@@ -263,10 +270,11 @@ def main_podcast():
263
270
  if parse.update_num != -1:
264
271
  parse.update_num -= 1
265
272
  if parse.argument == "a-shell":
273
+ shortcuts_input = urllib.parse.quote(json.dumps(gVar.shortcuts_url))
266
274
  openserver_process = subprocess.Popen(
267
275
  [
268
276
  "open",
269
- f"shortcuts://run-shortcut?name=Podflow&input=text&text={urllib.parse.quote(json.dumps(gVar.shortcuts_url))}",
277
+ f"shortcuts://run-shortcut?name=Podflow&input=text&text={shortcuts_input}",
270
278
  ]
271
279
  )
272
280
  # 延时
@@ -281,3 +289,6 @@ def main_podcast():
281
289
  # 关闭CherryPy服务器
282
290
  time_print("Podflow运行结束")
283
291
  cherrypy.engine.exit()
292
+
293
+ from podflow.basic.file_save import file_save
294
+ file_save(gVar.video_id_update_format,"video_id_update_format.json")
@@ -2,9 +2,9 @@
2
2
  # coding: utf-8
3
3
 
4
4
  import threading
5
- from datetime import datetime
6
5
  from podflow import gVar
7
6
  from podflow.basic.write_log import write_log
7
+ from podflow.basic.time_print import time_print
8
8
  from podflow.message.media_format import media_format
9
9
 
10
10
 
@@ -74,9 +74,7 @@ def makeup_format(video_id, makeup_format_lock):
74
74
  def make_up_file_format_mod():
75
75
  # 判断是否补全
76
76
  if len(gVar.make_up_file_format) != 0:
77
- print(
78
- f"{datetime.now().strftime('%H:%M:%S')}|补全缺失媒体 \033[34m下载准备中...\033[0m"
79
- )
77
+ time_print("补全缺失媒体 \033[34m下载准备中...\033[0m")
80
78
  # 创建线程锁
81
79
  makeup_format_lock = threading.Lock()
82
80
  # 创建线程列表
@@ -5,6 +5,7 @@ import zipfile
5
5
  from datetime import datetime
6
6
  from podflow import gVar
7
7
  from podflow.basic.write_log import write_log
8
+ from podflow.basic.time_print import time_print
8
9
  from podflow.message.rss_create_hash import rss_create_hash
9
10
 
10
11
 
@@ -42,4 +43,7 @@ def backup_zip_save(file_content):
42
43
  judging_save = True
43
44
  else:
44
45
  # 如果文件已存在, 输出提示信息
45
- print(f"{file_name_str}已存在于压缩包中, 重试中...")
46
+ time_print(
47
+ f"{file_name_str}已存在于压缩包中, 重试中...",
48
+ Time=False,
49
+ )
@@ -30,6 +30,7 @@ def rss_create_hash(data):
30
30
  # 获取原始xml模块
31
31
  def get_original_rss():
32
32
  xmls_original_fail = []
33
+ xmls_quantity = {}
33
34
  # 获取原始总xml文件
34
35
  try:
35
36
  with open(
@@ -57,11 +58,25 @@ def get_original_rss():
57
58
  f"channel_rss/{channelid_key}.xml", "r", encoding="utf-8"
58
59
  ) as file: # 打开文件进行读取
59
60
  youtube_rss_original = file.read() # 读取文件内容
60
- get_xmls_original[channelid_key] = youtube_rss_original.split(
61
+ get_xmls_original_key = youtube_rss_original.split(
61
62
  f"<!-- {{{channelid_key}}} -->\n"
62
63
  )[1]
64
+ get_xmls_original[channelid_key] = get_xmls_original_key
65
+ xmls_quantity[channelid_key] = {
66
+ "original": len(
67
+ get_xmls_original_key.split(f"<!-- {channelid_key} -->")
68
+ )
69
+ }
63
70
  except FileNotFoundError: # 文件不存在直接更新
64
71
  xmls_original_fail.append(channelid_key)
72
+ xmls_quantity[channelid_key] = {"original": 0}
73
+ else:
74
+ xmls_quantity[channelid_key] = {
75
+ "original": len(
76
+ get_xmls_original[channelid_key].split(f"<!-- {channelid_key} -->")
77
+ )
78
+ }
65
79
  # 生成原始rss的哈希值
66
80
  hash_rss_original = rss_create_hash(rss_original)
67
- return get_xmls_original, hash_rss_original, xmls_original_fail
81
+
82
+ return get_xmls_original, hash_rss_original, xmls_original_fail, xmls_quantity
@@ -0,0 +1,34 @@
1
+ # podflow/message/optimize_download.py
2
+ # coding: utf-8
3
+
4
+ from podflow import gVar
5
+ from podflow.basic.write_log import write_log
6
+ from podflow.basic.time_print import time_print
7
+
8
+
9
+ # 优化下载顺序模块
10
+ def optimize_download():
11
+ xmls_quantity = gVar.xmls_quantity
12
+ video_id_update_format = gVar.video_id_update_format
13
+ channel_sums = {}
14
+ sorted_video_id_update_format = {}
15
+ time_print("开始计算频道媒体数量")
16
+ # 计算每个频道的总和
17
+ for channel_id, values in xmls_quantity.items():
18
+ total = values["original"] + values["update"] + values["backward"]
19
+ channel_sums[channel_id] = total
20
+ gVar.xmls_quantity[channel_id]["total"] = total
21
+ time_print("开始对频道进行排序")
22
+ # 按总和从大到小排序
23
+ sorted_channels = sorted(channel_sums.items(), key=lambda x: x[1], reverse=True)
24
+ time_print("开始优化下载顺序")
25
+ # 根据总和排序数据
26
+ for channel_id, _ in sorted_channels:
27
+ for key, value in video_id_update_format.items():
28
+ if value["id"] == channel_id:
29
+ sorted_video_id_update_format[key] = value
30
+ if len(video_id_update_format) == len(sorted_video_id_update_format):
31
+ gVar.video_id_update_format = sorted_video_id_update_format
32
+ time_print("下载顺序优化\033[32m成功\033[0m")
33
+ else:
34
+ write_log("下载顺序优化\033[31m失败\033[0m")
@@ -13,6 +13,14 @@ from podflow.bilibili.get import bilibili_rss_update
13
13
 
14
14
  # 更新Youtube和哔哩哔哩频道xml多线程模块
15
15
  def update_youtube_bilibili_rss():
16
+ if gVar.channelid_youtube_ids or gVar.channelid_bilibili_ids:
17
+ channelid_quantity = len(gVar.channelid_youtube_ids) + len(gVar.channelid_bilibili_ids)
18
+ ratio_part = 0.01 / channelid_quantity
19
+ ratio_thread = 0.05 / channelid_quantity
20
+ else:
21
+ ratio_part = 0
22
+ ratio_thread = 0
23
+
16
24
  pattern_youtube404 = r"Error 404 \(Not Found\)" # 设置要匹配的正则表达式模式
17
25
  pattern_youtube_error = {
18
26
  "This channel was removed because it violated our Community Guidelines.": "违反社区准则",
@@ -26,6 +34,7 @@ def update_youtube_bilibili_rss():
26
34
  r"<yt:channelId>(UC)?(.{22})?</yt:channelId>",
27
35
  ]
28
36
  youtube_bilibili_rss_update_threads = [] # 创建线程列表
37
+ rss_update_lock = threading.Lock()
29
38
  # Youtube多线程
30
39
  for youtube_key, youtube_value in gVar.channelid_youtube_ids.items():
31
40
  thread = threading.Thread(
@@ -36,6 +45,8 @@ def update_youtube_bilibili_rss():
36
45
  pattern_youtube_varys,
37
46
  pattern_youtube404,
38
47
  pattern_youtube_error,
48
+ ratio_thread,
49
+ rss_update_lock,
39
50
  ),
40
51
  )
41
52
  youtube_bilibili_rss_update_threads.append(thread)
@@ -44,7 +55,13 @@ def update_youtube_bilibili_rss():
44
55
  # 哔哩哔哩多线程
45
56
  for bilibili_key, bilibili_value in gVar.channelid_bilibili_ids.items():
46
57
  thread = threading.Thread(
47
- target=bilibili_rss_update, args=(bilibili_key, bilibili_value)
58
+ target=bilibili_rss_update,
59
+ args=(
60
+ bilibili_key,
61
+ bilibili_value,
62
+ ratio_thread,
63
+ rss_update_lock,
64
+ ),
48
65
  )
49
66
  youtube_bilibili_rss_update_threads.append(thread)
50
67
  # 开始多线程
@@ -61,12 +78,6 @@ def update_youtube_bilibili_rss():
61
78
  ) in pattern_youtube_error.items():
62
79
  if pattern_youtube_error_key in youtube_content:
63
80
  return pattern_youtube_error_value
64
- if gVar.channelid_youtube_ids or gVar.channelid_bilibili_ids:
65
- ratio_part = 0.05 / (
66
- len(gVar.channelid_youtube_ids) + len(gVar.channelid_bilibili_ids)
67
- )
68
- else:
69
- ratio_part = 0
70
81
 
71
82
  # 更新Youtube频道
72
83
  for youtube_key, youtube_value in gVar.channelid_youtube_ids.copy().items():
@@ -3,12 +3,12 @@
3
3
 
4
4
  import re
5
5
  import json
6
- from datetime import datetime
7
6
  from collections import Counter
8
7
  from email.utils import parsedate_tz, mktime_tz
9
8
  from podflow import gVar
10
9
  from podflow.basic.file_save import file_save
11
10
  from podflow.basic.write_log import write_log
11
+ from podflow.basic.time_print import time_print
12
12
  from podflow.message.get_media_name import get_media_name
13
13
 
14
14
 
@@ -41,9 +41,7 @@ def get_upload():
41
41
  }
42
42
  # 如果两个计数字典不相等,提示错误
43
43
  if age_counts != xmls_original_counts:
44
- print(
45
- f"{datetime.now().strftime('%H:%M:%S')}|无法获取完整原始上传信息"
46
- )
44
+ time_print("无法获取完整原始上传信息")
47
45
  # 如果 upload_original 为空
48
46
  else:
49
47
  # 遍历 xmls_original 的每个键值对
@@ -79,7 +79,7 @@ def connect_upload_server():
79
79
  if servers:
80
80
  break
81
81
  current_port += 1
82
- print("")
82
+ time_print("", Time=False)
83
83
  if not servers:
84
84
  time_print("找不到上传服务器", True)
85
85
  else:
podflow/youtube/get.py CHANGED
@@ -5,8 +5,8 @@ import contextlib
5
5
  import re
6
6
  import os
7
7
  import threading
8
- from datetime import datetime
9
8
  from podflow import gVar
9
+ from podflow.basic.time_print import time_print
10
10
  from podflow.basic.http_client import http_client
11
11
  from podflow.basic.vary_replace import vary_replace
12
12
  from podflow.basic.get_html_dict import get_html_dict
@@ -148,16 +148,12 @@ def get_youtube_html_playlists(
148
148
  if fail: # 如果仍然有失败的视频
149
149
  if direction_forward or not videoid_start:
150
150
  for videoid in fail:
151
- print(
152
- f"{datetime.now().strftime('%H:%M:%S')}|{youtube_value}|{videoid} HTML无法更新, 将不获取"
153
- )
151
+ time_print(f"{youtube_value}|{videoid} HTML无法更新, 将不获取")
154
152
  if videoid in idlist:
155
153
  idlist.remove(videoid) # 安全地移除视频 ID,避免 `ValueError`
156
154
  del item[videoid] # 删除对应的字典项
157
155
  else:
158
- print(
159
- f"{datetime.now().strftime('%H:%M:%S')}|{youtube_value} HTML有失败只更新部分"
160
- )
156
+ time_print(f"{youtube_value} HTML有失败只更新部分")
161
157
  index = len(idlist)
162
158
  for videoid in fail:
163
159
  if videoid in idlist:
@@ -194,6 +190,8 @@ def youtube_rss_update(
194
190
  pattern_youtube_varys,
195
191
  pattern_youtube404,
196
192
  pattern_youtube_error,
193
+ ratio_thread,
194
+ rss_update_lock,
197
195
  ):
198
196
  channelid_youtube = gVar.channelid_youtube
199
197
  channelid_youtube_rss = gVar.channelid_youtube_rss
@@ -320,6 +318,7 @@ def youtube_rss_update(
320
318
  "update_size"
321
319
  ] # 限制视频ID数量
322
320
  ]
321
+ gVar.xmls_quantity[youtube_key]["update"] = len(youtube_content_ytid)
323
322
  youtube_content_new = list_merge_tidy(youtube_content_ytid, guids) # 合并并去重
324
323
  if youtube_content_ytid := [
325
324
  exclude
@@ -332,6 +331,7 @@ def youtube_rss_update(
332
331
  youtube_content_ytid # 保存更新的视频ID
333
332
  )
334
333
  # 向后更新
334
+ youtube_content_ytid_backward = []
335
335
  if channelid_youtube[youtube_value]["BackwardUpdate"] and guids:
336
336
  # 计算向后更新的数量
337
337
  backward_update_size = channelid_youtube[youtube_value]["last_size"] - len(
@@ -364,7 +364,6 @@ def youtube_rss_update(
364
364
  channelid_youtube_rss[youtube_key].update(
365
365
  {"backward": youtube_html_backward_playlists}
366
366
  ) # 添加向后更新内容
367
- youtube_content_ytid_backward = []
368
367
  youtube_content_ytid_backward.extend(
369
368
  guid
370
369
  for guid in backward_list
@@ -374,3 +373,10 @@ def youtube_rss_update(
374
373
  gVar.youtube_content_ytid_backward_update[youtube_key] = (
375
374
  youtube_content_ytid_backward # 保存向后更新的ID
376
375
  )
376
+ gVar.xmls_quantity[youtube_key]["backward"] = len(youtube_content_ytid_backward)
377
+ # 更新进度条
378
+ with rss_update_lock:
379
+ ratio = gVar.index_message["schedule"][1] + ratio_thread
380
+ if ratio > 0.09:
381
+ ratio = 0.09
382
+ gVar.index_message["schedule"][1] = ratio
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: podflow
3
- Version: 20250413.3
3
+ Version: 20250415.1
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
@@ -1,8 +1,8 @@
1
- podflow/__init__.py,sha256=CgmkC0DhJ05yHdFmZRwImFN1jxf6Z8ggokIlPApDl_I,7275
1
+ podflow/__init__.py,sha256=uFRDMRh6CVcEEgj4AMmLl43vusbI4o525Hz8Xf24Hsc,7318
2
2
  podflow/download_and_build.py,sha256=GKQ1uX8Nuwdhr4wgnGr3jP1Mu0llRUPFcboQ3S05WkU,671
3
3
  podflow/ffmpeg_judge.py,sha256=wM49pPXOFwFAA_8TKHal5fV6ka9sAA87yGQMDOssvXo,1340
4
4
  podflow/main.py,sha256=Cz2E33-Kcc_1_oxNs4Z1OoqJYhonmClsrtoCW1oQmZA,739
5
- podflow/main_podcast.py,sha256=zUDTqabL07Aq-jTfxnCvD2b6NmHK0kUGOb942VfNKgI,12460
5
+ podflow/main_podcast.py,sha256=lqNdTQArVn6c-z0apdO-56I6SX3BawovKwPeVPgNVxc,12870
6
6
  podflow/main_upload.py,sha256=H_T5KQMYzToqzQbjGQ6DWDGziy8iMnpmf7A1qOStJuo,2296
7
7
  podflow/parse_arguments.py,sha256=h3a7EaRZS04kNMFYbxTW9Ch29KgZ7dyS-yqEEt_etQI,2592
8
8
  podflow/basic/__init__.py,sha256=CAfI6mVQtz7KKbAiTIZ9_IbvaTXeAqxR1U7ov9GDoDo,44
@@ -17,12 +17,12 @@ podflow/basic/qr_code.py,sha256=lZo11jbYqFQYy9gjBtRRUoLjlaEmoES-phydnrOMcLo,1727
17
17
  podflow/basic/split_dict.py,sha256=Ir6GTortcWMUeFITFgY1v-INMla5y0IN3RN3nTgzWqM,401
18
18
  podflow/basic/time_format.py,sha256=T3tw2vbOwxMYYXDaV4Sj76WOZtsspj2lWA_DzWqUEJA,487
19
19
  podflow/basic/time_print.py,sha256=foPezlEnYU0tOb8h79nDXZNElgNjRsHScYHYk9hGeTM,1481
20
- podflow/basic/time_stamp.py,sha256=Kbz9PzgPtss1fRqPXdfz1q6MTGVMRi3LPClN7wrXSIk,1888
20
+ podflow/basic/time_stamp.py,sha256=ubdnw4SjcO0JR5JGatBjAX4sxQ4Ro9AjNuzKFkhqwec,1872
21
21
  podflow/basic/vary_replace.py,sha256=-TyvZxfak6U7Ak8F87ctYUBpHB2Il6iYZof37lwKjto,211
22
22
  podflow/basic/write_log.py,sha256=wfiNfFuRLCWNLXDRNPVaVsKxwB44xxTiCFJ66g71XmU,1255
23
23
  podflow/bilibili/__init__.py,sha256=6ZTpvhZTyn4f0LryXzH8lzyK1_rRHBeM-hkBoklKHRA,47
24
24
  podflow/bilibili/build.py,sha256=PKxkjUa8EedpoQTFZIgdcsVbiAWRISA-qKCpCaSTLTU,7957
25
- podflow/bilibili/get.py,sha256=Ld8lhb_3eiSagVXWyj1KIrRLjfH6p0sUolEG5VtN8mk,20337
25
+ podflow/bilibili/get.py,sha256=dB1cgogf6bI42D1fNFWIvZB6xFK-VCKuWqqQrRDHhc8,20857
26
26
  podflow/bilibili/login.py,sha256=oHnuOMvlKZUnJ1OBHuZpTEnG04pboWsueOx871lQWjc,11482
27
27
  podflow/config/__init__.py,sha256=MzgAlkSdV-5MFC11r0QSf-GPxmsLbrMc5ROIrJafjag,45
28
28
  podflow/config/build_original.py,sha256=pG9gCkBBIWwU8QxZA06Br6JRfI4XUSIEiN8eqo1-v7k,1809
@@ -44,30 +44,31 @@ podflow/httpfs/app_bottle.py,sha256=l2myMkoRoC5O7OWCyYjCmk7wOEIlgTWfFfImlhXMYwY,
44
44
  podflow/httpfs/browser.py,sha256=BJ4Xkfiki_tDr0Sc9RqAcEfIVpkAZ3RFOwo0aMHlY3U,197
45
45
  podflow/httpfs/get_channelid.py,sha256=gcwy4IVHBWNQz7qPCpjwiAklGFLRGzvM33-UZz7oFvo,2296
46
46
  podflow/httpfs/port_judge.py,sha256=l_nLpsSiIhAzfJGCOWyYC-KkCCWPUW2ybe_5hdMOEzE,764
47
- podflow/httpfs/to_html.py,sha256=pqNgHz3G4suTuFszULPkhKADKWc8ISlPJp7BxL2ntM4,1941
47
+ podflow/httpfs/to_html.py,sha256=60azc3xfPKQB7Qaj_wlF3MoHmG0Wkjep70-JroHA2gg,1709
48
48
  podflow/makeup/__init__.py,sha256=ligUtfj0stTcOHFXDF6eAN7Up2PxlB0GnGbLq7iDY3c,45
49
49
  podflow/makeup/del_makeup_format_fail.py,sha256=XizQh74QYXxRg0e1uerXjd4Tiq5qChks0fTAY7n3Z1I,642
50
50
  podflow/makeup/make_up_file.py,sha256=_kpvlOpW1TX379aj83rw7U9fFRsHYkYBja1yUKw6oys,2938
51
- podflow/makeup/make_up_file_format_mod.py,sha256=VlR4yG7N6C2laYIBKb7J6Alqq2_X5Y7kgXMQSN6lJ6E,3613
51
+ podflow/makeup/make_up_file_format_mod.py,sha256=4dIMeVObr4qnMLD0mocZzBNhduc8dHx-b-w1GVotKIk,3575
52
52
  podflow/makeup/make_up_file_mod.py,sha256=padTanSPw5Dysf_CcUUVy65nCC6zbz1gPJRX98tmUdY,1075
53
53
  podflow/message/__init__.py,sha256=pZkcrrtkdtxgMriEHBZ0_rptKaQrQeMPJvPSaoI1Awo,46
54
- podflow/message/backup_zip_save.py,sha256=0SIxVvAtgSWAr_TvdXLVDIpxvXOHeFUN8n8QzfnIB84,1740
54
+ podflow/message/backup_zip_save.py,sha256=c81jnx8IxHjTcO7G0OUAppawpBIPxa9wgkj9AQhqeJc,1864
55
55
  podflow/message/create_main_rss.py,sha256=yo12YYUxYTjGSHD5CrnRIbUZumtr0NOZqQWXpC3t55k,3296
56
56
  podflow/message/display_qrcode_and_url.py,sha256=VqmRkDYYG03VihfW4SAU49HJVmfqWbLTgMxqCaREeCo,1037
57
57
  podflow/message/fail_message_initialize.py,sha256=UPHYNErD2hnzm2WFlNqghBRDCw_sf_3EagAF5LiO9wk,6462
58
58
  podflow/message/format_time.py,sha256=gveNh4FGeS3ytwDyYB-h12d1_Km6XoX7WSPcFmDfCBk,909
59
59
  podflow/message/get_media_name.py,sha256=5ULPQOQCZ2-lxdkILwlBP-ItzdFEgvEAKxeLtplACbQ,861
60
- podflow/message/get_original_rss.py,sha256=PYA7UGhHXbUN66vWmxWOp5Ns423CopHxw4vR19zXaPs,2383
60
+ podflow/message/get_original_rss.py,sha256=4OhJ7XCRiS8Eyx4AfRr2sfOdVNmpyDrxMXZo7MpFa8Y,2990
61
61
  podflow/message/get_video_format.py,sha256=bPetnFwQlhIO9do_nq3B4AwHQRxFn6SDYvFItjwEx0o,5324
62
62
  podflow/message/get_video_format_multithread.py,sha256=tbgQDMpcntulrbmXBbKL4iVr4t_9evGsuMOIZLoLebI,1615
63
63
  podflow/message/get_youtube_and_bilibili_video_format.py,sha256=QvGkm2avYlUlvxfouw545Si72DtT4SAJwWw0zu6eq_U,4705
64
64
  podflow/message/media_format.py,sha256=Q4WoML4UqL0Ry-QN8DHFJqOQ2tXcFN6u5hmhdSLdP1g,7346
65
+ podflow/message/optimize_download.py,sha256=bIN1Lyk17tgEjjpxgxBzptLT_F_SRdSoyoyIiIT20uo,1409
65
66
  podflow/message/original_rss_fail_print.py,sha256=7HM5Gwi3GqBIg2dtTTDlN_FRgZZjYv6ejizS3tDiePE,502
66
67
  podflow/message/rss_create_hash.py,sha256=M5OS9KcQ4mIxLes9ij4oNji-4VKgi56bg0Shv5nCIQ4,638
67
68
  podflow/message/save_rss.py,sha256=x-yRwT7bAUt2k-R9DWa5uToqpcOdaXkPW_4VH5Gbeo4,3193
68
69
  podflow/message/title_correction.py,sha256=Zieulj2wQY_o4r3u5ZRsDQP5y8KuZHrL_l8tnM96k6g,915
69
70
  podflow/message/update_information_display.py,sha256=Zn-Xhps4PKf7NbgQrT-qTwhP096RV-48OEncK_vuUe0,3061
70
- podflow/message/update_youtube_bilibili_rss.py,sha256=ZgR0ARCRNVRxSFP5LKaYWrNIQlYXCvQlDZBOMXYqzKo,5783
71
+ podflow/message/update_youtube_bilibili_rss.py,sha256=cy6zVsn80oEpF83dpUNUp7BCzQF98uch3fbPkeab1v4,6107
71
72
  podflow/message/want_retry.py,sha256=3MtlAG4BZ2oznn0X5zYzAl2S0XzZkXhnN_LHVPcWZjA,699
72
73
  podflow/message/xml_item.py,sha256=jCB93aOoIDK6EaAFrZg5gd6mBMv7fP9uX-Z5eiTSyxg,3127
73
74
  podflow/message/xml_original_item.py,sha256=mlORI0p6aSLP6PWIAuvI4uVN0JbxUDZX5-U52ltn9E4,4048
@@ -84,8 +85,8 @@ podflow/templates/index.html,sha256=NYEjsIrf9EJJsZ-udAOdn1f92lxCRj6QFuDusA1IEwQ,
84
85
  podflow/upload/__init__.py,sha256=AtOSXDrE5EjUe3z-iBd1NTDaH8n_X9qA5WXdBLkONjA,45
85
86
  podflow/upload/add_upload.py,sha256=_2-V0z75Lwu-PUCfMD9HOSxZTB102yZlZW5hSdlHcsc,1432
86
87
  podflow/upload/build_hash.py,sha256=9opa3xLd7nJbGGX5xa3uuKPS6dxlbkAb87ZdEiUxmxI,473
87
- podflow/upload/get_upload_original.py,sha256=fG3tmAqznSSazpUVAeELls-Pl0liCoOniMyNeX8_lLI,4358
88
- podflow/upload/linked_client.py,sha256=tU8tkwn8qLIKX5GklHdd9oIQ4abvbcKg66Ujh0osxQY,3193
88
+ podflow/upload/get_upload_original.py,sha256=TEDnRutumm2FZNIesPJIlExHyKWpfB3ZAHb3sZt7V6A,4312
89
+ podflow/upload/linked_client.py,sha256=ilX0WjNDlgacfLo9L8VEpLnXphMl0o4P46axQ9yb9XY,3210
89
90
  podflow/upload/linked_server.py,sha256=h-qSx13fP8_Ny2IKW3wCNPwqRqW6-Iz1pqxD9ga9-dM,2308
90
91
  podflow/upload/login.py,sha256=85sqr12T-3NH-TD3kAMzy4yb1KOheV3Tr0eGee7NCJo,4007
91
92
  podflow/upload/time_key.py,sha256=6jZ3cxUjzj_umYDwH27R0YNZlLXxfhNp-CqV_K22wlo,967
@@ -93,10 +94,10 @@ podflow/upload/update_upload.py,sha256=_5tp1zPNsC9DdDnLzm-P8bLcOBuDov4eMRHp_861j
93
94
  podflow/upload/upload_server.py,sha256=BFq3QrWE7U97LbC4EQiDhQXbLapEc4R00eRDBH12E6A,565
94
95
  podflow/youtube/__init__.py,sha256=pgXod8gq0IijZxIkPSwgAOcb9JI5rd1mqMomoR7bcJ4,46
95
96
  podflow/youtube/build.py,sha256=3LYk_ICVXj9XkE9jZ8jEVI8596xxS_QZkcoIwcBE3Ys,12006
96
- podflow/youtube/get.py,sha256=Of7PRgUknhpyW70nvyVAUYVb5KyFViKiBTfH3Y6Mke8,16970
97
+ podflow/youtube/get.py,sha256=7OkpcY2-ulv0o4J7QvghIe6rvxjSwSzPWjouKQ_2bj8,17253
97
98
  podflow/youtube/login.py,sha256=KYl--ya6Z1u0uIcOp9l8i3DIIj9hsYUDH4dtJjI0MLM,1295
98
- podflow-20250413.3.dist-info/METADATA,sha256=3kvvUiN1sl5garY_BsBHEkT1sBkUjoz1UpmU-pyo2zM,14165
99
- podflow-20250413.3.dist-info/WHEEL,sha256=tZoeGjtWxWRfdplE7E3d45VPlLNQnvbKiYnx7gwAy8A,92
100
- podflow-20250413.3.dist-info/entry_points.txt,sha256=mn7hD_c_dmpKe3XU0KNekheBvD01LhlJ9htY-Df0j2A,131
101
- podflow-20250413.3.dist-info/top_level.txt,sha256=fUujhhz-RrMI8aGvi-3Ey5y7FQnpOOgoFw9OWM3yLCU,8
102
- podflow-20250413.3.dist-info/RECORD,,
99
+ podflow-20250415.1.dist-info/METADATA,sha256=2Dkmax-2CuculVofjvlVpNGXeMtnfk9lGIbXoxogY1g,14165
100
+ podflow-20250415.1.dist-info/WHEEL,sha256=tZoeGjtWxWRfdplE7E3d45VPlLNQnvbKiYnx7gwAy8A,92
101
+ podflow-20250415.1.dist-info/entry_points.txt,sha256=mn7hD_c_dmpKe3XU0KNekheBvD01LhlJ9htY-Df0j2A,131
102
+ podflow-20250415.1.dist-info/top_level.txt,sha256=fUujhhz-RrMI8aGvi-3Ey5y7FQnpOOgoFw9OWM3yLCU,8
103
+ podflow-20250415.1.dist-info/RECORD,,