podflow 20250401.1__tar.gz → 20250401.2__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 (108) hide show
  1. {podflow-20250401.1 → podflow-20250401.2}/PKG-INFO +1 -1
  2. {podflow-20250401.1 → podflow-20250401.2}/podflow/templates/index.html +52 -29
  3. {podflow-20250401.1 → podflow-20250401.2}/podflow.egg-info/PKG-INFO +1 -1
  4. {podflow-20250401.1 → podflow-20250401.2}/setup.py +1 -1
  5. {podflow-20250401.1 → podflow-20250401.2}/MANIFEST.in +0 -0
  6. {podflow-20250401.1 → podflow-20250401.2}/README.md +0 -0
  7. {podflow-20250401.1 → podflow-20250401.2}/podflow/__init__.py +0 -0
  8. {podflow-20250401.1 → podflow-20250401.2}/podflow/basic/__init__.py +0 -0
  9. {podflow-20250401.1 → podflow-20250401.2}/podflow/basic/file_save.py +0 -0
  10. {podflow-20250401.1 → podflow-20250401.2}/podflow/basic/folder_build.py +0 -0
  11. {podflow-20250401.1 → podflow-20250401.2}/podflow/basic/get_duration.py +0 -0
  12. {podflow-20250401.1 → podflow-20250401.2}/podflow/basic/get_file_list.py +0 -0
  13. {podflow-20250401.1 → podflow-20250401.2}/podflow/basic/get_html_dict.py +0 -0
  14. {podflow-20250401.1 → podflow-20250401.2}/podflow/basic/http_client.py +0 -0
  15. {podflow-20250401.1 → podflow-20250401.2}/podflow/basic/list_merge_tidy.py +0 -0
  16. {podflow-20250401.1 → podflow-20250401.2}/podflow/basic/qr_code.py +0 -0
  17. {podflow-20250401.1 → podflow-20250401.2}/podflow/basic/split_dict.py +0 -0
  18. {podflow-20250401.1 → podflow-20250401.2}/podflow/basic/time_format.py +0 -0
  19. {podflow-20250401.1 → podflow-20250401.2}/podflow/basic/time_print.py +0 -0
  20. {podflow-20250401.1 → podflow-20250401.2}/podflow/basic/time_stamp.py +0 -0
  21. {podflow-20250401.1 → podflow-20250401.2}/podflow/basic/vary_replace.py +0 -0
  22. {podflow-20250401.1 → podflow-20250401.2}/podflow/basic/write_log.py +0 -0
  23. {podflow-20250401.1 → podflow-20250401.2}/podflow/bilibili/__init__.py +0 -0
  24. {podflow-20250401.1 → podflow-20250401.2}/podflow/bilibili/build.py +0 -0
  25. {podflow-20250401.1 → podflow-20250401.2}/podflow/bilibili/get.py +0 -0
  26. {podflow-20250401.1 → podflow-20250401.2}/podflow/bilibili/login.py +0 -0
  27. {podflow-20250401.1 → podflow-20250401.2}/podflow/config/__init__.py +0 -0
  28. {podflow-20250401.1 → podflow-20250401.2}/podflow/config/build_original.py +0 -0
  29. {podflow-20250401.1 → podflow-20250401.2}/podflow/config/channge_icon.py +0 -0
  30. {podflow-20250401.1 → podflow-20250401.2}/podflow/config/correct_channelid.py +0 -0
  31. {podflow-20250401.1 → podflow-20250401.2}/podflow/config/correct_config.py +0 -0
  32. {podflow-20250401.1 → podflow-20250401.2}/podflow/config/get_channelid.py +0 -0
  33. {podflow-20250401.1 → podflow-20250401.2}/podflow/config/get_channelid_id.py +0 -0
  34. {podflow-20250401.1 → podflow-20250401.2}/podflow/config/get_config.py +0 -0
  35. {podflow-20250401.1 → podflow-20250401.2}/podflow/download/__init__.py +0 -0
  36. {podflow-20250401.1 → podflow-20250401.2}/podflow/download/convert_bytes.py +0 -0
  37. {podflow-20250401.1 → podflow-20250401.2}/podflow/download/delete_part.py +0 -0
  38. {podflow-20250401.1 → podflow-20250401.2}/podflow/download/dl_aideo_video.py +0 -0
  39. {podflow-20250401.1 → podflow-20250401.2}/podflow/download/show_progress.py +0 -0
  40. {podflow-20250401.1 → podflow-20250401.2}/podflow/download/wait_animation.py +0 -0
  41. {podflow-20250401.1 → podflow-20250401.2}/podflow/download/youtube_and_bilibili_download.py +0 -0
  42. {podflow-20250401.1 → podflow-20250401.2}/podflow/download_and_build.py +0 -0
  43. {podflow-20250401.1 → podflow-20250401.2}/podflow/ffmpeg_judge.py +0 -0
  44. {podflow-20250401.1 → podflow-20250401.2}/podflow/httpfs/__init__.py +0 -0
  45. {podflow-20250401.1 → podflow-20250401.2}/podflow/httpfs/app_bottle.py +0 -0
  46. {podflow-20250401.1 → podflow-20250401.2}/podflow/httpfs/browser.py +0 -0
  47. {podflow-20250401.1 → podflow-20250401.2}/podflow/httpfs/get_channelid.py +0 -0
  48. {podflow-20250401.1 → podflow-20250401.2}/podflow/httpfs/port_judge.py +0 -0
  49. {podflow-20250401.1 → podflow-20250401.2}/podflow/httpfs/to_html.py +0 -0
  50. {podflow-20250401.1 → podflow-20250401.2}/podflow/main.py +0 -0
  51. {podflow-20250401.1 → podflow-20250401.2}/podflow/main_podcast.py +0 -0
  52. {podflow-20250401.1 → podflow-20250401.2}/podflow/main_upload.py +0 -0
  53. {podflow-20250401.1 → podflow-20250401.2}/podflow/makeup/__init__.py +0 -0
  54. {podflow-20250401.1 → podflow-20250401.2}/podflow/makeup/del_makeup_format_fail.py +0 -0
  55. {podflow-20250401.1 → podflow-20250401.2}/podflow/makeup/make_up_file.py +0 -0
  56. {podflow-20250401.1 → podflow-20250401.2}/podflow/makeup/make_up_file_format_mod.py +0 -0
  57. {podflow-20250401.1 → podflow-20250401.2}/podflow/makeup/make_up_file_mod.py +0 -0
  58. {podflow-20250401.1 → podflow-20250401.2}/podflow/message/__init__.py +0 -0
  59. {podflow-20250401.1 → podflow-20250401.2}/podflow/message/backup_zip_save.py +0 -0
  60. {podflow-20250401.1 → podflow-20250401.2}/podflow/message/create_main_rss.py +0 -0
  61. {podflow-20250401.1 → podflow-20250401.2}/podflow/message/display_qrcode_and_url.py +0 -0
  62. {podflow-20250401.1 → podflow-20250401.2}/podflow/message/fail_message_initialize.py +0 -0
  63. {podflow-20250401.1 → podflow-20250401.2}/podflow/message/format_time.py +0 -0
  64. {podflow-20250401.1 → podflow-20250401.2}/podflow/message/get_media_name.py +0 -0
  65. {podflow-20250401.1 → podflow-20250401.2}/podflow/message/get_original_rss.py +0 -0
  66. {podflow-20250401.1 → podflow-20250401.2}/podflow/message/get_video_format.py +0 -0
  67. {podflow-20250401.1 → podflow-20250401.2}/podflow/message/get_video_format_multithread.py +0 -0
  68. {podflow-20250401.1 → podflow-20250401.2}/podflow/message/get_youtube_and_bilibili_video_format.py +0 -0
  69. {podflow-20250401.1 → podflow-20250401.2}/podflow/message/media_format.py +0 -0
  70. {podflow-20250401.1 → podflow-20250401.2}/podflow/message/original_rss_fail_print.py +0 -0
  71. {podflow-20250401.1 → podflow-20250401.2}/podflow/message/rss_create_hash.py +0 -0
  72. {podflow-20250401.1 → podflow-20250401.2}/podflow/message/save_rss.py +0 -0
  73. {podflow-20250401.1 → podflow-20250401.2}/podflow/message/title_correction.py +0 -0
  74. {podflow-20250401.1 → podflow-20250401.2}/podflow/message/update_information_display.py +0 -0
  75. {podflow-20250401.1 → podflow-20250401.2}/podflow/message/update_youtube_bilibili_rss.py +0 -0
  76. {podflow-20250401.1 → podflow-20250401.2}/podflow/message/want_retry.py +0 -0
  77. {podflow-20250401.1 → podflow-20250401.2}/podflow/message/xml_item.py +0 -0
  78. {podflow-20250401.1 → podflow-20250401.2}/podflow/message/xml_original_item.py +0 -0
  79. {podflow-20250401.1 → podflow-20250401.2}/podflow/message/xml_rss.py +0 -0
  80. {podflow-20250401.1 → podflow-20250401.2}/podflow/netscape/__init__.py +0 -0
  81. {podflow-20250401.1 → podflow-20250401.2}/podflow/netscape/bulid_netscape.py +0 -0
  82. {podflow-20250401.1 → podflow-20250401.2}/podflow/netscape/get_cookie_dict.py +0 -0
  83. {podflow-20250401.1 → podflow-20250401.2}/podflow/parse_arguments.py +0 -0
  84. {podflow-20250401.1 → podflow-20250401.2}/podflow/remove/__init__.py +0 -0
  85. {podflow-20250401.1 → podflow-20250401.2}/podflow/remove/remove_dir.py +0 -0
  86. {podflow-20250401.1 → podflow-20250401.2}/podflow/remove/remove_file.py +0 -0
  87. {podflow-20250401.1 → podflow-20250401.2}/podflow/repair/__init__.py +0 -0
  88. {podflow-20250401.1 → podflow-20250401.2}/podflow/repair/reverse_log.py +0 -0
  89. {podflow-20250401.1 → podflow-20250401.2}/podflow/upload/__init__.py +0 -0
  90. {podflow-20250401.1 → podflow-20250401.2}/podflow/upload/add_upload.py +0 -0
  91. {podflow-20250401.1 → podflow-20250401.2}/podflow/upload/build_hash.py +0 -0
  92. {podflow-20250401.1 → podflow-20250401.2}/podflow/upload/get_upload_original.py +0 -0
  93. {podflow-20250401.1 → podflow-20250401.2}/podflow/upload/linked_client.py +0 -0
  94. {podflow-20250401.1 → podflow-20250401.2}/podflow/upload/linked_server.py +0 -0
  95. {podflow-20250401.1 → podflow-20250401.2}/podflow/upload/login.py +0 -0
  96. {podflow-20250401.1 → podflow-20250401.2}/podflow/upload/time_key.py +0 -0
  97. {podflow-20250401.1 → podflow-20250401.2}/podflow/upload/update_upload.py +0 -0
  98. {podflow-20250401.1 → podflow-20250401.2}/podflow/upload/upload_server.py +0 -0
  99. {podflow-20250401.1 → podflow-20250401.2}/podflow/youtube/__init__.py +0 -0
  100. {podflow-20250401.1 → podflow-20250401.2}/podflow/youtube/build.py +0 -0
  101. {podflow-20250401.1 → podflow-20250401.2}/podflow/youtube/get.py +0 -0
  102. {podflow-20250401.1 → podflow-20250401.2}/podflow/youtube/login.py +0 -0
  103. {podflow-20250401.1 → podflow-20250401.2}/podflow.egg-info/SOURCES.txt +0 -0
  104. {podflow-20250401.1 → podflow-20250401.2}/podflow.egg-info/dependency_links.txt +0 -0
  105. {podflow-20250401.1 → podflow-20250401.2}/podflow.egg-info/entry_points.txt +0 -0
  106. {podflow-20250401.1 → podflow-20250401.2}/podflow.egg-info/requires.txt +0 -0
  107. {podflow-20250401.1 → podflow-20250401.2}/podflow.egg-info/top_level.txt +0 -0
  108. {podflow-20250401.1 → podflow-20250401.2}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: podflow
3
- Version: 20250401.1
3
+ Version: 20250401.2
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
@@ -271,6 +271,52 @@
271
271
  </main>
272
272
  <script>
273
273
  (function() {
274
+ // 生成单个二维码的函数
275
+ function generateQRCodeForNode(container) {
276
+ const rootStyles = getComputedStyle(document.documentElement);
277
+ const textColor = rootStyles.getPropertyValue('--text-color');
278
+ const inputBg = rootStyles.getPropertyValue('--input-bg');
279
+ const url = container.dataset.url;
280
+ container.innerHTML = '';
281
+ if (url) {
282
+ new QRCode(container, {
283
+ text: url,
284
+ width: 128,
285
+ height: 128,
286
+ colorDark: textColor,
287
+ colorLight: inputBg,
288
+ correctLevel: QRCode.CorrectLevel.H
289
+ });
290
+ } else {
291
+ container.textContent = 'URL 未提供';
292
+ }
293
+ }
294
+
295
+ // 为所有存在的二维码容器生成二维码
296
+ function generateQRCodes() {
297
+ const containers = document.querySelectorAll('.qrcode-container');
298
+ containers.forEach(generateQRCodeForNode);
299
+ }
300
+
301
+ // 利用 MutationObserver 动态监听 container 内新增的二维码容器
302
+ function observeQRCodes(container) {
303
+ const observer = new MutationObserver((mutationsList) => {
304
+ mutationsList.forEach(mutation => {
305
+ mutation.addedNodes.forEach(node => {
306
+ if (node.nodeType === Node.ELEMENT_NODE) {
307
+ if (node.classList.contains('qrcode-container')) {
308
+ generateQRCodeForNode(node);
309
+ } else {
310
+ const childContainers = node.querySelectorAll('.qrcode-container');
311
+ childContainers.forEach(generateQRCodeForNode);
312
+ }
313
+ }
314
+ });
315
+ });
316
+ });
317
+ observer.observe(container, { childList: true, subtree: true });
318
+ }
319
+
274
320
  // 缓存常用节点
275
321
  const menu = document.getElementById('menu');
276
322
  const toggleMenuBtn = document.getElementById('toggleMenu');
@@ -286,10 +332,12 @@
286
332
  const pasteBtn = document.getElementById('pasteBtn');
287
333
  const copyBtn = document.getElementById('copyBtn');
288
334
  const clearBtn = document.getElementById('clearBtn');
289
- const qrcodeContainers = document.querySelectorAll('.qrcode-container'); // 获取所有二维码容器
290
335
 
291
336
  let pollingTimer = null;
292
337
 
338
+ // 监听 messageArea 内动态新增的二维码容器
339
+ observeQRCodes(messageArea);
340
+
293
341
  // 菜单切换函数
294
342
  function toggleMenu() {
295
343
  menu.classList.toggle('hidden');
@@ -313,7 +361,7 @@
313
361
  }
314
362
  pageId === 'pageMessage' ? startMessagePolling() : stopMessagePolling();
315
363
  if (pageId === 'pageMessage') {
316
- generateQRCodes(); // 当切换页面时生成二维码
364
+ generateQRCodes(); // 页面切换时生成已有二维码
317
365
  }
318
366
  }
319
367
  }
@@ -404,7 +452,7 @@
404
452
  startMessagePolling();
405
453
 
406
454
  // 表单异步提交(获取 Channel-ID)
407
- inputForm.addEventListener('submit', function(event) {
455
+ inputForm && inputForm.addEventListener('submit', function(event) {
408
456
  event.preventDefault();
409
457
  const content = inputOutput.value;
410
458
  fetch('getid', {
@@ -487,31 +535,6 @@
487
535
  toggleMenuBtn.textContent = '❯';
488
536
  }
489
537
 
490
- // 生成二维码的函数
491
- function generateQRCodes() {
492
- const rootStyles = getComputedStyle(document.documentElement);
493
- const textColor = rootStyles.getPropertyValue('--text-color');
494
- const inputBg = rootStyles.getPropertyValue('--input-bg');
495
-
496
- qrcodeContainers.forEach(container => {
497
- const url = container.dataset.url;
498
- // 清空容器中可能已有的内容
499
- container.innerHTML = '';
500
- if (url) {
501
- new QRCode(container, {
502
- text: url,
503
- width: 128,
504
- height: 128,
505
- colorDark: textColor,
506
- colorLight: inputBg,
507
- correctLevel: QRCode.CorrectLevel.H
508
- });
509
- } else {
510
- container.textContent = 'URL 未提供';
511
- }
512
- });
513
- }
514
-
515
538
  // 在页面加载完成后首次生成二维码(如果当前显示的是 Channel 页面)
516
539
  window.addEventListener('load', () => {
517
540
  if (pages.pageChannel.style.display === 'block') {
@@ -521,4 +544,4 @@
521
544
  })();
522
545
  </script>
523
546
  </body>
524
- </html>
547
+ </html>
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: podflow
3
- Version: 20250401.1
3
+ Version: 20250401.2
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
@@ -5,7 +5,7 @@ from setuptools import setup, find_packages
5
5
 
6
6
  setup(
7
7
  name="podflow",
8
- version="20250401.1",
8
+ version="20250401.2",
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