运行必备库:pyperclipBeautifulSouprequests

完整代码(含注释)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
import pyperclip
import os
import requests
from bs4 import BeautifulSoup


def getHTMLText(url_home, code='utf-8'):
try:
r = requests.get(url_home)
r.raise_for_status()
r.encoding = code
return r.text
except:
return ""


def getINFO(url_home, code='utf-8'):
html = getHTMLText(url_home)
soup = BeautifulSoup(html, 'html.parser')
# 寻找文件名称标签
list0 = soup.find_all('div', attrs={'class': 'mdui-row mdui-col-sm-12'})
# 寻找文件修改日期标签
list1 = soup.find_all(
'div', attrs={'class': 'mdui-col-sm-3 mdui-text-right'})
# 寻找文件存储大小标签
list2 = soup.find_all(
'div', attrs={'class': 'mdui-col-sm-2 mdui-text-right'})

for list in list0[1:]:
# .strip() 移除字符串头尾指定的字符(默认为空格或换行符)或字符序列
text = list.find('span').next_element.strip()
FolderNames.append(text)
for list in list1[1:]:
text = list.next_element.strip()
ModificationDates.append(text)
for list in list2[1:]:
text = list.next_element.strip()
Sizes.append(text)


def PrintPanel():
# 总宽度,修改时需要同步修改(line 113, 117, 118, 119, 126)
width = int(70)
Folder = int(30)
Size = int(10)
Date = width - Folder - Size
header_fmt = '{{:{}}}{{:{}}}{{:>{}}}'.format(Folder, Size, Date)
fmt = '{{:{}}}{{:>{}}}{{:>{}}}'.format(Folder, Size, Date)

print('=' * (width + 7))
# 显示方式一,文件夹标题显示在表头(line 52, line126)
print(header_fmt.format('Folder', ' Size', 'Date'))
# 显示方式二,文件夹标题显示在首行(line 54)
# print(header_fmt.format(FolderTitle, ' Size', 'Date'))
print('-' * (width + 7))

for i in range(len(FolderNames)):
num = str(i).zfill(2)
print('[', num, ']', fmt.format(
FolderNames[i], Sizes[i], ModificationDates[i]))

print('=' * (width + 7))


# 定义【文件名称】、【文件存储大小】、【文件修改日期】空列表
FolderNames = []
Sizes = []
ModificationDates = []

# 图床首页URL,腾讯云函数
url_home = 'https://brief-spurious-pizza.glitch.me/PicBed/Picture%20bed/'

Bool = 1
url_file = url_home
# 头标题
FolderTitle = ''

while Bool:

getINFO(url_file)
PrintPanel()
option = input("请选择目录/文件(+ 返回首页):")

try:
# 格式化图床文件夹内网址
url_add0 = str(FolderNames[int(option)])
url_file = url_file + url_add0 + '/'

# 若网址为图片地址,则复制到剪切板,否则进入目标图床文件夹内
if ("png") in url_file:
url_md = '!' + '[' + url_add0 + ']' + '(' + url_file + ')'
pyperclip.copy(url_md)
print('文件URL已经复制到剪切板(MarkDown格式)')
print('当前剪切板内容:' + url_file)
url_file = url_file.replace(
FolderNames[int(option)], '')[:-1]
url_add0 = ''
elif ("jpg") in url_file:
url_md = '!' + '[' + url_add0 + ']' + '(' + url_file + ')'
pyperclip.copy(url_md)
print('文件URL已经复制到剪切板(MarkDown格式)')
print('当前剪切板内容:' + url_file)
url_file = url_file.replace(
FolderNames[int(option)], '')[:-1]
url_add0 = ''
else:
FolderTitle = FolderNames[int(option)]

except:
# 返回图床首页
if option == '+':
url_file = url_home
print("返回顶层".center(73, '-'))
FolderTitle = ''
# 捕获异常
else:
print('=' * 77)
print("输入异常".center(73, '-'))
print('=' * 77)

# 程序暂停,清屏
os.system('pause')
os.system('cls')

# 显示方式一:打印文件夹表头
print(('Folder:' + FolderTitle).center(76, '='))

# 初始化文件信息元组
FolderNames.clear()
Sizes.clear()
ModificationDates.clear()