1224 条记录
52 私有链接
52 私有链接
3 条结果
标签
python
PyWebIO让Python脚本秒变Web应用!无需HTML/JS,像写终端脚本一样交互,支持Flask/Django等框架。#Python #Web开发 #GUI [https://github.com/pywebio/PyWebIO]
这片文章描述了如何使用alist服务提供的API。API提供了一些功能,包括登录获取token、获取挂载的网盘列表、创建文件夹和上传文件等。每个API都列出了请求参数和返回结果的详细信息,以及示例代码来展示如何使用这些API。这些功能可以通过发送HTTP请求来实现,需要在请求头中提供Authorization字段作为用户的token。参考文档提供了更多详细信息和示例代码链接。
采用TinyPNG提供的api接口,使用python调用api接口,批量压缩目录下的png、jpg图片。步骤如下:
- 到此处申请 API key,一个 key 每个月可以免费压缩500张图片;
- 在该脚本中将申请到到API key 填写进去;
- 将该脚本放入到需要压缩的图片的文件夹下,然后在命令行(终端)中进入到该文件夹,执行即可,生成的文件会存入当前目录下一个名为tiny的文件夹中。
修改原项目代码适配python3,代码如下:
#!/usr/bin/env python
# -*- coding: UTF-8 -*-
import os
import sys
import os.path
import click
import tinify
# 替换这里的api密钥
# api1 = xxxx1
# api2 = xxxx2
tinify.key = "xxxx1"
version = "1.0.1"
# 压缩的核心
def compress_core(inputFile, outputFile, img_width):
source = tinify.from_file(inputFile)
if img_width is not -1:
resized = source.resize(method = "scale", width = img_width)
resized.to_file(outputFile)
else:
source.to_file(outputFile)
# 压缩一个文件夹下的图片
def compress_path(path, width):
print("compress_path-------------------------------------")
if not os.path.isdir(path):
print("这不是一个文件夹,请输入文件夹的正确路径!")
return
else:
fromFilePath = path
toFilePath = path+"/tiny"
print("fromFilePath=%s" %fromFilePath)
print("toFilePath=%s" %toFilePath)
for root, dirs, files in os.walk(fromFilePath):
print("root = %s" %root)
print("dirs = %s" %dirs)
print("files= %s" %files)
for name in files:
fileName, fileSuffix = os.path.splitext(name)
if fileSuffix == '.png' or fileSuffix == '.jpg' or fileSuffix == '.jpeg':
toFullPath = toFilePath + root[len(fromFilePath):]
toFullName = toFullPath + '/' + name
if os.path.isdir(toFullPath):
pass
else:
os.mkdir(toFullPath)
compress_core(root + '/' + name, toFullName, width)
break # 仅遍历当前目录
# 仅压缩指定文件
def compress_file(inputFile, width):
print("compress_file-------------------------------------")
if not os.path.isfile(inputFile):
print("这不是一个文件,请输入文件的正确路径!")
return
print("file = %s" %inputFile)
dirname = os.path.dirname(inputFile)
basename = os.path.basename(inputFile)
fileName, fileSuffix = os.path.splitext(basename)
if fileSuffix == '.png' or fileSuffix == '.jpg' or fileSuffix == '.jpeg':
compress_core(inputFile, dirname+"/tiny_"+basename, width)
else:
print("不支持该文件类型!")
@click.command()
@click.option('-f', "--file", type=str, default=None, help="单个文件压缩")
@click.option('-d', "--dir", type=str, default=None, help="被压缩的文件夹")
@click.option('-w', "--width", type=int, default=-1, help="图片宽度,默认不变")
def run(file, dir, width):
print ("GcsSloop TinyPng V%s" %(version))
if file is not None:
compress_file(file, width) # 仅压缩一个文件
pass
elif dir is not None:
compress_path(dir, width) # 压缩指定目录下的文件
pass
else:
compress_path(os.getcwd(), width) # 压缩当前目录下的文件
print("结束!")
if __name__ == "__main__":
run()