无标签
发布日期:
2020-09-24
更新日期:
2020-09-24
文章字数:
882
阅读时长:
3 分
阅读次数:
在寻找壁纸api的时候突然发现了一套灰常灰常可爱的壁纸,于是想把他们都放到我的壁纸界面上,无奈api一次请求的图片一样,所以就想着把这些图片搞下来,存到我的cdn加速中。
先来几张图:
1. 得到图片
懒癌晚期当然是不能一张一张的下载了,于是就有了下面
import os
import time
import random
import requests
import urllib.request
from urllib.request import Request, urlopen, urlretrieve
url = yourapi
headers = {
'User-Agent':
'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:23.0) Gecko/20100101 Firefox/23.0'
}
folder_path = '/Users/kevin/Pictures/wallpapers/mc/'
folder = os.path.exists(folder_path)
if not folder:
os.makedirs(folder_path)
print("创建文件夹%s成功" % folder_path)
file_names = os.listdir(folder_path)
index = len(file_names)
try:
while True:
flag = False
request = urllib.request.Request(url, headers=headers)
resp = urllib.request.urlopen(request)
real_url = resp.geturl()
response = requests.get(real_url)
# img_name = real_url.split('/')[4]
img_name = os.path.split(real_url)[1]
for file_name in file_names:
if file_name == img_name:
print('图片已存在')
flag = True
break
if flag:
time.sleep(random.randint(0, 3))
continue
path = folder_path + img_name
index += 1
urlretrieve(real_url, path)
print('已下载%d张图片,该图片的真实链接为%s' % (index, real_url))
time.sleep(random.randint(0, 3))
except:
print('出现异常')
运行如下,没想到这么多张
2. 改名字
由于原图片的名字是一串神秘代码,这样看着太难受了,于是我决定给他们改名字,正好最近vim用的很顺手,接下来就是vim的骚操作了。
操作之前先讲讲vim为什么可以这么做: 可以在 Vim 内部调用外部程序(如shell命令),还可以把缓冲区的内容作为标准输入传递给外部命令,或是把外部命令的标准输出导入到Vim缓冲区。
1. 在vim内部执行shell命令
在Vim的命令行模式中,在命令前加一个!前缀 (参见:h :! ) 就可以调用外部的shell程序。
例如:在vim中,想要查看当前目录的所有文件,在命令行模式下使用:!ls
注::!ls
和 :ls
是两个不同的Vim命令,前者是在Vim中调用shell命令 ls
,用于列出目录下的所有文件,后者调用的是 Vim内置命令ls
,用来显示当前缓冲区列表的内容.
2. 将Vim 缓冲区内容作为标准输入或标准输出
在使用!{cmd}
时,vim会回显command的输出,可以用:read !{cmd}
把command的输出重定向到当前vim的缓冲区中,或使用:write !{cmd}
把当前vim缓冲区的内容作为command的标准输入.
例如:执行:write !sh
则会在shell中逐行执行当前vim缓冲区的内容
3. 改名字
我想把名字改成(1.jpg,2.jpg)的形式,所以需要用到递增
- 首先选中需要修改的部分,接下来执行两条指令:
:'<,>'s/.*/mv & aaa.jpg
:'<,>'s/aaa/\=line(".")-line("'<")+1
具体命令详解:
'<,'> 所选中的区域 (:help '<,:help '> )
s 在选中的区域中进行替换 (:help :s )
.* 匹配当前所有字符
\= 指明后面是一个表达式 (:help :s\= )
line(".") 当前光标所在行的行号 (:help line() )
line("'<") 所选区域中第一行的行号 (:help line() )
'<
和'>
是使用了”v”,”V”命令选中一个visual区域后,VIM设置的标记,分别用来标识visual区域的开始和结束。
- 接着执行
:wirte !sh
即可