可爱的壁纸

在寻找壁纸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即可


   转载规则


《可爱的壁纸》 GeekOcean 采用 知识共享署名 4.0 国际许可协议 进行许可。
  目录