podflow 20250526__tar.gz → 20250604__tar.gz

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.
Files changed (118) hide show
  1. {podflow-20250526 → podflow-20250604}/PKG-INFO +1 -1
  2. {podflow-20250526 → podflow-20250604}/podflow/httpfs/app_bottle.py +8 -8
  3. {podflow-20250526 → podflow-20250604}/podflow/message/fail_message_initialize.py +6 -1
  4. {podflow-20250526 → podflow-20250604}/podflow/message/get_youtube_and_bilibili_video_format.py +6 -1
  5. {podflow-20250526 → podflow-20250604}/podflow/upload/upload_files.py +37 -3
  6. {podflow-20250526 → podflow-20250604}/podflow/youtube/build.py +3 -3
  7. {podflow-20250526 → podflow-20250604}/podflow.egg-info/PKG-INFO +1 -1
  8. {podflow-20250526 → podflow-20250604}/podflow.egg-info/SOURCES.txt +1 -0
  9. podflow-20250604/pyproject.toml +6 -0
  10. {podflow-20250526 → podflow-20250604}/setup.py +1 -1
  11. {podflow-20250526 → podflow-20250604}/MANIFEST.in +0 -0
  12. {podflow-20250526 → podflow-20250604}/README.md +0 -0
  13. {podflow-20250526 → podflow-20250604}/podflow/__init__.py +0 -0
  14. {podflow-20250526 → podflow-20250604}/podflow/basic/__init__.py +0 -0
  15. {podflow-20250526 → podflow-20250604}/podflow/basic/file_save.py +0 -0
  16. {podflow-20250526 → podflow-20250604}/podflow/basic/folder_build.py +0 -0
  17. {podflow-20250526 → podflow-20250604}/podflow/basic/get_duration.py +0 -0
  18. {podflow-20250526 → podflow-20250604}/podflow/basic/get_file_list.py +0 -0
  19. {podflow-20250526 → podflow-20250604}/podflow/basic/get_html_dict.py +0 -0
  20. {podflow-20250526 → podflow-20250604}/podflow/basic/http_client.py +0 -0
  21. {podflow-20250526 → podflow-20250604}/podflow/basic/list_merge_tidy.py +0 -0
  22. {podflow-20250526 → podflow-20250604}/podflow/basic/qr_code.py +0 -0
  23. {podflow-20250526 → podflow-20250604}/podflow/basic/split_dict.py +0 -0
  24. {podflow-20250526 → podflow-20250604}/podflow/basic/time_format.py +0 -0
  25. {podflow-20250526 → podflow-20250604}/podflow/basic/time_print.py +0 -0
  26. {podflow-20250526 → podflow-20250604}/podflow/basic/time_stamp.py +0 -0
  27. {podflow-20250526 → podflow-20250604}/podflow/basic/vary_replace.py +0 -0
  28. {podflow-20250526 → podflow-20250604}/podflow/basic/write_log.py +0 -0
  29. {podflow-20250526 → podflow-20250604}/podflow/bilibili/__init__.py +0 -0
  30. {podflow-20250526 → podflow-20250604}/podflow/bilibili/build.py +0 -0
  31. {podflow-20250526 → podflow-20250604}/podflow/bilibili/get.py +0 -0
  32. {podflow-20250526 → podflow-20250604}/podflow/bilibili/login.py +0 -0
  33. {podflow-20250526 → podflow-20250604}/podflow/config/__init__.py +0 -0
  34. {podflow-20250526 → podflow-20250604}/podflow/config/build_original.py +0 -0
  35. {podflow-20250526 → podflow-20250604}/podflow/config/channge_icon.py +0 -0
  36. {podflow-20250526 → podflow-20250604}/podflow/config/correct_channelid.py +0 -0
  37. {podflow-20250526 → podflow-20250604}/podflow/config/correct_config.py +0 -0
  38. {podflow-20250526 → podflow-20250604}/podflow/config/get_channelid.py +0 -0
  39. {podflow-20250526 → podflow-20250604}/podflow/config/get_channelid_id.py +0 -0
  40. {podflow-20250526 → podflow-20250604}/podflow/config/get_config.py +0 -0
  41. {podflow-20250526 → podflow-20250604}/podflow/download/__init__.py +0 -0
  42. {podflow-20250526 → podflow-20250604}/podflow/download/convert_bytes.py +0 -0
  43. {podflow-20250526 → podflow-20250604}/podflow/download/delete_part.py +0 -0
  44. {podflow-20250526 → podflow-20250604}/podflow/download/dl_aideo_video.py +0 -0
  45. {podflow-20250526 → podflow-20250604}/podflow/download/show_progress.py +0 -0
  46. {podflow-20250526 → podflow-20250604}/podflow/download/wait_animation.py +0 -0
  47. {podflow-20250526 → podflow-20250604}/podflow/download/youtube_and_bilibili_download.py +0 -0
  48. {podflow-20250526 → podflow-20250604}/podflow/download_and_build.py +0 -0
  49. {podflow-20250526 → podflow-20250604}/podflow/ffmpeg_judge.py +0 -0
  50. {podflow-20250526 → podflow-20250604}/podflow/httpfs/__init__.py +0 -0
  51. {podflow-20250526 → podflow-20250604}/podflow/httpfs/browser.py +0 -0
  52. {podflow-20250526 → podflow-20250604}/podflow/httpfs/download_bar.py +0 -0
  53. {podflow-20250526 → podflow-20250604}/podflow/httpfs/get_channelid.py +0 -0
  54. {podflow-20250526 → podflow-20250604}/podflow/httpfs/port_judge.py +0 -0
  55. {podflow-20250526 → podflow-20250604}/podflow/httpfs/progress_bar.py +0 -0
  56. {podflow-20250526 → podflow-20250604}/podflow/httpfs/to_html.py +0 -0
  57. {podflow-20250526 → podflow-20250604}/podflow/main.py +0 -0
  58. {podflow-20250526 → podflow-20250604}/podflow/main_podcast.py +0 -0
  59. {podflow-20250526 → podflow-20250604}/podflow/main_upload.py +0 -0
  60. {podflow-20250526 → podflow-20250604}/podflow/makeup/__init__.py +0 -0
  61. {podflow-20250526 → podflow-20250604}/podflow/makeup/del_makeup_format_fail.py +0 -0
  62. {podflow-20250526 → podflow-20250604}/podflow/makeup/make_up_file.py +0 -0
  63. {podflow-20250526 → podflow-20250604}/podflow/makeup/make_up_file_format_mod.py +0 -0
  64. {podflow-20250526 → podflow-20250604}/podflow/makeup/make_up_file_mod.py +0 -0
  65. {podflow-20250526 → podflow-20250604}/podflow/message/__init__.py +0 -0
  66. {podflow-20250526 → podflow-20250604}/podflow/message/backup_zip_save.py +0 -0
  67. {podflow-20250526 → podflow-20250604}/podflow/message/create_main_rss.py +0 -0
  68. {podflow-20250526 → podflow-20250604}/podflow/message/display_qrcode_and_url.py +0 -0
  69. {podflow-20250526 → podflow-20250604}/podflow/message/format_time.py +0 -0
  70. {podflow-20250526 → podflow-20250604}/podflow/message/get_media_name.py +0 -0
  71. {podflow-20250526 → podflow-20250604}/podflow/message/get_original_rss.py +0 -0
  72. {podflow-20250526 → podflow-20250604}/podflow/message/get_video_format.py +0 -0
  73. {podflow-20250526 → podflow-20250604}/podflow/message/get_video_format_multithread.py +0 -0
  74. {podflow-20250526 → podflow-20250604}/podflow/message/media_format.py +0 -0
  75. {podflow-20250526 → podflow-20250604}/podflow/message/optimize_download.py +0 -0
  76. {podflow-20250526 → podflow-20250604}/podflow/message/original_rss_fail_print.py +0 -0
  77. {podflow-20250526 → podflow-20250604}/podflow/message/rss_create_hash.py +0 -0
  78. {podflow-20250526 → podflow-20250604}/podflow/message/save_rss.py +0 -0
  79. {podflow-20250526 → podflow-20250604}/podflow/message/title_correction.py +0 -0
  80. {podflow-20250526 → podflow-20250604}/podflow/message/update_information_display.py +0 -0
  81. {podflow-20250526 → podflow-20250604}/podflow/message/update_youtube_bilibili_rss.py +0 -0
  82. {podflow-20250526 → podflow-20250604}/podflow/message/want_retry.py +0 -0
  83. {podflow-20250526 → podflow-20250604}/podflow/message/xml_item.py +0 -0
  84. {podflow-20250526 → podflow-20250604}/podflow/message/xml_original_item.py +0 -0
  85. {podflow-20250526 → podflow-20250604}/podflow/message/xml_rss.py +0 -0
  86. {podflow-20250526 → podflow-20250604}/podflow/netscape/__init__.py +0 -0
  87. {podflow-20250526 → podflow-20250604}/podflow/netscape/bulid_netscape.py +0 -0
  88. {podflow-20250526 → podflow-20250604}/podflow/netscape/get_cookie_dict.py +0 -0
  89. {podflow-20250526 → podflow-20250604}/podflow/parse_arguments.py +0 -0
  90. {podflow-20250526 → podflow-20250604}/podflow/remove/__init__.py +0 -0
  91. {podflow-20250526 → podflow-20250604}/podflow/remove/remove_dir.py +0 -0
  92. {podflow-20250526 → podflow-20250604}/podflow/remove/remove_file.py +0 -0
  93. {podflow-20250526 → podflow-20250604}/podflow/repair/__init__.py +0 -0
  94. {podflow-20250526 → podflow-20250604}/podflow/repair/reverse_log.py +0 -0
  95. {podflow-20250526 → podflow-20250604}/podflow/templates/css/config.css +0 -0
  96. {podflow-20250526 → podflow-20250604}/podflow/templates/css/index.css +0 -0
  97. {podflow-20250526 → podflow-20250604}/podflow/templates/index.html +0 -0
  98. {podflow-20250526 → podflow-20250604}/podflow/templates/js/config.js +0 -0
  99. {podflow-20250526 → podflow-20250604}/podflow/templates/js/index.js +0 -0
  100. {podflow-20250526 → podflow-20250604}/podflow/templates/js/qrcode.min.js +0 -0
  101. {podflow-20250526 → podflow-20250604}/podflow/upload/__init__.py +0 -0
  102. {podflow-20250526 → podflow-20250604}/podflow/upload/add_upload.py +0 -0
  103. {podflow-20250526 → podflow-20250604}/podflow/upload/build_hash.py +0 -0
  104. {podflow-20250526 → podflow-20250604}/podflow/upload/get_upload_original.py +0 -0
  105. {podflow-20250526 → podflow-20250604}/podflow/upload/linked_client.py +0 -0
  106. {podflow-20250526 → podflow-20250604}/podflow/upload/linked_server.py +0 -0
  107. {podflow-20250526 → podflow-20250604}/podflow/upload/login.py +0 -0
  108. {podflow-20250526 → podflow-20250604}/podflow/upload/time_key.py +0 -0
  109. {podflow-20250526 → podflow-20250604}/podflow/upload/update_upload.py +0 -0
  110. {podflow-20250526 → podflow-20250604}/podflow/upload/upload_server.py +0 -0
  111. {podflow-20250526 → podflow-20250604}/podflow/youtube/__init__.py +0 -0
  112. {podflow-20250526 → podflow-20250604}/podflow/youtube/get.py +0 -0
  113. {podflow-20250526 → podflow-20250604}/podflow/youtube/login.py +0 -0
  114. {podflow-20250526 → podflow-20250604}/podflow.egg-info/dependency_links.txt +0 -0
  115. {podflow-20250526 → podflow-20250604}/podflow.egg-info/entry_points.txt +0 -0
  116. {podflow-20250526 → podflow-20250604}/podflow.egg-info/requires.txt +0 -0
  117. {podflow-20250526 → podflow-20250604}/podflow.egg-info/top_level.txt +0 -0
  118. {podflow-20250526 → podflow-20250604}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: podflow
3
- Version: 20250526
3
+ Version: 20250604
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
@@ -328,14 +328,14 @@ class bottle_app:
328
328
  self.print_out("login", 401)
329
329
  return {
330
330
  "code": -2,
331
- "message": "Username Error",
331
+ "message": "Username Error", # 用户名错误
332
332
  }
333
333
  # 验证密码是否正确
334
334
  if upload_data[username] != password:
335
335
  self.print_out("login", 401)
336
336
  return {
337
337
  "code": -3,
338
- "message": "Password Error",
338
+ "message": "Password Error", # 密码错误
339
339
  }
340
340
  # 从请求中获取上传的文件对象
341
341
  upload_file = request.files.get("file")
@@ -345,7 +345,7 @@ class bottle_app:
345
345
  self.print_out("upload", 404)
346
346
  return {
347
347
  "code": -4,
348
- "message": "No File Provided",
348
+ "message": "No File Provided", # 没有上传文件
349
349
  }
350
350
  # 判断文件是否完整
351
351
  uploadfile = upload_file.file
@@ -355,7 +355,7 @@ class bottle_app:
355
355
  self.print_out("upload", 401)
356
356
  return {
357
357
  "code": -5,
358
- "message": "Incomplete File",
358
+ "message": "Incomplete File", # 文件不完整
359
359
  "hash": uploadfile_hash,
360
360
  }
361
361
  if not channelid:
@@ -363,7 +363,7 @@ class bottle_app:
363
363
  self.print_out("upload", 404)
364
364
  return {
365
365
  "code": -6,
366
- "message": "ChannelId Does Not Exist",
366
+ "message": "ChannelId Does Not Exist", # 频道ID不存在
367
367
  }
368
368
  # 获取上传文件的原始文件名
369
369
  filename = upload_file.filename
@@ -373,7 +373,7 @@ class bottle_app:
373
373
  self.print_out("upload", 404)
374
374
  return {
375
375
  "code": -6,
376
- "message": "File Format Error",
376
+ "message": "File Format Error", # 文件格式错误
377
377
  }
378
378
  address = f"channel_audiovisual/{channelid}"
379
379
  if os.path.exists(address):
@@ -391,7 +391,7 @@ class bottle_app:
391
391
  self.print_out("upload", 200)
392
392
  return {
393
393
  "code": 1,
394
- "message": "The Same File Exists",
394
+ "message": "The Same File Exists", # 相同文件已存在
395
395
  "data": {
396
396
  "filename": filename,
397
397
  },
@@ -405,7 +405,7 @@ class bottle_app:
405
405
  self.print_out("upload", 200)
406
406
  return {
407
407
  "code": 0,
408
- "message": "Upload Success",
408
+ "message": "Upload Success", # 上传成功
409
409
  "data": {
410
410
  "filename": filename,
411
411
  },
@@ -148,7 +148,12 @@ error_reason = [
148
148
  r"Offline.",
149
149
  "\033[31m直播已停止\033[0m",
150
150
  "text",
151
- ]
151
+ ],
152
+ [
153
+ r"Got error: \<urllib3\.connection\.HTTPSConnection object at .{18}\>: Failed to resolve \'rr5---sn-a5msenek\.googlevideo\.com\' \(\[Errno 11001\] getaddrinfo failed\)",
154
+ "\033[31m无法解析\033[0m",
155
+ "regexp",
156
+ ],
152
157
  ]
153
158
 
154
159
 
@@ -3,6 +3,7 @@
3
3
 
4
4
  from podflow import gVar
5
5
  from podflow.basic.write_log import write_log
6
+ from podflow.bilibili.get import get_bilibili_cid
6
7
  from podflow.httpfs.progress_bar import progress_bar
7
8
  from podflow.message.media_format import media_format
8
9
 
@@ -63,7 +64,11 @@ def get_youtube_and_bilibili_video_format(
63
64
  id_update_format = f"\033[31m{fail_info}\033[0m(需要Cookies)"
64
65
  break
65
66
  else:
66
- if gVar.video_id_update_format[id_num]["power"] is True and (
67
+ if gVar.channelid_bilibili[gVar.video_id_update_format[id_num]["name"]]["AllPartGet"]:
68
+ power = gVar.video_id_update_format[id_num]["power"]
69
+ else:
70
+ power = get_bilibili_cid(id_num, gVar.video_id_update_format[id_num]["name"])[2]
71
+ if power is True and (
67
72
  "试看" in id_update_format or id_update_format == "无法获取音频ID"
68
73
  ):
69
74
  id_update_format = "\033[31m充电专属\033[0m"
@@ -2,10 +2,15 @@
2
2
  # coding: utf-8
3
3
 
4
4
  import time
5
+ from datetime import datetime
6
+ from podflow import gVar
7
+ from podflow.httpfs.to_html import ansi_to_html
5
8
  from podflow.upload.build_hash import build_hash
6
9
  from podflow.basic.http_client import http_client
10
+ from podflow.httpfs.app_bottle import bottle_app_instance
7
11
 
8
12
 
13
+ # 上传文件模块
9
14
  def upload_file(username, password, channelid, filename):
10
15
  filename = f"channel_audiovisual/{channelid}/{filename}"
11
16
  with open(filename, "rb") as file:
@@ -25,12 +30,13 @@ def upload_file(username, password, channelid, filename):
25
30
  mode="post",
26
31
  file=file,
27
32
  ):
28
- return response.json()
33
+ return response.json(), hashs
29
34
  else:
30
- return None
31
- return None
35
+ return None, hashs
36
+ return None, hashs
32
37
 
33
38
 
39
+ # 查找位置模块
34
40
  def find_media_index(upload_original, target_media_id):
35
41
  for index, item in enumerate(upload_original):
36
42
  if item.get("media_id") == target_media_id:
@@ -38,6 +44,7 @@ def find_media_index(upload_original, target_media_id):
38
44
  return -1
39
45
 
40
46
 
47
+ # 过滤和排序媒体模块
41
48
  def filter_and_sort_media(media_list, day):
42
49
  current_time = int(time.time())
43
50
  one_month_ago = current_time - day * 24 * 60 * 60 # 30天前的时间戳
@@ -56,3 +63,30 @@ def filter_and_sort_media(media_list, day):
56
63
  for item in filtered_sorted
57
64
  ]
58
65
  return result
66
+
67
+
68
+ def record_upload(username, password, channelid, filename):
69
+ response, hashs = upload_file(username, password, channelid, filename)
70
+ channelname = (
71
+ gVar.channelid_youtube_ids_original | gVar.channelid_bilibili_ids_original
72
+ ).get(channelid, "")
73
+ now_time = datetime.now().strftime("%H:%M:%S")
74
+ if response:
75
+ code = response.get("code")
76
+ data = response.get("data", {})
77
+ message = response.get("message", "")
78
+ if code in [0, 1]:
79
+ index = find_media_index(gVar.upload_original, filename)
80
+ if index != -1:
81
+ filename = data.get("filename")
82
+ if filename:
83
+ gVar.upload_original[index]["upload"] = True
84
+ gVar.upload_original[index]["hash"] = hashs
85
+ gVar.upload_original[index]["filename"] = hashs
86
+
87
+ bottle_text = f"{now_time}|{channelname}/{filename} Upload: {message}"
88
+ else:
89
+ bottle_text = f"{now_time}|{channelname}/{filename} Upload Failed"
90
+ bottle_app_instance.bottle_print.append(bottle_text)
91
+ gVar.index_message["http"].append(ansi_to_html(bottle_text))
92
+ bottle_app_instance.cherry_print(False)
@@ -47,8 +47,8 @@ def get_youtube_introduction():
47
47
  ).group()
48
48
  else:
49
49
  xml_tree = {"introduction": False}
50
- with youtube_xml_get_lock:
51
- gVar.youtube_xml_get_tree[output_dir] = xml_tree
50
+ with youtube_xml_get_lock:
51
+ gVar.youtube_xml_get_tree[output_dir] = xml_tree
52
52
  # 创建线程列表
53
53
  youtube_xml_get_threads = []
54
54
  for output_dir in gVar.channelid_youtube_ids_update:
@@ -187,7 +187,6 @@ def get_xml_item(guid, item, channelid_title, title_change, output_dir):
187
187
  # 生成YouTube对应channel的需更新的items模块
188
188
  def youtube_xml_items(output_dir, ratio_part):
189
189
  items_list = [f"<!-- {output_dir} -->"]
190
- entry_num = 0
191
190
  original_judgment = True
192
191
  channelid_youtube_value = gVar.channelid_youtube[
193
192
  gVar.channelid_youtube_ids[output_dir]
@@ -227,6 +226,7 @@ def youtube_xml_items(output_dir, ratio_part):
227
226
  else:
228
227
  file_xml = output_dir_value["content"]
229
228
  entrys = re.findall(r"<entry>.+?</entry>", file_xml, re.DOTALL)
229
+ entry_num = 0
230
230
  for entry in entrys:
231
231
  if (
232
232
  re.search(r"(?<=<yt:videoId>).+(?=</yt:videoId>)", entry).group()
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: podflow
3
- Version: 20250526
3
+ Version: 20250604
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,5 +1,6 @@
1
1
  MANIFEST.in
2
2
  README.md
3
+ pyproject.toml
3
4
  setup.py
4
5
  podflow/__init__.py
5
6
  podflow/download_and_build.py
@@ -0,0 +1,6 @@
1
+ # pyproject.toml
2
+ # coding: utf-8
3
+
4
+ [build-system]
5
+ requires = ["setuptools>=61.0", "wheel"]
6
+ build-backend = "setuptools.build_meta"
@@ -5,7 +5,7 @@ from setuptools import setup, find_packages
5
5
 
6
6
  setup(
7
7
  name="podflow",
8
- version="20250526",
8
+ version="20250604",
9
9
  author="gruel_zxz",
10
10
  author_email="zhuxizhouzxz@gmail.com",
11
11
  description="A podcast server that includes YouTube and BiliBili",
File without changes
File without changes
File without changes
File without changes