podflow 20250212__py3-none-any.whl → 20250301__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 +2 -2
- Podflow/basic/http_client.py +10 -2
- Podflow/bilibili/build.py +8 -6
- Podflow/bilibili/login.py +3 -3
- Podflow/download/youtube_and_bilibili_download.py +2 -1
- Podflow/download_and_build.py +24 -0
- Podflow/httpfs/port_judge.py +5 -12
- Podflow/main.py +2 -240
- Podflow/main_podcast.py +214 -0
- Podflow/main_upload.py +28 -0
- Podflow/makeup/{del_makeup_yt_format_fail.py → del_makeup_format_fail.py} +4 -5
- Podflow/makeup/make_up_file_format_mod.py +8 -8
- Podflow/message/create_main_rss.py +57 -32
- Podflow/message/display_qrcode_and_url.py +9 -11
- Podflow/message/fail_message_initialize.py +5 -0
- Podflow/message/get_media_name.py +26 -0
- Podflow/message/save_rss.py +85 -0
- Podflow/remove/remove_file.py +1 -0
- Podflow/upload/add_upload.py +36 -0
- Podflow/upload/get_upload_original.py +22 -23
- Podflow/upload/linked_client.py +74 -0
- Podflow/upload/linked_server.py +32 -0
- Podflow/upload/update_upload.py +74 -0
- Podflow/upload/upload_print.py +8 -0
- Podflow/youtube/build.py +36 -16
- {podflow-20250212.dist-info → podflow-20250301.dist-info}/METADATA +2 -2
- {podflow-20250212.dist-info → podflow-20250301.dist-info}/RECORD +30 -20
- {podflow-20250212.dist-info → podflow-20250301.dist-info}/WHEEL +0 -0
- {podflow-20250212.dist-info → podflow-20250301.dist-info}/entry_points.txt +0 -0
- {podflow-20250212.dist-info → podflow-20250301.dist-info}/top_level.txt +0 -0
Podflow/youtube/build.py
CHANGED
@@ -8,8 +8,6 @@ import contextlib
|
|
8
8
|
import xml.etree.ElementTree as ET
|
9
9
|
from datetime import datetime, timezone
|
10
10
|
from Podflow import gVar
|
11
|
-
from Podflow.message.xml_rss import xml_rss
|
12
|
-
from Podflow.basic.file_save import file_save
|
13
11
|
from Podflow.message.xml_item import xml_item
|
14
12
|
from Podflow.basic.http_client import http_client
|
15
13
|
from Podflow.message.format_time import format_time
|
@@ -25,10 +23,9 @@ def get_youtube_introduction():
|
|
25
23
|
# 使用http获取youtube频道简介和图标模块
|
26
24
|
def youtube_xml_get(output_dir):
|
27
25
|
if channel_about := http_client(
|
28
|
-
f"https://www.youtube.com/channel/{output_dir}/about",
|
29
|
-
|
30
|
-
|
31
|
-
5,
|
26
|
+
url=f"https://www.youtube.com/channel/{output_dir}/about",
|
27
|
+
max_retries=2,
|
28
|
+
retry_delay=5,
|
32
29
|
):
|
33
30
|
channel_about = channel_about.text
|
34
31
|
xml_tree = {
|
@@ -46,6 +43,8 @@ def get_youtube_introduction():
|
|
46
43
|
channel_about,
|
47
44
|
flags=re.DOTALL,
|
48
45
|
).group()
|
46
|
+
else:
|
47
|
+
xml_tree = False
|
49
48
|
with youtube_xml_get_lock:
|
50
49
|
gVar.youtube_xml_get_tree[output_dir] = xml_tree
|
51
50
|
|
@@ -60,6 +59,15 @@ def get_youtube_introduction():
|
|
60
59
|
thread.join()
|
61
60
|
|
62
61
|
|
62
|
+
# 打印无法获取youtube频道简介模块
|
63
|
+
def print_fail_youtube_introduction():
|
64
|
+
for output_dir, xml_tree in gVar.youtube_xml_get_tree:
|
65
|
+
if isinstance(xml_tree, bool) and not xml_tree:
|
66
|
+
print(
|
67
|
+
f"{datetime.now().strftime('%H:%M:%S')}|{gVar.channelid_youtube_ids[output_dir]} 简介获取失败"
|
68
|
+
)
|
69
|
+
|
70
|
+
|
63
71
|
# 获取YouTube播放列表模块
|
64
72
|
def get_youtube_playlist(url, channelid_title):
|
65
73
|
videoids = []
|
@@ -69,7 +77,15 @@ def get_youtube_playlist(url, channelid_title):
|
|
69
77
|
0
|
70
78
|
]["tabRenderer"]["content"]["sectionListRenderer"]["contents"][0][
|
71
79
|
"itemSectionRenderer"
|
72
|
-
][
|
80
|
+
][
|
81
|
+
"contents"
|
82
|
+
][
|
83
|
+
0
|
84
|
+
][
|
85
|
+
"playlistVideoListRenderer"
|
86
|
+
][
|
87
|
+
"contents"
|
88
|
+
]
|
73
89
|
videoids.extend(
|
74
90
|
content["playlistVideoRenderer"]["videoId"] for content in contents
|
75
91
|
)
|
@@ -262,12 +278,14 @@ def youtube_xml_items(output_dir):
|
|
262
278
|
except Exception: # 参数不存在直接更新
|
263
279
|
description = gVar.config["description"]
|
264
280
|
icon = gVar.config["icon"]
|
281
|
+
youtube_xml_get_tree = gVar.youtube_xml_get_tree
|
265
282
|
if (
|
266
283
|
output_dir in gVar.channelid_youtube_ids_update
|
267
|
-
and output_dir in
|
284
|
+
and output_dir in youtube_xml_get_tree
|
285
|
+
and isinstance(youtube_xml_get_tree[output_dir], dict)
|
268
286
|
):
|
269
|
-
description =
|
270
|
-
icon =
|
287
|
+
description = youtube_xml_get_tree[output_dir]["description"]
|
288
|
+
icon = youtube_xml_get_tree[output_dir]["icon"]
|
271
289
|
category = gVar.config["category"]
|
272
290
|
if output_dir_value["type"] == "dict":
|
273
291
|
title = output_dir_value["content"]["title"]
|
@@ -278,9 +296,11 @@ def youtube_xml_items(output_dir):
|
|
278
296
|
items = f"""<!-- {{{output_dir}}} -->
|
279
297
|
{items}
|
280
298
|
<!-- {{{output_dir}}} -->"""
|
281
|
-
|
282
|
-
|
283
|
-
|
284
|
-
"
|
285
|
-
|
286
|
-
|
299
|
+
return {
|
300
|
+
"title": title,
|
301
|
+
"link": link,
|
302
|
+
"description": description,
|
303
|
+
"category": category,
|
304
|
+
"icon": icon,
|
305
|
+
"items": items,
|
306
|
+
}
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.1
|
2
2
|
Name: podflow
|
3
|
-
Version:
|
3
|
+
Version: 20250301
|
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
|
@@ -15,7 +15,7 @@ Description-Content-Type: text/markdown
|
|
15
15
|
Requires-Dist: astral>=3.2
|
16
16
|
Requires-Dist: bottle>=0.13.2
|
17
17
|
Requires-Dist: qrcode>=8.0
|
18
|
-
Requires-Dist: yt-dlp>=2025.
|
18
|
+
Requires-Dist: yt-dlp>=2025.2.19
|
19
19
|
Requires-Dist: chardet>=5.2.0
|
20
20
|
Requires-Dist: cherrypy>=18.10.0
|
21
21
|
Requires-Dist: requests>=2.32.3
|
@@ -1,6 +1,9 @@
|
|
1
|
-
Podflow/__init__.py,sha256=
|
1
|
+
Podflow/__init__.py,sha256=fRgwxrydKSb9rK_ZsZsb2XhbGEgxxTYKmLB4f88fg0M,6908
|
2
|
+
Podflow/download_and_build.py,sha256=LeLjLHnF5N9vdrroDsB-mT4UKY2OwPSL3APUAkhTuwc,671
|
2
3
|
Podflow/ffmpeg_judge.py,sha256=krttVs1PDot_0CDq5rmtUIpchiaiqtAkPYFQRLG6OQM,1275
|
3
|
-
Podflow/main.py,sha256=
|
4
|
+
Podflow/main.py,sha256=qSUmVrY5uM1pAViEnPkk9Dx_18NqbZE8W2_fU-Hg2O8,456
|
5
|
+
Podflow/main_podcast.py,sha256=IUVEEYpXfyVNSACkDriTPgLsQhjC1xHFZTP5V3zwZZw,8289
|
6
|
+
Podflow/main_upload.py,sha256=FzWWRDK5GmvMas-BcTRBq1H5djVgg5-NF8vXMoo7Sko,886
|
4
7
|
Podflow/parse_arguments.py,sha256=qa5228sralPV7s4JdB6UgS1ug66rBqckDvSOwjz2tIc,2171
|
5
8
|
Podflow/basic/__init__.py,sha256=SyFA_F_0-zn1VejCL83IPeZx1k2HCiqNY-0l0bp1N88,44
|
6
9
|
Podflow/basic/file_save.py,sha256=mstWM6njYtCpq2sa28JD_neClvVLcjJOrGlCXBjUnZs,696
|
@@ -8,7 +11,7 @@ Podflow/basic/folder_build.py,sha256=Bt1ab1shKIluvSRzWqxaFmvG3AVU3kwJNzwSesdNlIU
|
|
8
11
|
Podflow/basic/get_duration.py,sha256=e9w8XktV-ozdO0v0dlsUMqcyKJZpjcibCpY-wfwZt54,532
|
9
12
|
Podflow/basic/get_file_list.py,sha256=Y6Nqn6lxhPXiIT2eeCkY7fMPrzFClwjv7kXej4CCFCY,2389
|
10
13
|
Podflow/basic/get_html_dict.py,sha256=EZQ0Wlu87SFbUFZuakE7JWgFx53FQKpLbP78L7Gww3E,869
|
11
|
-
Podflow/basic/http_client.py,sha256=
|
14
|
+
Podflow/basic/http_client.py,sha256=gvaxg_1lz81tnWCq2HIh-oliShWJCP77JUnYl2v5qng,3003
|
12
15
|
Podflow/basic/list_merge_tidy.py,sha256=o9cEnfEK0bhjf5awls5HyUzg0siPa1e4V97-kqxlpt0,368
|
13
16
|
Podflow/basic/qr_code.py,sha256=3q2omeQTDIt4aDlfPGVpiynfAHW7K4XYx59LBSUiEDk,1704
|
14
17
|
Podflow/basic/split_dict.py,sha256=rxwsGuzBWXJ8nDxcxYI-BqeeccyDTsw011tjkT8rZwI,401
|
@@ -17,9 +20,9 @@ Podflow/basic/time_stamp.py,sha256=vf0p6FIK2-ZN2p2sotbpf4dewQMy-Vior-aREYfT0Zc,1
|
|
17
20
|
Podflow/basic/vary_replace.py,sha256=aecFDuAOvQjTpgtoSW5uDu8Tx_YTs4bCFF9imVFkfVY,211
|
18
21
|
Podflow/basic/write_log.py,sha256=Sm6qzTSb1x6X2uQnnmVD4dU6BsY1PONxenwsWAdFxso,1358
|
19
22
|
Podflow/bilibili/__init__.py,sha256=ekvpCzR4bg6ar73Gq0YWQcPXND4TEqP46pb9iLyke9g,47
|
20
|
-
Podflow/bilibili/build.py,sha256=
|
23
|
+
Podflow/bilibili/build.py,sha256=Oeh6Cqb61F5zQWe8ohDP0QKwykAa4_I2fa-Yl6ZxkCw,7957
|
21
24
|
Podflow/bilibili/get.py,sha256=PXPh_H8B_zP9dhqe6sA_QCeJcdnriBCpbF7mPq46xMw,20337
|
22
|
-
Podflow/bilibili/login.py,sha256=
|
25
|
+
Podflow/bilibili/login.py,sha256=ujczE9rWKFJQ7zIJ7mvlrf2XpXpn6sQwtGtqPsaf3wg,10932
|
23
26
|
Podflow/config/__init__.py,sha256=BroaS1uvdLb00OQeJXc1i7QeuErD-U-2QjynQH5IDdE,45
|
24
27
|
Podflow/config/build_original.py,sha256=tZtsGUi1rG6DH6cxaiaVQPRtIl6U0-FqOdeho7CXl0s,1809
|
25
28
|
Podflow/config/channge_icon.py,sha256=z2tFFiP7aZFiMP1RqXkrovWAxBOI77rTHKhuzzhFfn0,5653
|
@@ -34,21 +37,22 @@ Podflow/download/delete_part.py,sha256=G9lK8G8tOOmnEBmAHJKPdqPeLhJ61S5m8o6iL5g9S
|
|
34
37
|
Podflow/download/dl_aideo_video.py,sha256=8Y8agC4bBCpWLDE6zWfCAi0PrT_ik302XkufxgXK1z8,10001
|
35
38
|
Podflow/download/show_progress.py,sha256=7oGzhj_frO2A1o5JeGuHn7bHtma5oPpD_IWcctIO2rs,1595
|
36
39
|
Podflow/download/wait_animation.py,sha256=E2V3cm-10e5Iif40oU722OfzDe7YiLMbDqsjZ6dshBE,1056
|
37
|
-
Podflow/download/youtube_and_bilibili_download.py,sha256=
|
40
|
+
Podflow/download/youtube_and_bilibili_download.py,sha256=uHb-ZirbDXmnW_gDTmUtus6xqLy8flXwKmSkeslN_dc,1285
|
38
41
|
Podflow/httpfs/__init__.py,sha256=agnAtd2Xe0qfOrElKgoBattAVqUBdj79wU2e2UOpcJM,45
|
39
42
|
Podflow/httpfs/app_bottle.py,sha256=B5rGSxSNFbrjZfmtH7GVYdHCNDZ0T_7Jxrh4_oM8-FU,9333
|
40
|
-
Podflow/httpfs/port_judge.py,sha256=
|
43
|
+
Podflow/httpfs/port_judge.py,sha256=KozmaCGlMVh3E0ONekxSUstJWthhwdLK4WoJ84u1c5Q,349
|
41
44
|
Podflow/makeup/__init__.py,sha256=HaBchKbUjRqqXSGCkMfEqLOyx3tlqB2htXvTDs59owI,45
|
42
|
-
Podflow/makeup/
|
45
|
+
Podflow/makeup/del_makeup_format_fail.py,sha256=rUSJD5lXMBM5pCde1amrtF6s93MMHp66-NHCXZy56AI,642
|
43
46
|
Podflow/makeup/make_up_file.py,sha256=6r5Mf_zK9snLS2hByD-HyKyuKWTccqqDJXh39GKhq28,2222
|
44
|
-
Podflow/makeup/make_up_file_format_mod.py,sha256=
|
47
|
+
Podflow/makeup/make_up_file_format_mod.py,sha256=NMG8gzp1ARSyZWZvMta3BMFPH75o1YYmaIbv247MgSw,3613
|
45
48
|
Podflow/makeup/make_up_file_mod.py,sha256=CDwgC8BKPf1o1x5U5DF8UR1gtoAEPmhknokkqGLdJWY,1075
|
46
49
|
Podflow/message/__init__.py,sha256=SC42QCYhGwCvzvBnxiBz6L1MN-l57WHbH7PIh-UyPdI,46
|
47
50
|
Podflow/message/backup_zip_save.py,sha256=cU1oLO68INKSlmckYNCWmdZKu51T-HNuVFSHYzA9a-8,1740
|
48
|
-
Podflow/message/create_main_rss.py,sha256=
|
49
|
-
Podflow/message/display_qrcode_and_url.py,sha256=
|
50
|
-
Podflow/message/fail_message_initialize.py,sha256=
|
51
|
+
Podflow/message/create_main_rss.py,sha256=R-8nfTp7cg1m9BfK-YGfb186iR_miMwDxszwOLFc-eQ,2946
|
52
|
+
Podflow/message/display_qrcode_and_url.py,sha256=Ren6ly_W-c__FGlRxXrpNSyV16IOu-OwHDNOkzB6La0,1016
|
53
|
+
Podflow/message/fail_message_initialize.py,sha256=J7yjPo7vaL5Ix3lHOK13DE2zZ_xmdFF9xokarajtv6E,6299
|
51
54
|
Podflow/message/format_time.py,sha256=2Z7rPh3rrU68UoDO5fFF_ipV_SEmtotziBmBBl0mHdc,909
|
55
|
+
Podflow/message/get_media_name.py,sha256=5a9Tuvsr7-jslJ8h3hH23Bh11mN6GcCQmHUQwvwS54A,861
|
52
56
|
Podflow/message/get_original_rss.py,sha256=QRtpHEYeS9rDh4Cv_EkTIC89eSw0I6540ykrTT3yr-4,2383
|
53
57
|
Podflow/message/get_video_format.py,sha256=RIX0fxuPYkoQPRWt-ulJPhfEWtMkyxwOEVqcuRsp4v8,4770
|
54
58
|
Podflow/message/get_video_format_multithread.py,sha256=ZXzY9RwT59eOvP6Lmx-I07P3C1CWCl-4l_uw_pkozqE,1406
|
@@ -56,6 +60,7 @@ Podflow/message/get_youtube_and_bilibili_video_format.py,sha256=RuaxL3JwZs3_Bqm7
|
|
56
60
|
Podflow/message/media_format.py,sha256=WH0NnjWPLigU8Wy2kbqDIhj_RISnaCCXtsR5qIjLFdU,7346
|
57
61
|
Podflow/message/original_rss_fail_print.py,sha256=pVVb_BGM1HofHDh9pCX5GS03gOnNAssfHDjj5Ytz_mw,502
|
58
62
|
Podflow/message/rss_create_hash.py,sha256=NODhtprDPkpiuiezupARKm5Xr4Zt2Io_lcxmHedPAQc,638
|
63
|
+
Podflow/message/save_rss.py,sha256=ZBZrEWrF70w2lmJ3oP84sTPL3d5w93ZLq01Zeg0wurs,3201
|
59
64
|
Podflow/message/title_correction.py,sha256=JR2q3PubOUUAfQEPjIzeRzUe4Jy86opGIO1st51qt2g,915
|
60
65
|
Podflow/message/update_information_display.py,sha256=-vIBKaR6_JrZJyzvN6-YUfj_ISY7qw_1fGiyXDxFAE4,3061
|
61
66
|
Podflow/message/update_youtube_bilibili_rss.py,sha256=eSQhYyLsOGyNpE7i4AjQ2auSUrunJUE18qPiPbhiv4Q,5238
|
@@ -68,15 +73,20 @@ Podflow/netscape/bulid_netscape.py,sha256=lG2uQQIGVX1H7iyOEO8aGKlaPdBPWbZq4rgdcJ
|
|
68
73
|
Podflow/netscape/get_cookie_dict.py,sha256=ptT2H8ZwFseK8EmpH0jn-lhzh-KCciOOPwpAJnIFDFU,691
|
69
74
|
Podflow/remove/__init__.py,sha256=kns-jfTXH8lXh9OQ5E5-llsrAPlET5rl6RYpjoZKav8,45
|
70
75
|
Podflow/remove/remove_dir.py,sha256=tah3LCD0bCcf5dDg3NrHuseaje3-31C5NLNupMg15TU,1099
|
71
|
-
Podflow/remove/remove_file.py,sha256=
|
76
|
+
Podflow/remove/remove_file.py,sha256=ACO2iK8RAZKGJ08uABbzGwu5-B0RLklQ-EOOkSuPFiU,982
|
72
77
|
Podflow/upload/__init__.py,sha256=9uOIL8vr_vP_XYrhfZ4IDZmfSGyCf0_MpLOc-KnbpSY,45
|
73
|
-
Podflow/upload/
|
78
|
+
Podflow/upload/add_upload.py,sha256=8kxHDLFa225WFze3oTPNtOWbcECF--bQXuALfsRJLoo,1432
|
79
|
+
Podflow/upload/get_upload_original.py,sha256=h2aoutZ-po40N8auRDbKvse14261Y5H7vHgfAN23vV0,4358
|
80
|
+
Podflow/upload/linked_client.py,sha256=mprI2ZEGQt9v8hRa6a3QxfFjkOWu-TxAq5dSeeptHrI,2299
|
81
|
+
Podflow/upload/linked_server.py,sha256=qbAzkxcy1M_JOCOx0WwZYWpTXYbS2OBcD4geLhEzE08,1041
|
82
|
+
Podflow/upload/update_upload.py,sha256=4B5HyWwfmc_4Z5ZS_Wt2VcL6sgQFvq3JEl0Qubh7TwE,3183
|
83
|
+
Podflow/upload/upload_print.py,sha256=KDMPxlWx7jqFVJuEwBFs5U6o3K5AbXBGxcACtXKDqdE,165
|
74
84
|
Podflow/youtube/__init__.py,sha256=-bdMyuw-wxoz2miVkp284amS4Qg0k7VN0JPuGF-cXlM,46
|
75
|
-
Podflow/youtube/build.py,sha256=
|
85
|
+
Podflow/youtube/build.py,sha256=yy-rPBGs7H4aUjgLNyKz2HE-mjyGTs3b0FL5-KPHPM0,11650
|
76
86
|
Podflow/youtube/get.py,sha256=dFLyiHttygqdJltwC29jD_v8wwoLynE5NUdow_0wERI,16970
|
77
87
|
Podflow/youtube/login.py,sha256=DlS_ZG4g6CKWqS5ojE4UwFJSCSZDsXbeuDVgHtQAa4A,1380
|
78
|
-
podflow-
|
79
|
-
podflow-
|
80
|
-
podflow-
|
81
|
-
podflow-
|
82
|
-
podflow-
|
88
|
+
podflow-20250301.dist-info/METADATA,sha256=B9-vRpJMHUs2TDUY53PZ4PCI8F1Nml46ZjAedU5Jxq8,13801
|
89
|
+
podflow-20250301.dist-info/WHEEL,sha256=tZoeGjtWxWRfdplE7E3d45VPlLNQnvbKiYnx7gwAy8A,92
|
90
|
+
podflow-20250301.dist-info/entry_points.txt,sha256=44nj8jJB7bo1JLNrKQZmwMGEA1OalrALJ0tF_G0yXLY,131
|
91
|
+
podflow-20250301.dist-info/top_level.txt,sha256=KcvRCiz_DRWWc9i-PgpARvFB0J4CKmpZOZgPqOdG-Lk,8
|
92
|
+
podflow-20250301.dist-info/RECORD,,
|
File without changes
|
File without changes
|
File without changes
|