又到了粉丝福利分享时间啦!今天我们来用Python敲一个屏保程序,用到了API端口相关的知识,您可以翻下我以前的文章,有相关内容。
这个是我同学让我做的,我本不想做,但中午的时间,闲着归闲着,我还能白赚一个人情,何乐而不为?
这个东西做着很简单。
程序的端口是https://www.dmoe.cc/random.php
,也是这位谪仙人给的。需要一个参数:return=json
。说明文档见:https://www.dmoe.cc/random.php
。
卷 Data 的文件夹 PATH 列表
卷序列号为 90AF-CB35
D:.
│ 图片展示.py
│
└─temp
直接敲程序,还需要一个名为temp
的文件夹。
请提前安装requests
、pygame
模块。
首先放出备用程序:
from requests import get
from json import dumps
from random import randint
import pygame
from pygame.locals import * url = 'https://www.dmoe.cc/random.php'
params = {'return':'json'}
response = get(url,params).json()
width,height,img = int(response['width']),int(response['height']),response['imgurl']content = get(img)
number = randint(100000,999999)
with open('temp/%d.jpg' % number,'wb') as f:f.write(content.content)pygame.init()
canvas = pygame.display.set_mode((width,height))
canvas.fill((255,255,255))
pygame.display.set_caption('Show')def handle():for event in pygame.event.get():if event.type == QUIT or (event.type == KEYDOWN and event.key == K_ESCAPE):pygame.quit()exit()background = pygame.image.load('temp/%d.jpg' % number)
while True:canvas.blit(background,(0,0))handle()pygame.display.update()
Okay,这里就不展示了,就是一个简单的屏保效果,关闭请ESC键。
再放出真实程序:
小歪API,https://api.ixiaowai.cn/api/api.php
,直接发get
请求即可,可以用Postman/APIfox调试。
from requests import get
from json import dumps
from random import randint
import pygame
from pygame.locals import * content = get('https://api.ixiaowai.cn/api/api.php')
number = randint(100000,999999)
with open('temp/%d.jpg' % number,'wb') as f:f.write(content.content)pygame.init()
canvas = pygame.display.set_mode((1920,1080))
canvas.fill((255,255,255))
pygame.display.set_caption('Show')def handle():for event in pygame.event.get():if event.type == QUIT or (event.type == KEYDOWN and event.key == K_ESCAPE):pygame.quit()exit()background = pygame.image.load('temp/%d.jpg' % number)
while True:canvas.blit(background,(0,0))handle()pygame.display.update()
更新:
想要会变化的?这里:
from requests import get
from json import dumps
from random import randint
import pygame
from pygame.locals import * #创建pygame窗口
pygame.init()
canvas = pygame.display.set_mode((1920,1080))
canvas.fill((255,255,255))
pygame.display.set_caption('Show')#事件处理
def handle():for event in pygame.event.get():if event.type == QUIT or (event.type == KEYDOWN and event.key == K_ESCAPE):pygame.quit()exit()while True:#下载图片content = get('https://api.ixiaowai.cn/api/api.php')number = randint(100000,999999)with open('temp/%d.jpg' % number,'wb') as f:f.write(content.content)#装填图片background = pygame.image.load('temp/%d.jpg' % number) canvas.blit(background,(0,0))#设置窗口handle()pygame.display.update()pygame.time.delay(5000) #秒数是多少,就写几千秒,这是五秒一换
图片下载器:
from requests import get # get请求方法
from json import dumps # json序列处理
from random import randint # 随机数
from os.path import exists # 检测文件夹是否存在
from os import mkdir # 创建文件夹# 下载的爬虫
def download(path):url = "https://api.ixiaowai.cn/api/api.php" # 请求URLcontent = get(url) # 发送网络请求number = randint(100000, 999999) # 生成随机数print("保存图片 >>> ./%s/%d.jpg" % (path, number)) # 输出保存信息with open("%s/%d.jpg" % (path, number), "wb") as f: # 保存图片信息f.write(content.content)# 主函数
def main(path):# 下载for i in range(1, int(input("您需要多少张图片 >>> ")) + 1):download(path)# 保留解释器窗口input("下载完成。")# 保存路径的程序
if __name__ == "__main__":try: # 包含异常folder = input("您需要将图片保存到哪里(输入相对路径) >>> ")if exists(folder): # 有这个文件夹就直接保存main(folder) # 下载else: # 如果没有这个文件夹mkdir(folder) # 创建文件夹main(folder) # 下载except Exception as e: # 提取异常基类print("ERROR:%s" % e) # 输出异常