podflow 20250604__py3-none-any.whl → 20250606.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 +2 -0
- podflow/download_and_build.py +6 -0
- podflow/httpfs/app_bottle.py +7 -1
- podflow/main_podcast.py +2 -0
- podflow/remove/remove_dir.py +1 -1
- podflow/remove/remove_file.py +2 -2
- podflow/upload/upload_files.py +36 -11
- {podflow-20250604.dist-info → podflow-20250606.1.dist-info}/METADATA +1 -1
- {podflow-20250604.dist-info → podflow-20250606.1.dist-info}/RECORD +12 -12
- {podflow-20250604.dist-info → podflow-20250606.1.dist-info}/WHEEL +0 -0
- {podflow-20250604.dist-info → podflow-20250606.1.dist-info}/entry_points.txt +0 -0
- {podflow-20250604.dist-info → podflow-20250606.1.dist-info}/top_level.txt +0 -0
podflow/__init__.py
CHANGED
podflow/download_and_build.py
CHANGED
@@ -2,6 +2,8 @@
|
|
2
2
|
# coding: utf-8
|
3
3
|
|
4
4
|
import threading
|
5
|
+
from podflow import gVar
|
6
|
+
from podflow.upload.upload_files import all_upload
|
5
7
|
from podflow.youtube.build import get_youtube_introduction
|
6
8
|
from podflow.message.create_main_rss import create_main_rss
|
7
9
|
from podflow.download.youtube_and_bilibili_download import youtube_and_bilibili_download
|
@@ -10,15 +12,19 @@ from podflow.download.youtube_and_bilibili_download import youtube_and_bilibili_
|
|
10
12
|
def get_and_duild():
|
11
13
|
get_youtube_introduction()
|
12
14
|
create_main_rss()
|
15
|
+
gVar.upload_stop = True # 停止上传线程
|
13
16
|
|
14
17
|
|
15
18
|
# 下载并构建YouTube和哔哩哔哩视频模块
|
16
19
|
def download_and_build():
|
17
20
|
thread_download = threading.Thread(target=youtube_and_bilibili_download)
|
18
21
|
thread_build = threading.Thread(target=get_and_duild)
|
22
|
+
thread_upload = threading.Thread(target=all_upload)
|
19
23
|
|
20
24
|
thread_download.start()
|
21
25
|
thread_build.start()
|
26
|
+
thread_upload.start()
|
22
27
|
|
23
28
|
thread_download.join()
|
24
29
|
thread_build.join()
|
30
|
+
thread_upload.join()
|
podflow/httpfs/app_bottle.py
CHANGED
@@ -343,6 +343,7 @@ class bottle_app:
|
|
343
343
|
if not upload_file:
|
344
344
|
# 打印错误信息并返回错误码
|
345
345
|
self.print_out("upload", 404)
|
346
|
+
upload_file.file.close()
|
346
347
|
return {
|
347
348
|
"code": -4,
|
348
349
|
"message": "No File Provided", # 没有上传文件
|
@@ -353,6 +354,7 @@ class bottle_app:
|
|
353
354
|
uploadfile_hash = build_hash(uploadfile)
|
354
355
|
if upload_hash != uploadfile_hash:
|
355
356
|
self.print_out("upload", 401)
|
357
|
+
upload_file.file.close()
|
356
358
|
return {
|
357
359
|
"code": -5,
|
358
360
|
"message": "Incomplete File", # 文件不完整
|
@@ -361,6 +363,7 @@ class bottle_app:
|
|
361
363
|
if not channelid:
|
362
364
|
# 打印错误信息并返回错误码
|
363
365
|
self.print_out("upload", 404)
|
366
|
+
upload_file.file.close()
|
364
367
|
return {
|
365
368
|
"code": -6,
|
366
369
|
"message": "ChannelId Does Not Exist", # 频道ID不存在
|
@@ -371,8 +374,9 @@ class bottle_app:
|
|
371
374
|
suffix = filename.split(".")[1]
|
372
375
|
if suffix not in ["mp4", "m4a"]:
|
373
376
|
self.print_out("upload", 404)
|
377
|
+
upload_file.file.close()
|
374
378
|
return {
|
375
|
-
"code": -
|
379
|
+
"code": -7,
|
376
380
|
"message": "File Format Error", # 文件格式错误
|
377
381
|
}
|
378
382
|
address = f"channel_audiovisual/{channelid}"
|
@@ -389,6 +393,7 @@ class bottle_app:
|
|
389
393
|
original_file.seek(0)
|
390
394
|
if upload_hash == build_hash(original_file):
|
391
395
|
self.print_out("upload", 200)
|
396
|
+
upload_file.file.close()
|
392
397
|
return {
|
393
398
|
"code": 1,
|
394
399
|
"message": "The Same File Exists", # 相同文件已存在
|
@@ -403,6 +408,7 @@ class bottle_app:
|
|
403
408
|
file_save(uploadfile, filename, address, True)
|
404
409
|
# 打印成功信息并返回成功码
|
405
410
|
self.print_out("upload", 200)
|
411
|
+
upload_file.file.close()
|
406
412
|
return {
|
407
413
|
"code": 0,
|
408
414
|
"message": "Upload Success", # 上传成功
|
podflow/main_podcast.py
CHANGED
podflow/remove/remove_dir.py
CHANGED
podflow/remove/remove_file.py
CHANGED
@@ -14,11 +14,11 @@ def remove_file():
|
|
14
14
|
for file_name in os.listdir(f"channel_audiovisual/{output_dir}"):
|
15
15
|
if file_name not in gVar.all_youtube_content_ytid[output_dir]:
|
16
16
|
os.remove(f"channel_audiovisual/{output_dir}/{file_name}")
|
17
|
-
write_log(f"{name}|{file_name}
|
17
|
+
write_log(f"{name}|{file_name}抛弃文件已删除")
|
18
18
|
|
19
19
|
channelid_bilibili_ids = gVar.channelid_bilibili_ids
|
20
20
|
for output_dir, name in channelid_bilibili_ids.items():
|
21
21
|
for file_name in os.listdir(f"channel_audiovisual/{output_dir}"):
|
22
22
|
if file_name not in gVar.all_bilibili_content_bvid[output_dir]:
|
23
23
|
os.remove(f"channel_audiovisual/{output_dir}/{file_name}")
|
24
|
-
write_log(f"{name}|{file_name}
|
24
|
+
write_log(f"{name}|{file_name}抛弃文件已删除")
|
podflow/upload/upload_files.py
CHANGED
@@ -1,7 +1,6 @@
|
|
1
1
|
# podflow/upload/upload_files.py
|
2
2
|
# coding: utf-8
|
3
3
|
|
4
|
-
import time
|
5
4
|
from datetime import datetime
|
6
5
|
from podflow import gVar
|
7
6
|
from podflow.httpfs.to_html import ansi_to_html
|
@@ -25,7 +24,7 @@ def upload_file(username, password, channelid, filename):
|
|
25
24
|
}
|
26
25
|
if response := http_client(
|
27
26
|
url="http://10.0.3.231:5000/upload",
|
28
|
-
name="
|
27
|
+
name="",
|
29
28
|
data=data,
|
30
29
|
mode="post",
|
31
30
|
file=file,
|
@@ -44,17 +43,14 @@ def find_media_index(upload_original, target_media_id):
|
|
44
43
|
return -1
|
45
44
|
|
46
45
|
|
47
|
-
#
|
48
|
-
def filter_and_sort_media(media_list
|
49
|
-
current_time = int(time.time())
|
50
|
-
one_month_ago = current_time - day * 24 * 60 * 60 # 30天前的时间戳
|
46
|
+
# 过滤和排序上传媒体模块
|
47
|
+
def filter_and_sort_media(media_list):
|
51
48
|
filtered_sorted = sorted(
|
52
49
|
(
|
53
50
|
item
|
54
51
|
for item in media_list
|
55
52
|
if not item["upload"]
|
56
53
|
and not item["remove"]
|
57
|
-
and item["media_time"] < one_month_ago
|
58
54
|
),
|
59
55
|
key=lambda x: x["media_time"],
|
60
56
|
)
|
@@ -65,12 +61,24 @@ def filter_and_sort_media(media_list, day):
|
|
65
61
|
return result
|
66
62
|
|
67
63
|
|
64
|
+
# 媒体文件上传模块
|
68
65
|
def record_upload(username, password, channelid, filename):
|
69
66
|
response, hashs = upload_file(username, password, channelid, filename)
|
70
67
|
channelname = (
|
71
68
|
gVar.channelid_youtube_ids_original | gVar.channelid_bilibili_ids_original
|
72
69
|
).get(channelid, "")
|
73
70
|
now_time = datetime.now().strftime("%H:%M:%S")
|
71
|
+
result = {
|
72
|
+
0: "",
|
73
|
+
1: "存在相同文件",
|
74
|
+
-2: "用户名错误",
|
75
|
+
-3: "密码错误",
|
76
|
+
-4: "上传文件为空",
|
77
|
+
-5: "文件不完整",
|
78
|
+
-6: "频道ID不存在",
|
79
|
+
-7: "文件格式有误",
|
80
|
+
}
|
81
|
+
name = filename.split(".")[0]
|
74
82
|
if response:
|
75
83
|
code = response.get("code")
|
76
84
|
data = response.get("data", {})
|
@@ -82,11 +90,28 @@ def record_upload(username, password, channelid, filename):
|
|
82
90
|
if filename:
|
83
91
|
gVar.upload_original[index]["upload"] = True
|
84
92
|
gVar.upload_original[index]["hash"] = hashs
|
85
|
-
gVar.upload_original[index]["filename"] =
|
86
|
-
|
87
|
-
|
93
|
+
gVar.upload_original[index]["filename"] = filename
|
94
|
+
if code == 0:
|
95
|
+
bottle_text = "\033[32m上传成功\033[0m"
|
96
|
+
elif code == 1:
|
97
|
+
bottle_text = f"\033[33m上传成功\033[0m: {result.get(code, message)}"
|
98
|
+
else:
|
99
|
+
bottle_text = f"\033[31m上传失败\033[0m: {result.get(code, message)}"
|
88
100
|
else:
|
89
|
-
bottle_text =
|
101
|
+
bottle_text = "\033[31m上传失败\033[0m: 网络连接失败"
|
102
|
+
bottle_text = f"{now_time}|{channelname}/{name}|" + bottle_text
|
90
103
|
bottle_app_instance.bottle_print.append(bottle_text)
|
91
104
|
gVar.index_message["http"].append(ansi_to_html(bottle_text))
|
92
105
|
bottle_app_instance.cherry_print(False)
|
106
|
+
|
107
|
+
|
108
|
+
# 总体上传模块
|
109
|
+
def all_upload():
|
110
|
+
if gVar.config["upload"]:
|
111
|
+
result = filter_and_sort_media(gVar.upload_original)
|
112
|
+
username = gVar.upload_json["username"]
|
113
|
+
password = gVar.upload_json["password"]
|
114
|
+
for item in result:
|
115
|
+
record_upload(username, password, item["channel_id"], item["media_id"])
|
116
|
+
if gVar.upload_stop:
|
117
|
+
break
|
@@ -1,8 +1,8 @@
|
|
1
|
-
podflow/__init__.py,sha256=
|
2
|
-
podflow/download_and_build.py,sha256=
|
1
|
+
podflow/__init__.py,sha256=mquu8BdWK9V4dDObCCfnPodeXOPkz-kj8_RNB7kK3Ys,7628
|
2
|
+
podflow/download_and_build.py,sha256=UPFTc8XjBEkg3GnCt3zkNjCzSbHugS3O8AreaWIgHJ0,904
|
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=
|
5
|
+
podflow/main_podcast.py,sha256=SSFIg73JLu3wS5E3WAo8OAgXG4r_CHsPT-XSga0Vzrg,12386
|
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
|
@@ -40,7 +40,7 @@ podflow/download/show_progress.py,sha256=y46chchUC9eZCg4ZdNMFnx_bXJQV_IUq15jVzZt
|
|
40
40
|
podflow/download/wait_animation.py,sha256=AUTvszXF89QA7XYjocFIauPKV7Qj8cFqry44teClaLQ,1314
|
41
41
|
podflow/download/youtube_and_bilibili_download.py,sha256=VCEhz6pGXFWXusdbGWqkCzi4f4VsKQVn6sZz1pfGsns,1335
|
42
42
|
podflow/httpfs/__init__.py,sha256=BxEXkufjcx-a0F7sDVXo65hmyANqCCbZUd6EH9i8T2c,45
|
43
|
-
podflow/httpfs/app_bottle.py,sha256=
|
43
|
+
podflow/httpfs/app_bottle.py,sha256=po0yxEvXp6kYupJdaVTR7b-4t-Dv7C-E8D6IOwu9sNU,21703
|
44
44
|
podflow/httpfs/browser.py,sha256=BJ4Xkfiki_tDr0Sc9RqAcEfIVpkAZ3RFOwo0aMHlY3U,197
|
45
45
|
podflow/httpfs/download_bar.py,sha256=0n3HATEO3pdsIpx-E_IZG9OlXa6u-9SeBCoZVgUutyc,965
|
46
46
|
podflow/httpfs/get_channelid.py,sha256=gcwy4IVHBWNQz7qPCpjwiAklGFLRGzvM33-UZz7oFvo,2296
|
@@ -79,8 +79,8 @@ podflow/netscape/__init__.py,sha256=SUw_BtbV3moA324UdxRECkPLv1xHkjio8r_5JTkVfxI,
|
|
79
79
|
podflow/netscape/bulid_netscape.py,sha256=wmUPlDGF8G456GGyajU_6Ak5WJzsqsq4bZgPjCSTGhI,2279
|
80
80
|
podflow/netscape/get_cookie_dict.py,sha256=laqw-eriABiLyciRLzDmistVHHWqmUM-9eEbYZzsqBQ,643
|
81
81
|
podflow/remove/__init__.py,sha256=x1pMfpIyE6xUrmIOkdl43mbvKLwndGo5pIoOBXhJsP4,45
|
82
|
-
podflow/remove/remove_dir.py,sha256=
|
83
|
-
podflow/remove/remove_file.py,sha256=
|
82
|
+
podflow/remove/remove_dir.py,sha256=zqgf47UgxiGiLipb1FeoWKzrSHSxcHaEuu0261bqR1s,1105
|
83
|
+
podflow/remove/remove_file.py,sha256=ZusvZsBQX_yRdLuboD7bZKiOX4z4Rxg66zZK9KDWHwE,1006
|
84
84
|
podflow/repair/__init__.py,sha256=Gpc1i6xiSLodKjjmzH66c_Y1z0HQ9E9CS3p95FRnVFM,45
|
85
85
|
podflow/repair/reverse_log.py,sha256=Wc_vAH0WB-z1fNdWx7FYaVH4caRPtot7tDwDwFhmpz4,1106
|
86
86
|
podflow/templates/index.html,sha256=kGsp1TAcf_qkV6hYRE8Ueq7CaTflR73rsTWtjnWuwwY,2775
|
@@ -98,14 +98,14 @@ podflow/upload/linked_server.py,sha256=h-qSx13fP8_Ny2IKW3wCNPwqRqW6-Iz1pqxD9ga9-
|
|
98
98
|
podflow/upload/login.py,sha256=85sqr12T-3NH-TD3kAMzy4yb1KOheV3Tr0eGee7NCJo,4007
|
99
99
|
podflow/upload/time_key.py,sha256=6jZ3cxUjzj_umYDwH27R0YNZlLXxfhNp-CqV_K22wlo,967
|
100
100
|
podflow/upload/update_upload.py,sha256=_5tp1zPNsC9DdDnLzm-P8bLcOBuDov4eMRHp_861j80,3183
|
101
|
-
podflow/upload/upload_files.py,sha256=
|
101
|
+
podflow/upload/upload_files.py,sha256=0IHVWtf-S2m3UekIFJyIT89lk7mHvTHzAP_CavCDonE,3887
|
102
102
|
podflow/upload/upload_server.py,sha256=BFq3QrWE7U97LbC4EQiDhQXbLapEc4R00eRDBH12E6A,565
|
103
103
|
podflow/youtube/__init__.py,sha256=pgXod8gq0IijZxIkPSwgAOcb9JI5rd1mqMomoR7bcJ4,46
|
104
104
|
podflow/youtube/build.py,sha256=j6SVq3HFFGlNNqRrHfnBIThdzsH88PFmwLnejosif1U,12311
|
105
105
|
podflow/youtube/get.py,sha256=oO32GjTFvUgP5AfFX5AlIuXU2UT6QtOUOXWLFzi8XtI,17157
|
106
106
|
podflow/youtube/login.py,sha256=KYl--ya6Z1u0uIcOp9l8i3DIIj9hsYUDH4dtJjI0MLM,1295
|
107
|
-
podflow-
|
108
|
-
podflow-
|
109
|
-
podflow-
|
110
|
-
podflow-
|
111
|
-
podflow-
|
107
|
+
podflow-20250606.1.dist-info/METADATA,sha256=GHtoxpy5Mpw8WYSwEom-YA2WxWbzgKXVk2Hxf6dtPPE,14197
|
108
|
+
podflow-20250606.1.dist-info/WHEEL,sha256=tZoeGjtWxWRfdplE7E3d45VPlLNQnvbKiYnx7gwAy8A,92
|
109
|
+
podflow-20250606.1.dist-info/entry_points.txt,sha256=mn7hD_c_dmpKe3XU0KNekheBvD01LhlJ9htY-Df0j2A,131
|
110
|
+
podflow-20250606.1.dist-info/top_level.txt,sha256=fUujhhz-RrMI8aGvi-3Ey5y7FQnpOOgoFw9OWM3yLCU,8
|
111
|
+
podflow-20250606.1.dist-info/RECORD,,
|
File without changes
|
File without changes
|
File without changes
|