一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

腳本之家,腳本語言編程技術及教程分享平臺!
分類導航

Python|VBS|Ruby|Lua|perl|VBA|Golang|PowerShell|Erlang|autoit|Dos|bat|

服務器之家 - 腳本之家 - Python - Python搭建Gitee圖床的示例代碼

Python搭建Gitee圖床的示例代碼

2022-01-26 11:04《虛幻私塾》 Python

在寫博客的過程中經常要插入圖片,本文將使用Python實現對上傳的圖片自動壓縮,自動編碼,以及自動推送到遠程倉庫,感興趣的可以了解一下

 

摘要

在寫博客的過程中經常要插入圖片,許多博客平臺提供了圖片上傳的服務,但是不能保證長期有效,不同平臺還不能通用,所以要通過搭建統一的圖床來實現。有用服務器作為圖床和第三方圖床,前者限制多,需要備案,后者不是很可靠,而用代碼托管平臺做圖床,既穩定可靠沒有很大限制,而且數據實現同步,即使云端的數據丟失了,本地還有備份,而在中國,為了提升訪問速度,我們并不選取GitHub做圖床,而是選擇了Gitee,本文將使用Python實現對上傳的圖片自動壓縮,自動編碼,以及自動推送到遠程倉庫,但由于Gitee的限制,最后仍需要手動對Gitee Pages進行更新

 

新建倉庫

如果沒有帳戶,先進入Gitee主頁注冊賬戶,接著新建倉庫,名稱為resource,路徑為res(使用res是為了使圖片鏈接看起來更加簡潔)

新建完成后需要初始化Readme.md文件,同時復制地址(為了使用Gitee Pages服務):

Python搭建Gitee圖床的示例代碼

然后打開服務選項:

Python搭建Gitee圖床的示例代碼

點擊Gitee Pages:

Python搭建Gitee圖床的示例代碼

點擊“啟動”啟動服務:

Python搭建Gitee圖床的示例代碼

 

克隆倉庫

在計算機中找一個位置建一個文件夾,在文件夾中使用Git Bash輸入命令克隆倉庫到本地:

git clone https://gitee.com/xxx/xxx.git

克隆完成后在本地生成了一個名為res的文件夾,此時可以刪除文件夾中的Readme.md文件,在res文件夾中新建空文件夾upload_images

在與res同級的目錄下新建空文件夾temp用于存放待上傳的文件:

Python搭建Gitee圖床的示例代碼

 

獲取TinyPng的"API Key"

進入TinyPng的主頁(https://tinypng.com/),在右上角進行注冊:

Python搭建Gitee圖床的示例代碼

輸入郵箱地址:

Python搭建Gitee圖床的示例代碼

打開郵箱驗證,點擊郵件中的"Log in with magic link",點擊剛剛注冊的地方,選擇"Account page":

Python搭建Gitee圖床的示例代碼

注冊成功后會出現如下頁面,啟用并復制"API Key"

Python搭建Gitee圖床的示例代碼

TinyPng每月支持免費轉換500張圖片,并且重復的圖片多次壓縮只算做一次,這對圖片插入量一般的人來說已經足夠了,如果覺得一個月500張不夠,又不想花錢,可以多注冊幾個號

 

安裝需要的Python包

腳本需要用到兩個包:tinifyGitPython

打開cmd命令提示符,輸入安裝指令:

pip install --upgrade tinify
pip install gitpython

如果失敗可以嘗試本地安裝

 

編寫Python腳本

在與res同級的目錄下新建upload.py

Python搭建Gitee圖床的示例代碼

用python的IDE打開該py文件寫入如下代碼:

import random
import time
import os
import shutil
from git import Repo
import tinify

repo = Repo("./res") #創建版本庫對象
tinify.key = "****************" #在此粘貼剛剛復制的API Key

exts = [".png",".jpg",".bmp"] #支持的圖像格式
compression = [".png",".jpg"] #支持壓縮的圖像格式
srcdir = "./temp" #源文件夾
dstdir = "./res/upload_images" #目標文件夾
url = "https://xxx.gitee.io/res/upload_images/" #圖床路徑(末尾必須加“/”),將xxx替換成自己的用戶名

def random_hex(length):
    result = hex(random.randint(0,16**length)).replace("0x","").lower()
    if(len(result)<length):
        result = "0"*(length-len(result))+result
    return result

def auto_code(ext):
    while True:
        name = random_hex(8) #隨機8位16進制編碼
        result = os.path.join(dstdir,name + ext)
        if not os.path.exists(result):
            break #目標路徑不存在則可以移動圖片
    return result

def main():
    f = open("./output.txt","w") #打開輸出文件
    list = os.listdir(srcdir) #列出文件夾下所有的目錄與文件
    for i in range(0,len(list)):
        srcpath = os.path.join(srcdir,list[i])
        if not os.path.isfile(srcpath):
            continue #不是文件則跳過
        ext=os.path.splitext(srcpath)[-1].lower() #獲取文件擴展名
        if ext not in exts:
            continue #不是支持的圖像格式則跳過
        dstpath = auto_code(ext)
        if ext in compression:
            tinify.from_file(srcpath).to_file(srcpath) #壓縮文件
            shutil.move(srcpath,dstpath) #移動文件
            print("成功壓縮并移動:" + os.path.basename(srcpath))
        else:
            shutil.move(srcpath,dstpath) #移動文件
            print("成功移動:" + os.path.basename(srcpath))
        f.write(os.path.basename(srcpath) + ":![](" + url + os.path.basename(dstpath) + ")
") #將原始文件名和與之對應的圖片網址寫入txt文件
    f.close()
    print("輸出文件output.txt已生成")
    print(repo.git.add("--all")) #添加全部更改
    print(repo.git.commit("-m upload images")) #提交
    print(repo.remote().push("master")) #推送
    print("已推送至遠程倉庫,python即將退出")
    time.sleep(1)

if __name__ == "__main__":
    main()

 

測試功能

將圖片復制到temp文件夾,運行upload.py,在其運行完畢后打開Gitee Pages服務進行更新,然后打開output.txt,復制里面的Markdown語句至Markdown編輯器即可看見圖片

到此這篇關于Python搭建Gitee圖床的示例代碼的文章就介紹到這了,更多相關Python搭建Gitee圖床內容請搜索服務器之家以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持服務器之家!

原文鏈接:https://blog.csdn.net/biggbang/article/details/120799457

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 猫咪maomiav永久网址 | 欧美成人乱弄视频 | 国产高清国内精品福利 | 我的好妈妈7中字在线观看韩国 | 国产精品九九久久一区hh | 波多野结衣中文丝袜字幕 | 调教校花浣肠开菊 | 人人九九精 | 亚洲国产情侣偷自在线二页 | 国产伦精品一区二区三区女 | 变态np虐高h | 青草青青在线视频观看 | 日本一道本视频 | 狠狠的撞击发泄h | 欧美va在线观看 | 美女黄金大片视频免费看 | www黄| 亚洲上最大成网人站4438 | 国产成人精品曰本亚洲77美色 | 欧美性色老妇人 | 欧美日韩国产手机在线观看视频 | 美女校花被调教出奶水 | 嗯啊在线观看免费影院 | 91专区| 视频一区在线免费观看 | 久久精品国产视频澳门 | 大陆国产vs国产对白 | 免费人成在线观看 | 四虎永久免费地址ww417 | 久久全国免费久久青青小草 | 国产成人精品免费视频大全五级 | caoporn草棚在线视频 | 国产亚洲精品美女久久久 | 门卫老张和女警花小说 | 小黄文污到你湿 | 大陆国语自产精品视频在 | 亚洲国产综合精品 | 视频一区在线免费观看 | 男人天堂色男人 | 人与动人物aaaa | 国产免费午夜高清 |