podflow 20250326.1__tar.gz → 20250327__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 (110) hide show
  1. podflow-20250327/MANIFEST.in +1 -0
  2. {podflow-20250326.1 → podflow-20250327}/PKG-INFO +1 -1
  3. {podflow-20250326.1/Podflow → podflow-20250327/podflow}/httpfs/app_bottle.py +17 -21
  4. podflow-20250327/podflow/templates/index.html +170 -0
  5. {podflow-20250326.1 → podflow-20250327}/podflow.egg-info/PKG-INFO +1 -1
  6. podflow-20250327/podflow.egg-info/SOURCES.txt +105 -0
  7. podflow-20250327/podflow.egg-info/top_level.txt +1 -0
  8. {podflow-20250326.1 → podflow-20250327}/setup.py +2 -1
  9. podflow-20250326.1/Podflow/httpfs/html.py +0 -145
  10. podflow-20250326.1/podflow.egg-info/SOURCES.txt +0 -104
  11. podflow-20250326.1/podflow.egg-info/top_level.txt +0 -1
  12. {podflow-20250326.1 → podflow-20250327}/README.md +0 -0
  13. {podflow-20250326.1/Podflow → podflow-20250327/podflow}/__init__.py +0 -0
  14. {podflow-20250326.1/Podflow → podflow-20250327/podflow}/basic/__init__.py +0 -0
  15. {podflow-20250326.1/Podflow → podflow-20250327/podflow}/basic/file_save.py +0 -0
  16. {podflow-20250326.1/Podflow → podflow-20250327/podflow}/basic/folder_build.py +0 -0
  17. {podflow-20250326.1/Podflow → podflow-20250327/podflow}/basic/get_duration.py +0 -0
  18. {podflow-20250326.1/Podflow → podflow-20250327/podflow}/basic/get_file_list.py +0 -0
  19. {podflow-20250326.1/Podflow → podflow-20250327/podflow}/basic/get_html_dict.py +0 -0
  20. {podflow-20250326.1/Podflow → podflow-20250327/podflow}/basic/http_client.py +0 -0
  21. {podflow-20250326.1/Podflow → podflow-20250327/podflow}/basic/list_merge_tidy.py +0 -0
  22. {podflow-20250326.1/Podflow → podflow-20250327/podflow}/basic/qr_code.py +0 -0
  23. {podflow-20250326.1/Podflow → podflow-20250327/podflow}/basic/split_dict.py +0 -0
  24. {podflow-20250326.1/Podflow → podflow-20250327/podflow}/basic/time_format.py +0 -0
  25. {podflow-20250326.1/Podflow → podflow-20250327/podflow}/basic/time_print.py +0 -0
  26. {podflow-20250326.1/Podflow → podflow-20250327/podflow}/basic/time_stamp.py +0 -0
  27. {podflow-20250326.1/Podflow → podflow-20250327/podflow}/basic/vary_replace.py +0 -0
  28. {podflow-20250326.1/Podflow → podflow-20250327/podflow}/basic/write_log.py +0 -0
  29. {podflow-20250326.1/Podflow → podflow-20250327/podflow}/bilibili/__init__.py +0 -0
  30. {podflow-20250326.1/Podflow → podflow-20250327/podflow}/bilibili/build.py +0 -0
  31. {podflow-20250326.1/Podflow → podflow-20250327/podflow}/bilibili/get.py +0 -0
  32. {podflow-20250326.1/Podflow → podflow-20250327/podflow}/bilibili/login.py +0 -0
  33. {podflow-20250326.1/Podflow → podflow-20250327/podflow}/config/__init__.py +0 -0
  34. {podflow-20250326.1/Podflow → podflow-20250327/podflow}/config/build_original.py +0 -0
  35. {podflow-20250326.1/Podflow → podflow-20250327/podflow}/config/channge_icon.py +0 -0
  36. {podflow-20250326.1/Podflow → podflow-20250327/podflow}/config/correct_channelid.py +0 -0
  37. {podflow-20250326.1/Podflow → podflow-20250327/podflow}/config/correct_config.py +0 -0
  38. {podflow-20250326.1/Podflow → podflow-20250327/podflow}/config/get_channelid.py +0 -0
  39. {podflow-20250326.1/Podflow → podflow-20250327/podflow}/config/get_channelid_id.py +0 -0
  40. {podflow-20250326.1/Podflow → podflow-20250327/podflow}/config/get_config.py +0 -0
  41. {podflow-20250326.1/Podflow → podflow-20250327/podflow}/download/__init__.py +0 -0
  42. {podflow-20250326.1/Podflow → podflow-20250327/podflow}/download/convert_bytes.py +0 -0
  43. {podflow-20250326.1/Podflow → podflow-20250327/podflow}/download/delete_part.py +0 -0
  44. {podflow-20250326.1/Podflow → podflow-20250327/podflow}/download/dl_aideo_video.py +0 -0
  45. {podflow-20250326.1/Podflow → podflow-20250327/podflow}/download/show_progress.py +0 -0
  46. {podflow-20250326.1/Podflow → podflow-20250327/podflow}/download/wait_animation.py +0 -0
  47. {podflow-20250326.1/Podflow → podflow-20250327/podflow}/download/youtube_and_bilibili_download.py +0 -0
  48. {podflow-20250326.1/Podflow → podflow-20250327/podflow}/download_and_build.py +0 -0
  49. {podflow-20250326.1/Podflow → podflow-20250327/podflow}/ffmpeg_judge.py +0 -0
  50. {podflow-20250326.1/Podflow → podflow-20250327/podflow}/httpfs/__init__.py +0 -0
  51. {podflow-20250326.1/Podflow → podflow-20250327/podflow}/httpfs/browser.py +0 -0
  52. {podflow-20250326.1/Podflow → podflow-20250327/podflow}/httpfs/get_channelid.py +0 -0
  53. {podflow-20250326.1/Podflow → podflow-20250327/podflow}/httpfs/port_judge.py +0 -0
  54. {podflow-20250326.1/Podflow → podflow-20250327/podflow}/main.py +0 -0
  55. {podflow-20250326.1/Podflow → podflow-20250327/podflow}/main_podcast.py +0 -0
  56. {podflow-20250326.1/Podflow → podflow-20250327/podflow}/main_upload.py +0 -0
  57. {podflow-20250326.1/Podflow → podflow-20250327/podflow}/makeup/__init__.py +0 -0
  58. {podflow-20250326.1/Podflow → podflow-20250327/podflow}/makeup/del_makeup_format_fail.py +0 -0
  59. {podflow-20250326.1/Podflow → podflow-20250327/podflow}/makeup/make_up_file.py +0 -0
  60. {podflow-20250326.1/Podflow → podflow-20250327/podflow}/makeup/make_up_file_format_mod.py +0 -0
  61. {podflow-20250326.1/Podflow → podflow-20250327/podflow}/makeup/make_up_file_mod.py +0 -0
  62. {podflow-20250326.1/Podflow → podflow-20250327/podflow}/message/__init__.py +0 -0
  63. {podflow-20250326.1/Podflow → podflow-20250327/podflow}/message/backup_zip_save.py +0 -0
  64. {podflow-20250326.1/Podflow → podflow-20250327/podflow}/message/create_main_rss.py +0 -0
  65. {podflow-20250326.1/Podflow → podflow-20250327/podflow}/message/display_qrcode_and_url.py +0 -0
  66. {podflow-20250326.1/Podflow → podflow-20250327/podflow}/message/fail_message_initialize.py +0 -0
  67. {podflow-20250326.1/Podflow → podflow-20250327/podflow}/message/format_time.py +0 -0
  68. {podflow-20250326.1/Podflow → podflow-20250327/podflow}/message/get_media_name.py +0 -0
  69. {podflow-20250326.1/Podflow → podflow-20250327/podflow}/message/get_original_rss.py +0 -0
  70. {podflow-20250326.1/Podflow → podflow-20250327/podflow}/message/get_video_format.py +0 -0
  71. {podflow-20250326.1/Podflow → podflow-20250327/podflow}/message/get_video_format_multithread.py +0 -0
  72. {podflow-20250326.1/Podflow → podflow-20250327/podflow}/message/get_youtube_and_bilibili_video_format.py +0 -0
  73. {podflow-20250326.1/Podflow → podflow-20250327/podflow}/message/media_format.py +0 -0
  74. {podflow-20250326.1/Podflow → podflow-20250327/podflow}/message/original_rss_fail_print.py +0 -0
  75. {podflow-20250326.1/Podflow → podflow-20250327/podflow}/message/rss_create_hash.py +0 -0
  76. {podflow-20250326.1/Podflow → podflow-20250327/podflow}/message/save_rss.py +0 -0
  77. {podflow-20250326.1/Podflow → podflow-20250327/podflow}/message/title_correction.py +0 -0
  78. {podflow-20250326.1/Podflow → podflow-20250327/podflow}/message/update_information_display.py +0 -0
  79. {podflow-20250326.1/Podflow → podflow-20250327/podflow}/message/update_youtube_bilibili_rss.py +0 -0
  80. {podflow-20250326.1/Podflow → podflow-20250327/podflow}/message/want_retry.py +0 -0
  81. {podflow-20250326.1/Podflow → podflow-20250327/podflow}/message/xml_item.py +0 -0
  82. {podflow-20250326.1/Podflow → podflow-20250327/podflow}/message/xml_original_item.py +0 -0
  83. {podflow-20250326.1/Podflow → podflow-20250327/podflow}/message/xml_rss.py +0 -0
  84. {podflow-20250326.1/Podflow → podflow-20250327/podflow}/netscape/__init__.py +0 -0
  85. {podflow-20250326.1/Podflow → podflow-20250327/podflow}/netscape/bulid_netscape.py +0 -0
  86. {podflow-20250326.1/Podflow → podflow-20250327/podflow}/netscape/get_cookie_dict.py +0 -0
  87. {podflow-20250326.1/Podflow → podflow-20250327/podflow}/parse_arguments.py +0 -0
  88. {podflow-20250326.1/Podflow → podflow-20250327/podflow}/remove/__init__.py +0 -0
  89. {podflow-20250326.1/Podflow → podflow-20250327/podflow}/remove/remove_dir.py +0 -0
  90. {podflow-20250326.1/Podflow → podflow-20250327/podflow}/remove/remove_file.py +0 -0
  91. {podflow-20250326.1/Podflow → podflow-20250327/podflow}/repair/__init__.py +0 -0
  92. {podflow-20250326.1/Podflow → podflow-20250327/podflow}/repair/reverse_log.py +0 -0
  93. {podflow-20250326.1/Podflow → podflow-20250327/podflow}/upload/__init__.py +0 -0
  94. {podflow-20250326.1/Podflow → podflow-20250327/podflow}/upload/add_upload.py +0 -0
  95. {podflow-20250326.1/Podflow → podflow-20250327/podflow}/upload/build_hash.py +0 -0
  96. {podflow-20250326.1/Podflow → podflow-20250327/podflow}/upload/get_upload_original.py +0 -0
  97. {podflow-20250326.1/Podflow → podflow-20250327/podflow}/upload/linked_client.py +0 -0
  98. {podflow-20250326.1/Podflow → podflow-20250327/podflow}/upload/linked_server.py +0 -0
  99. {podflow-20250326.1/Podflow → podflow-20250327/podflow}/upload/login.py +0 -0
  100. {podflow-20250326.1/Podflow → podflow-20250327/podflow}/upload/time_key.py +0 -0
  101. {podflow-20250326.1/Podflow → podflow-20250327/podflow}/upload/update_upload.py +0 -0
  102. {podflow-20250326.1/Podflow → podflow-20250327/podflow}/upload/upload_server.py +0 -0
  103. {podflow-20250326.1/Podflow → podflow-20250327/podflow}/youtube/__init__.py +0 -0
  104. {podflow-20250326.1/Podflow → podflow-20250327/podflow}/youtube/build.py +0 -0
  105. {podflow-20250326.1/Podflow → podflow-20250327/podflow}/youtube/get.py +0 -0
  106. {podflow-20250326.1/Podflow → podflow-20250327/podflow}/youtube/login.py +0 -0
  107. {podflow-20250326.1 → podflow-20250327}/podflow.egg-info/dependency_links.txt +0 -0
  108. {podflow-20250326.1 → podflow-20250327}/podflow.egg-info/entry_points.txt +0 -0
  109. {podflow-20250326.1 → podflow-20250327}/podflow.egg-info/requires.txt +0 -0
  110. {podflow-20250326.1 → podflow-20250327}/setup.cfg +0 -0
@@ -0,0 +1 @@
1
+ graft podflow/templates
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: podflow
3
- Version: 20250326.1
3
+ Version: 20250327
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
@@ -6,10 +6,9 @@ import hashlib
6
6
  import pkg_resources
7
7
  from datetime import datetime
8
8
  import cherrypy
9
- from bottle import Bottle, abort, redirect, request, static_file, response, template
9
+ from bottle import Bottle, abort, redirect, request, static_file, response
10
10
  from podflow import gVar
11
11
  from podflow.upload.login import create
12
- from podflow.httpfs.html import html_index
13
12
  from podflow.basic.file_save import file_save
14
13
  from podflow.basic.write_log import write_log
15
14
  from podflow.upload.build_hash import build_hash
@@ -38,9 +37,8 @@ class bottle_app:
38
37
  self.app_bottle.route("/login", callback=self.login)
39
38
  self.app_bottle.route("/upload", method="POST", callback=self.upload)
40
39
  else:
41
- # 设置其他路由,回调函数为serve_static
42
- self.app_bottle.route("/try", method=["GET", "POST"], callback=self.try1)
43
- self.app_bottle.route("/index", method=["GET", "POST"], callback=self.index)
40
+ self.app_bottle.route("/index", callback=self.index)
41
+ self.app_bottle.route("/getid", method="POST", callback=self.getid)
44
42
  self.app_bottle.route("/<filename:path>", callback=self.serve_static)
45
43
 
46
44
  # 设置日志文件名及写入判断
@@ -250,19 +248,6 @@ class bottle_app:
250
248
  "message": "Unauthorized: Invalid Token",
251
249
  }
252
250
 
253
- # 获取Channel-ID请求
254
- def index(self):
255
- if request.method == "POST":
256
- user_input = request.forms.get("inputOutput") # 获取用户输入
257
- processed_input = get_channelid(user_input)
258
- self.print_out("channelid", 200)
259
- return template(
260
- html_index, processed_input=processed_input
261
- ) # 直接回显到输入框
262
- else:
263
- self.print_out("index", 200)
264
- return template(html_index, processed_input="") # 默认输入框为空
265
-
266
251
  # 路由处理登陆请求
267
252
  def login(self):
268
253
  # 获取上传的数据
@@ -391,12 +376,23 @@ class bottle_app:
391
376
  },
392
377
  }
393
378
 
394
- def try1(self):
379
+ def index(self):
395
380
  # 使用pkg_resources获取模板文件路径
396
- template_path = pkg_resources.resource_filename('Podflow', 'views/try.html')
397
- with open(template_path, 'r') as f:
381
+ template_path = pkg_resources.resource_filename('podflow', 'templates/index.html')
382
+ with open(template_path, 'r', encoding="UTF-8") as f:
398
383
  html_content = f.read()
399
384
  return html_content
400
385
 
386
+ def getid(self):
387
+ # 获取 JSON 数据,Bottle 会自动解析请求体中的 JSON 数据
388
+ getid_data = request.json
389
+ # 提取内容(若不存在则默认为空字符串)
390
+ content = getid_data.get("content", "") if getid_data else ""
391
+ response_message = get_channelid(content)
392
+ self.print_out("channelid", 200)
393
+ # 设置响应头为 application/json
394
+ response.content_type = 'application/json'
395
+ return {"response": response_message}
396
+
401
397
 
402
398
  bottle_app_instance = bottle_app()
@@ -0,0 +1,170 @@
1
+ <!DOCTYPE html>
2
+ <html lang="zh">
3
+ <head>
4
+ <meta charset="UTF-8">
5
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
6
+ <title>输入输出示例</title>
7
+ <style>
8
+ /* 基本样式 */
9
+ body {
10
+ font-family: Arial, sans-serif;
11
+ text-align: center;
12
+ padding: 20px;
13
+ background-color: #f8f9fa;
14
+ }
15
+
16
+ h2 {
17
+ color: #333;
18
+ }
19
+
20
+ /* 响应式输入框 */
21
+ textarea {
22
+ width: 90%;
23
+ max-width: 600px;
24
+ height: 250px; /* 增加默认高度 */
25
+ font-size: 16px;
26
+ padding: 10px;
27
+ border: 1px solid #ccc;
28
+ border-radius: 8px;
29
+ resize: vertical; /* 允许手动调整高度 */
30
+ overflow-y: auto;
31
+ }
32
+
33
+ /* 按钮样式 */
34
+ .button-container {
35
+ margin-top: 10px;
36
+ }
37
+
38
+ button {
39
+ background-color: #007bff;
40
+ color: white;
41
+ border: none;
42
+ padding: 12px 18px;
43
+ font-size: 16px;
44
+ border-radius: 6px;
45
+ cursor: pointer;
46
+ transition: 0.3s;
47
+ box-shadow: 2px 2px 8px rgba(0, 0, 0, 0.2);
48
+ margin: 5px;
49
+ }
50
+
51
+ button:hover {
52
+ background-color: #0056b3;
53
+ }
54
+
55
+ /* 手机端优化 */
56
+ @media (max-width: 600px) {
57
+ textarea {
58
+ font-size: 18px;
59
+ height: 180px;
60
+ }
61
+
62
+ button {
63
+ width: 90%;
64
+ font-size: 18px;
65
+ padding: 14px;
66
+ }
67
+ }
68
+
69
+ /* 提示信息 */
70
+ .hint {
71
+ font-size: 14px;
72
+ color: #666;
73
+ margin-top: 10px;
74
+ }
75
+ </style>
76
+ </head>
77
+ <body>
78
+ <h2>获取 Channel-ID</h2>
79
+ <!-- 将表单的 action 指定为 channelid -->
80
+ <form id="inputForm" method="post" action="getid">
81
+ <label for="inputOutput">请输入:</label><br>
82
+ <textarea name="inputOutput" id="inputOutput"></textarea><br>
83
+ <div class="button-container">
84
+ <button type="button" onclick="pasteFromClipboard()">📋 粘贴</button>
85
+ <button type="submit">✅ 提交</button>
86
+ <button type="button" onclick="copyText()">📄 拷贝</button>
87
+ <button type="button" onclick="clearInput()">🗑️ 清空</button>
88
+ </div>
89
+ <p class="hint">📌 如果粘贴按钮无效,请长按输入框手动粘贴。</p>
90
+ </form>
91
+ <script>
92
+ // 监听表单提交事件,阻止默认提交并使用 fetch 异步发送请求
93
+ document.getElementById('inputForm').addEventListener('submit', function(event) {
94
+ event.preventDefault();
95
+ let inputOutput = document.getElementById('inputOutput');
96
+ const content = inputOutput.value;
97
+
98
+ fetch('getid', {
99
+ method: 'POST',
100
+ headers: {
101
+ 'Content-Type': 'application/json'
102
+ },
103
+ body: JSON.stringify({ content: content })
104
+ })
105
+ .then(response => {
106
+ if (!response.ok) {
107
+ throw new Error('网络响应异常');
108
+ }
109
+ return response.json();
110
+ })
111
+ .then(data => {
112
+ // 假设服务端返回的 JSON 数据中包含 response 字段
113
+ inputOutput.value = data.response;
114
+ })
115
+ .catch(error => {
116
+ console.error('请求失败:', error);
117
+ alert('请求失败,请稍后重试!');
118
+ });
119
+ });
120
+
121
+ // 从剪贴板粘贴内容
122
+ function pasteFromClipboard() {
123
+ let inputOutput = document.getElementById('inputOutput');
124
+ if (navigator.clipboard && navigator.clipboard.readText) {
125
+ navigator.clipboard.readText().then(text => {
126
+ inputOutput.value = text;
127
+ inputOutput.focus();
128
+ }).catch(err => {
129
+ console.warn("剪贴板读取失败:", err);
130
+ alert("无法读取剪贴板,请手动粘贴!");
131
+ });
132
+ } else {
133
+ try {
134
+ inputOutput.focus();
135
+ document.execCommand('paste');
136
+ } catch (err) {
137
+ console.warn("execCommand 粘贴失败:", err);
138
+ alert("您的浏览器不支持自动粘贴,请手动操作!");
139
+ }
140
+ }
141
+ }
142
+
143
+ // 复制文本到剪贴板
144
+ function copyText() {
145
+ let inputOutput = document.getElementById('inputOutput');
146
+ if (navigator.clipboard && navigator.clipboard.writeText) {
147
+ navigator.clipboard.writeText(inputOutput.value).then(() => {
148
+ // 已成功复制到剪贴板
149
+ }).catch(err => {
150
+ console.warn("复制失败:", err);
151
+ alert("无法复制,请手动选择文本后按 Ctrl+C 复制!");
152
+ });
153
+ } else {
154
+ try {
155
+ inputOutput.select();
156
+ document.execCommand('copy');
157
+ } catch (err) {
158
+ console.warn("execCommand 复制失败:", err);
159
+ alert("您的浏览器不支持复制,请手动操作!");
160
+ }
161
+ }
162
+ }
163
+
164
+ // 清空输入框内容
165
+ function clearInput() {
166
+ document.getElementById('inputOutput').value = '';
167
+ }
168
+ </script>
169
+ </body>
170
+ </html>
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: podflow
3
- Version: 20250326.1
3
+ Version: 20250327
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
@@ -0,0 +1,105 @@
1
+ MANIFEST.in
2
+ README.md
3
+ setup.py
4
+ podflow/__init__.py
5
+ podflow/download_and_build.py
6
+ podflow/ffmpeg_judge.py
7
+ podflow/main.py
8
+ podflow/main_podcast.py
9
+ podflow/main_upload.py
10
+ podflow/parse_arguments.py
11
+ podflow.egg-info/PKG-INFO
12
+ podflow.egg-info/SOURCES.txt
13
+ podflow.egg-info/dependency_links.txt
14
+ podflow.egg-info/entry_points.txt
15
+ podflow.egg-info/requires.txt
16
+ podflow.egg-info/top_level.txt
17
+ podflow/basic/__init__.py
18
+ podflow/basic/file_save.py
19
+ podflow/basic/folder_build.py
20
+ podflow/basic/get_duration.py
21
+ podflow/basic/get_file_list.py
22
+ podflow/basic/get_html_dict.py
23
+ podflow/basic/http_client.py
24
+ podflow/basic/list_merge_tidy.py
25
+ podflow/basic/qr_code.py
26
+ podflow/basic/split_dict.py
27
+ podflow/basic/time_format.py
28
+ podflow/basic/time_print.py
29
+ podflow/basic/time_stamp.py
30
+ podflow/basic/vary_replace.py
31
+ podflow/basic/write_log.py
32
+ podflow/bilibili/__init__.py
33
+ podflow/bilibili/build.py
34
+ podflow/bilibili/get.py
35
+ podflow/bilibili/login.py
36
+ podflow/config/__init__.py
37
+ podflow/config/build_original.py
38
+ podflow/config/channge_icon.py
39
+ podflow/config/correct_channelid.py
40
+ podflow/config/correct_config.py
41
+ podflow/config/get_channelid.py
42
+ podflow/config/get_channelid_id.py
43
+ podflow/config/get_config.py
44
+ podflow/download/__init__.py
45
+ podflow/download/convert_bytes.py
46
+ podflow/download/delete_part.py
47
+ podflow/download/dl_aideo_video.py
48
+ podflow/download/show_progress.py
49
+ podflow/download/wait_animation.py
50
+ podflow/download/youtube_and_bilibili_download.py
51
+ podflow/httpfs/__init__.py
52
+ podflow/httpfs/app_bottle.py
53
+ podflow/httpfs/browser.py
54
+ podflow/httpfs/get_channelid.py
55
+ podflow/httpfs/port_judge.py
56
+ podflow/makeup/__init__.py
57
+ podflow/makeup/del_makeup_format_fail.py
58
+ podflow/makeup/make_up_file.py
59
+ podflow/makeup/make_up_file_format_mod.py
60
+ podflow/makeup/make_up_file_mod.py
61
+ podflow/message/__init__.py
62
+ podflow/message/backup_zip_save.py
63
+ podflow/message/create_main_rss.py
64
+ podflow/message/display_qrcode_and_url.py
65
+ podflow/message/fail_message_initialize.py
66
+ podflow/message/format_time.py
67
+ podflow/message/get_media_name.py
68
+ podflow/message/get_original_rss.py
69
+ podflow/message/get_video_format.py
70
+ podflow/message/get_video_format_multithread.py
71
+ podflow/message/get_youtube_and_bilibili_video_format.py
72
+ podflow/message/media_format.py
73
+ podflow/message/original_rss_fail_print.py
74
+ podflow/message/rss_create_hash.py
75
+ podflow/message/save_rss.py
76
+ podflow/message/title_correction.py
77
+ podflow/message/update_information_display.py
78
+ podflow/message/update_youtube_bilibili_rss.py
79
+ podflow/message/want_retry.py
80
+ podflow/message/xml_item.py
81
+ podflow/message/xml_original_item.py
82
+ podflow/message/xml_rss.py
83
+ podflow/netscape/__init__.py
84
+ podflow/netscape/bulid_netscape.py
85
+ podflow/netscape/get_cookie_dict.py
86
+ podflow/remove/__init__.py
87
+ podflow/remove/remove_dir.py
88
+ podflow/remove/remove_file.py
89
+ podflow/repair/__init__.py
90
+ podflow/repair/reverse_log.py
91
+ podflow/templates/index.html
92
+ podflow/upload/__init__.py
93
+ podflow/upload/add_upload.py
94
+ podflow/upload/build_hash.py
95
+ podflow/upload/get_upload_original.py
96
+ podflow/upload/linked_client.py
97
+ podflow/upload/linked_server.py
98
+ podflow/upload/login.py
99
+ podflow/upload/time_key.py
100
+ podflow/upload/update_upload.py
101
+ podflow/upload/upload_server.py
102
+ podflow/youtube/__init__.py
103
+ podflow/youtube/build.py
104
+ podflow/youtube/get.py
105
+ podflow/youtube/login.py
@@ -0,0 +1 @@
1
+ podflow
@@ -5,7 +5,7 @@ from setuptools import setup, find_packages
5
5
 
6
6
  setup(
7
7
  name="podflow",
8
- version="20250326.1",
8
+ version="20250327",
9
9
  author="gruel_zxz",
10
10
  author_email="zhuxizhouzxz@gmail.com",
11
11
  description="A podcast server that includes YouTube and BiliBili",
@@ -13,6 +13,7 @@ setup(
13
13
  long_description_content_type="text/markdown",
14
14
  url="https://github.com/gruel-zxz/podflow",
15
15
  packages=find_packages(),
16
+ include_package_data=True,
16
17
  entry_points={
17
18
  'console_scripts': [
18
19
  'Podflow=podflow.main:main',
@@ -1,145 +0,0 @@
1
- # podflow/httpfs/html.py
2
- # coding: utf-8
3
-
4
-
5
- html_index = '''<!DOCTYPE html>
6
- <html lang="zh">
7
- <head>
8
- <meta charset="UTF-8">
9
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
10
- <title>输入输出示例</title>
11
- <style>
12
- /* 基本样式 */
13
- body {
14
- font-family: Arial, sans-serif;
15
- text-align: center;
16
- padding: 20px;
17
- background-color: #f8f9fa;
18
- }
19
-
20
- h2 {
21
- color: #333;
22
- }
23
-
24
- /* 响应式输入框 */
25
- textarea {
26
- width: 90%;
27
- max-width: 600px;
28
- height: 250px; /* 增加默认高度 */
29
- font-size: 16px;
30
- padding: 10px;
31
- border: 1px solid #ccc;
32
- border-radius: 8px;
33
- resize: vertical; /* 允许手动调整高度 */
34
- overflow-y: auto; /* 始终显示垂直滚动条(如需自动出现滚动条,可用 `overflow-y: auto;`) */
35
- }
36
-
37
- /* 按钮样式 */
38
- .button-container {
39
- margin-top: 10px;
40
- }
41
-
42
- button {
43
- background-color: #007bff;
44
- color: white;
45
- border: none;
46
- padding: 12px 18px;
47
- font-size: 16px;
48
- border-radius: 6px;
49
- cursor: pointer;
50
- transition: 0.3s;
51
- box-shadow: 2px 2px 8px rgba(0, 0, 0, 0.2);
52
- margin: 5px;
53
- }
54
-
55
- button:hover {
56
- background-color: #0056b3;
57
- }
58
-
59
- /* 手机端优化 */
60
- @media (max-width: 600px) {
61
- textarea {
62
- font-size: 18px;
63
- height: 180px;
64
- }
65
-
66
- button {
67
- width: 90%;
68
- font-size: 18px;
69
- padding: 14px;
70
- }
71
- }
72
-
73
- /* 提示信息 */
74
- .hint {
75
- font-size: 14px;
76
- color: #666;
77
- margin-top: 10px;
78
- }
79
- </style>
80
- </head>
81
- <body>
82
- <h2>获取Channel-ID</h2>
83
- <form id="inputForm" method="post">
84
- <label for="inputOutput">请输入:</label><br>
85
- <textarea name="inputOutput" id="inputOutput">{{ processed_input }}</textarea><br>
86
- <div class="button-container">
87
- <button type="button" onclick="pasteFromClipboard()">📋 粘贴</button>
88
- <button type="submit">✅ 提交</button>
89
- <button type="button" onclick="copyText()">📄 拷贝</button>
90
- <button type="button" onclick="clearInput()">🗑️ 清空</button>
91
- </div>
92
- <p class="hint">📌 如果粘贴按钮无效,请长按输入框手动粘贴。</p>
93
- </form>
94
- <script>
95
- function pasteFromClipboard() {
96
- let inputOutput = document.getElementById('inputOutput');
97
-
98
- if (navigator.clipboard && navigator.clipboard.readText) {
99
- navigator.clipboard.readText().then(text => {
100
- inputOutput.value = text;
101
- inputOutput.focus(); // 聚焦输入框
102
- //alert("✅ 已成功粘贴!");
103
- }).catch(err => {
104
- console.warn("❌ 剪贴板读取失败:", err);
105
- alert("❌ 无法读取剪贴板,请手动粘贴!");
106
- });
107
- } else {
108
- // 兼容旧版浏览器
109
- try {
110
- inputOutput.focus();
111
- document.execCommand('paste'); // 仅部分浏览器支持
112
- //alert("✅ 尝试使用旧版粘贴方法!");
113
- } catch (err) {
114
- console.warn("❌ execCommand 粘贴失败:", err);
115
- alert("❌ 您的浏览器不支持自动粘贴,请手动操作!");
116
- }
117
- }
118
- }
119
- function copyText() {
120
- let inputOutput = document.getElementById('inputOutput');
121
- if (navigator.clipboard && navigator.clipboard.writeText) {
122
- navigator.clipboard.writeText(inputOutput.value).then(() => {
123
- //alert("✅ 已拷贝到剪贴板!");
124
- }).catch(err => {
125
- console.warn("拷贝失败:", err);
126
- alert("❌ 无法拷贝,请手动选择文本后按 Ctrl+C 复制!");
127
- });
128
- } else {
129
- // 兼容旧版浏览器
130
- try {
131
- inputOutput.select();
132
- document.execCommand('copy');
133
- //alert("✅ 已拷贝到剪贴板!");
134
- } catch (err) {
135
- console.warn("execCommand 复制失败:", err);
136
- alert("❌ 您的浏览器不支持拷贝,请手动操作!");
137
- }
138
- }
139
- }
140
- function clearInput() {
141
- document.getElementById('inputOutput').value = '';
142
- }
143
- </script>
144
- </body>
145
- </html>'''
@@ -1,104 +0,0 @@
1
- README.md
2
- setup.py
3
- Podflow/__init__.py
4
- Podflow/download_and_build.py
5
- Podflow/ffmpeg_judge.py
6
- Podflow/main.py
7
- Podflow/main_podcast.py
8
- Podflow/main_upload.py
9
- Podflow/parse_arguments.py
10
- Podflow/basic/__init__.py
11
- Podflow/basic/file_save.py
12
- Podflow/basic/folder_build.py
13
- Podflow/basic/get_duration.py
14
- Podflow/basic/get_file_list.py
15
- Podflow/basic/get_html_dict.py
16
- Podflow/basic/http_client.py
17
- Podflow/basic/list_merge_tidy.py
18
- Podflow/basic/qr_code.py
19
- Podflow/basic/split_dict.py
20
- Podflow/basic/time_format.py
21
- Podflow/basic/time_print.py
22
- Podflow/basic/time_stamp.py
23
- Podflow/basic/vary_replace.py
24
- Podflow/basic/write_log.py
25
- Podflow/bilibili/__init__.py
26
- Podflow/bilibili/build.py
27
- Podflow/bilibili/get.py
28
- Podflow/bilibili/login.py
29
- Podflow/config/__init__.py
30
- Podflow/config/build_original.py
31
- Podflow/config/channge_icon.py
32
- Podflow/config/correct_channelid.py
33
- Podflow/config/correct_config.py
34
- Podflow/config/get_channelid.py
35
- Podflow/config/get_channelid_id.py
36
- Podflow/config/get_config.py
37
- Podflow/download/__init__.py
38
- Podflow/download/convert_bytes.py
39
- Podflow/download/delete_part.py
40
- Podflow/download/dl_aideo_video.py
41
- Podflow/download/show_progress.py
42
- Podflow/download/wait_animation.py
43
- Podflow/download/youtube_and_bilibili_download.py
44
- Podflow/httpfs/__init__.py
45
- Podflow/httpfs/app_bottle.py
46
- Podflow/httpfs/browser.py
47
- Podflow/httpfs/get_channelid.py
48
- Podflow/httpfs/html.py
49
- Podflow/httpfs/port_judge.py
50
- Podflow/makeup/__init__.py
51
- Podflow/makeup/del_makeup_format_fail.py
52
- Podflow/makeup/make_up_file.py
53
- Podflow/makeup/make_up_file_format_mod.py
54
- Podflow/makeup/make_up_file_mod.py
55
- Podflow/message/__init__.py
56
- Podflow/message/backup_zip_save.py
57
- Podflow/message/create_main_rss.py
58
- Podflow/message/display_qrcode_and_url.py
59
- Podflow/message/fail_message_initialize.py
60
- Podflow/message/format_time.py
61
- Podflow/message/get_media_name.py
62
- Podflow/message/get_original_rss.py
63
- Podflow/message/get_video_format.py
64
- Podflow/message/get_video_format_multithread.py
65
- Podflow/message/get_youtube_and_bilibili_video_format.py
66
- Podflow/message/media_format.py
67
- Podflow/message/original_rss_fail_print.py
68
- Podflow/message/rss_create_hash.py
69
- Podflow/message/save_rss.py
70
- Podflow/message/title_correction.py
71
- Podflow/message/update_information_display.py
72
- Podflow/message/update_youtube_bilibili_rss.py
73
- Podflow/message/want_retry.py
74
- Podflow/message/xml_item.py
75
- Podflow/message/xml_original_item.py
76
- Podflow/message/xml_rss.py
77
- Podflow/netscape/__init__.py
78
- Podflow/netscape/bulid_netscape.py
79
- Podflow/netscape/get_cookie_dict.py
80
- Podflow/remove/__init__.py
81
- Podflow/remove/remove_dir.py
82
- Podflow/remove/remove_file.py
83
- Podflow/repair/__init__.py
84
- Podflow/repair/reverse_log.py
85
- Podflow/upload/__init__.py
86
- Podflow/upload/add_upload.py
87
- Podflow/upload/build_hash.py
88
- Podflow/upload/get_upload_original.py
89
- Podflow/upload/linked_client.py
90
- Podflow/upload/linked_server.py
91
- Podflow/upload/login.py
92
- Podflow/upload/time_key.py
93
- Podflow/upload/update_upload.py
94
- Podflow/upload/upload_server.py
95
- Podflow/youtube/__init__.py
96
- Podflow/youtube/build.py
97
- Podflow/youtube/get.py
98
- Podflow/youtube/login.py
99
- podflow.egg-info/PKG-INFO
100
- podflow.egg-info/SOURCES.txt
101
- podflow.egg-info/dependency_links.txt
102
- podflow.egg-info/entry_points.txt
103
- podflow.egg-info/requires.txt
104
- podflow.egg-info/top_level.txt
@@ -1 +0,0 @@
1
- Podflow
File without changes
File without changes