最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python搭建Gitee圖床的示例代碼

 更新時(shí)間:2021年10月17日 14:11:24   作者:《虛幻私塾》  
在寫博客的過(guò)程中經(jīng)常要插入圖片,本文將使用Python實(shí)現(xiàn)對(duì)上傳的圖片自動(dòng)壓縮,自動(dòng)編碼,以及自動(dòng)推送到遠(yuǎn)程倉(cāng)庫(kù),感興趣的可以了解一下

摘要

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

新建倉(cāng)庫(kù)

如果沒(méi)有帳戶,先進(jìn)入Gitee主頁(yè)注冊(cè)賬戶,接著新建倉(cāng)庫(kù),名稱為resource,路徑為res(使用res是為了使圖片鏈接看起來(lái)更加簡(jiǎn)潔)

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

img

然后打開(kāi)服務(wù)選項(xiàng):

img

點(diǎn)擊Gitee Pages:

img

點(diǎn)擊“啟動(dòng)”啟動(dòng)服務(wù):

img

克隆倉(cāng)庫(kù)

在計(jì)算機(jī)中找一個(gè)位置建一個(gè)文件夾,在文件夾中使用Git Bash輸入命令克隆倉(cāng)庫(kù)到本地:

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

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

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

img

獲取TinyPng的"API Key"

進(jìn)入TinyPng的主頁(yè)(https://tinypng.com/),在右上角進(jìn)行注冊(cè):

img

輸入郵箱地址:

img

打開(kāi)郵箱驗(yàn)證,點(diǎn)擊郵件中的"Log in with magic link",點(diǎn)擊剛剛注冊(cè)的地方,選擇"Account page":

img

注冊(cè)成功后會(huì)出現(xiàn)如下頁(yè)面,啟用并復(fù)制"API Key"

img

TinyPng每月支持免費(fèi)轉(zhuǎn)換500張圖片,并且重復(fù)的圖片多次壓縮只算做一次,這對(duì)圖片插入量一般的人來(lái)說(shuō)已經(jīng)足夠了,如果覺(jué)得一個(gè)月500張不夠,又不想花錢,可以多注冊(cè)幾個(gè)號(hào)

安裝需要的Python包

腳本需要用到兩個(gè)包:tinifyGitPython

打開(kāi)cmd命令提示符,輸入安裝指令:

pip install --upgrade tinify
pip install gitpython

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

編寫Python腳本

在與res同級(jí)的目錄下新建upload.py

img

用python的IDE打開(kāi)該py文件寫入如下代碼:

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

repo = Repo('./res') #創(chuàng)建版本庫(kù)對(duì)象
tinify.key = '****************' #在此粘貼剛剛復(fù)制的API Key

exts = ['.png','.jpg','.bmp'] #支持的圖像格式
compression = ['.png','.jpg'] #支持壓縮的圖像格式
srcdir = './temp' #源文件夾
dstdir = './res/upload_images' #目標(biāo)文件夾
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) #隨機(jī)8位16進(jìn)制編碼
        result = os.path.join(dstdir,name + ext)
        if not os.path.exists(result):
            break #目標(biāo)路徑不存在則可以移動(dòng)圖片
    return result

def main():
    f = open('./output.txt','w') #打開(kāi)輸出文件
    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 #不是文件則跳過(guò)
        ext=os.path.splitext(srcpath)[-1].lower() #獲取文件擴(kuò)展名
        if ext not in exts:
            continue #不是支持的圖像格式則跳過(guò)
        dstpath = auto_code(ext)
        if ext in compression:
            tinify.from_file(srcpath).to_file(srcpath) #壓縮文件
            shutil.move(srcpath,dstpath) #移動(dòng)文件
            print('成功壓縮并移動(dòng):' + os.path.basename(srcpath))
        else:
            shutil.move(srcpath,dstpath) #移動(dòng)文件
            print('成功移動(dòng):' + os.path.basename(srcpath))
        f.write(os.path.basename(srcpath) + ':![](' + url + os.path.basename(dstpath) + ')\n') #將原始文件名和與之對(duì)應(yīng)的圖片網(wǎng)址寫入txt文件
    f.close()
    print('輸出文件output.txt已生成')
    print(repo.git.add('--all')) #添加全部更改
    print(repo.git.commit('-m upload images')) #提交
    print(repo.remote().push('master')) #推送
    print('已推送至遠(yuǎn)程倉(cāng)庫(kù),python即將退出')
    time.sleep(1)

if __name__ == '__main__':
    main()

測(cè)試功能

將圖片復(fù)制到temp文件夾,運(yùn)行upload.py,在其運(yùn)行完畢后打開(kāi)Gitee Pages服務(wù)進(jìn)行更新,然后打開(kāi)output.txt,復(fù)制里面的Markdown語(yǔ)句至Markdown編輯器即可看見(jiàn)圖片

到此這篇關(guān)于Python搭建Gitee圖床的示例代碼的文章就介紹到這了,更多相關(guān)Python搭建Gitee圖床內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Python 分析Nginx訪問(wèn)日志并保存到MySQL數(shù)據(jù)庫(kù)實(shí)例

    Python 分析Nginx訪問(wèn)日志并保存到MySQL數(shù)據(jù)庫(kù)實(shí)例

    這篇文章主要介紹了Python 分析Nginx訪問(wèn)日志并保存到MySQL數(shù)據(jù)庫(kù)實(shí)例,需要的朋友可以參考下
    2014-03-03
  • 關(guān)于Flask 上下文詳細(xì)介紹

    關(guān)于Flask 上下文詳細(xì)介紹

    這篇文章主要給大家分享了關(guān)于Flask 上下文詳細(xì)介紹,我們可以把上下文理解為當(dāng)前環(huán)境的快照,是一個(gè)用來(lái)保存狀態(tài)的對(duì)象。在代碼執(zhí)行的某個(gè)時(shí)刻,根據(jù)上下文的代碼邏輯,可以決定在當(dāng)前時(shí)刻下使用到的環(huán)境變量等。下面一起進(jìn)入文章了解詳情內(nèi)容,需要的朋友也可以參考一下
    2021-11-11
  • Python操作qml對(duì)象過(guò)程詳解

    Python操作qml對(duì)象過(guò)程詳解

    這篇文章主要介紹了Python操作qml對(duì)象過(guò)程詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-09-09
  • Python 中@property的用法詳解

    Python 中@property的用法詳解

    這篇文章主要介紹了Python 中@property的用法詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-01-01
  • python-opencv中的cv2.inRange函數(shù)用法說(shuō)明

    python-opencv中的cv2.inRange函數(shù)用法說(shuō)明

    這篇文章主要介紹了python-opencv中的cv2.inRange函數(shù)用法說(shuō)明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2021-04-04
  • Python爬蟲(chóng)PyQuery庫(kù)基本用法入門教程

    Python爬蟲(chóng)PyQuery庫(kù)基本用法入門教程

    這篇文章主要介紹了Python爬蟲(chóng)PyQuery庫(kù)基本用法,結(jié)合實(shí)例形式較為詳細(xì)的分析了pyQuery庫(kù)字符串初始化、打開(kāi)網(wǎng)頁(yè)、css屬性、標(biāo)簽內(nèi)容等獲取、DOM基本操作等相關(guān)技巧與使用注意事項(xiàng),需要的朋友可以參考下
    2018-08-08
  • Python爬蟲(chóng)之自動(dòng)爬取某車之家各車銷售數(shù)據(jù)

    Python爬蟲(chóng)之自動(dòng)爬取某車之家各車銷售數(shù)據(jù)

    應(yīng)朋友要求,幫忙采集某車之家的一些汽車品牌的銷售數(shù)據(jù),包含購(gòu)車時(shí)間、車型、經(jīng)銷商、裸車價(jià)等一類信息. 今天我們就簡(jiǎn)單演示一下采集過(guò)程,大家可以根據(jù)自己的興趣進(jìn)行拓展.比如采集自己喜歡的品牌汽車數(shù)據(jù)進(jìn)行統(tǒng)計(jì)分析等等,需要的朋友可以參考下
    2021-06-06
  • python通過(guò)socket實(shí)現(xiàn)多個(gè)連接并實(shí)現(xiàn)ssh功能詳解

    python通過(guò)socket實(shí)現(xiàn)多個(gè)連接并實(shí)現(xiàn)ssh功能詳解

    這篇文章主要介紹了python通過(guò)socket實(shí)現(xiàn)多個(gè)連接并實(shí)現(xiàn)ssh功能詳解,具有一定參考價(jià)值,需要的朋友可以了解下。
    2017-11-11
  • python把數(shù)據(jù)框?qū)懭隡ySQL的方法

    python把數(shù)據(jù)框?qū)懭隡ySQL的方法

    這篇文章主要介紹了如何讓python把數(shù)據(jù)框?qū)懭隡ySQL,下文利用上海市2016年9月1日公共交通卡刷卡數(shù)據(jù)的一份數(shù)據(jù)單展開(kāi)其方法,需要的小伙伴可以參考一下
    2022-03-03
  • Pyhton自動(dòng)化測(cè)試持續(xù)集成和Jenkins

    Pyhton自動(dòng)化測(cè)試持續(xù)集成和Jenkins

    這篇文章介紹了Pyhton自動(dòng)化測(cè)試持續(xù)集成和Jenkins,對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2022-07-07

最新評(píng)論

洪泽县| 肃北| 荃湾区| 饶河县| 宣城市| 湛江市| 仁怀市| 丹东市| 正蓝旗| 三台县| 通许县| 永嘉县| 遵义县| 北安市| 林口县| 乐山市| 疏附县| 甘南县| 大足县| 铜鼓县| 丁青县| 城固县| 凤山市| 南溪县| 南陵县| 普安县| 泸定县| 谢通门县| 长海县| 沾化县| 碌曲县| 英山县| 南宫市| 车险| 灵台县| 图木舒克市| 高雄县| 观塘区| 昌吉市| 越西县| 景德镇市|