【版本控制】GitHub图床服务Action---自动监视图床仓库的目录下的文件数

news/2024/11/19 19:17:00/

文章目录

    • 前言
    • 具体流程
      • 1. 创建GitHub工作流文件
      • 2. 定义工作流
      • 3. 创建`requirements.txt`文件
      • 4. 创建`send_email.py`文件

前言

最近突然想起年前图床仓库发生的一个遗留问题:由于我的网络图床服务是Github + Typora的形式,本地的图片会自动转义成网络图片并存储在图床仓库下,一般我们会指定一个目录进行图片存储,但是由于GitHub设定的单个目录最大存储文件数不能超过1000.

所以在注意到这件事的情况下GitHub的图床仓库就发生了问题:新加入的图片文件由于没有文件位,会自动代替旧的图片文件,这就导致了部分文件的丢失,所以这里想写一个GitHub仓库的自动化Action,每天检测仓库下每个目录下的文件个数,超过999个文件自动给GitHub默认绑定的邮箱发送信息提醒。

具体流程

当每天自动检测仓库中每个目录中的文件数量,并且如果超过999个文件时,自动向与GitHub账户关联的默认邮箱发送消息。

1. 创建GitHub工作流文件

在GitHub仓库中,转到.github/workflows目录并创建一个新文件,比如file_count.yml。该文件将定义运行自动化操作的工作流。

2. 定义工作流

file_count.yml文件中,添加以下代码:

name: File Count Reminderon:schedule:- cron: "0 0 * * *" # Runs every day at midnight UTCjobs:count-files:runs-on: ubuntu-lateststeps:- name: Check out codeuses: actions/checkout@v2- name: Set up Pythonuses: actions/setup-python@v2with:python-version: '3.10' # Replace with the desired Python version- name: Count files and send emailrun: |pip install -r requirements.txtpython send_email.py ${{ secrets.GITHUB_TOKEN }}

3. 创建requirements.txt文件

在GitHub仓库中创建一个名为requirements.txt的文件,并将以下内容添加到文件中:

smtplib

4. 创建send_email.py文件

在GitHub仓库中创建一个名为send_email.py的文件,并将以下代码添加到文件中:

import os
import smtplib
from email.mime.text import MIMEText
from email.header import Headerdef count_files(directory):file_count = 0for root, dirs, files in os.walk(directory):file_count += len(files)return file_countdef send_email(github_token, recipient, file_count):smtp_server = 'smtp.gmail.com'smtp_port = 587subject = 'File Count Reminder'content = f'The repository has {file_count} files.'message = MIMEText(content, 'plain', 'utf-8')message['From'] = Header('GitHub Action')message['To'] = Header(recipient)message['Subject'] = Header(subject)try:server = smtplib.SMTP(smtp_server, smtp_port)server.starttls()server.login('githubaction@gmail.com', github_token)server.sendmail('githubaction@gmail.com', recipient, message.as_string())server.quit()print("Email reminder sent to", recipient)except Exception as e:print("Failed to send email:", str(e))repository_path = '.'  # Replace with the path to your repository if needed
file_limit = 999file_count = count_files(repository_path)
if file_count > file_limit:github_token = os.environ.get('INPUT_GITHUB_TOKEN')default_email = os.environ.get('GITHUB_ACTOR') + '@users.noreply.github.com'send_email(github_token, default_email, file_count)
else:print("The repository has", file_count, "files. No reminder needed.")

使用这些步骤,工作流将每天UTC时间午夜运行,计算仓库中的文件数量,如果文件数量超过999,则会向与GitHub账户关联的默认邮箱发送邮件提醒。


http://www.ppmy.cn/news/124880.html

相关文章

WIN7/8 系统刻录光驱识别为普通CD-ROM的解决方法

新装的WIN8操作系统,准备使用系统自带的刻录功能刻光盘时,发现没法写入,始终是可用空间为0(读取正常,第三方刻录软件识别正常),光驱变成只读的CDROM了,上网查了一大圈也没找到解决方…

光盘显示0字节可用_光盘在,光驱不会死!ORICO外置USB3.0移动光驱刻录机体验

光盘,40年前诞生的高密度存储介质,如今在民用存储领域,早已被大容量U盘、移动硬盘乃至PSSD抢走了风头;而原本装机必选的光驱,也逐渐失宠,主流机箱的光驱位可有可无。不过老司机手里一定还留存着若干张上古刻录盘,Ghost系统盘、软件/游戏盘,CD/DVD老唱片,还有那些婚庆学…

计算机能不能刻录光盘,笔记本电脑怎么不能刻录

在使用笔记本电脑的时候,出现了电脑不能刻录光盘的故障了,遇到这种问题怎么办?下面是学习啦小编为大家整理的关于笔记本电脑不能刻录的相关资料,希望对您有所帮助! 笔记本电脑不能刻录的解决方法 方法一:通常修改注册表来解除光盘…

linux外置光驱调速,买内置不如买外置 五款外置光驱推荐

第1页:超薄刻录王 华硕外置光驱售价仅259元 泡泡网光驱频道11月17日 现在装机的用户已经对光驱的需求越来越小了,主要是因为大家认为光驱的实际意义已经不大了,面对这种情况,大家不如选择外置光驱更合适。 如今的光存储市场中,外置超薄光驱凭着使用和携带方便越来越受用户…

linux确定刻录机目录,在Linux操作系统下使用DVD刻录机(转)

在Linux操作系统下使用DVD刻录机(转)[more]  现在,越来越多的用户开始装备DVD刻录机。在Windows平台上使用DVD刻录机应该不存在什么问题,那么在Linux平台又应该如何使用DVD刻录机呢? 一、安装 要想在Linux环境中使用DVD刻录机,先…

服务器内置usb能否修改为外置,台式机内置的DVD刻录机可以改成外置的USB接口吗?...

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 现在市面上越来越多的客户使用笔记本电脑,或者使用原装机,但这些机器,一般的配备都是CD-ROM或者是DVD-ROM。当这些用户想升级DVD刻录机的时候,USB接口的DVD刻录机就成为了这些用户的…

macos wireshark 抓取https包

1、启动浏览器 1.1 创建空文件 $ touch /Users/zhujl/Downloads/https/mysslkey.log 2、设置wireshark tls属性,指定tls密钥存储文件 2.1 进入Wireshark Preferfences > Protocols > TLS 属性配置 2.2 勾选上Reassemable TLS records spanning multiple …

Linux:apache配置与应用

Linux:apache配置与应用 一、虚拟 Web 主机1.1 虚拟Web主机1.2 httpd服务支持的虚拟主机类型 二、基于域名的虚拟主机2.1 为虚拟主机提供域名解析2.2 为虚拟主机准备网页文档2.3 添加虚拟主机配置2.4 设置访问控制2.5 加载独立的配置文件2.6 在客户机中访问虚拟 Web…