Utilice la API de Github para hacer de Github una estación de transferencia de datos de red estable y conveniente

Prefacio

Como biblioteca de alojamiento de código estable, github se puede utilizar como una estación de transferencia de datos gratuita para realizar el almacenamiento de datos, la actualización automática, el acceso, etc.

Lo que es más gratificante es que existen bibliotecas de Python listas para usar para completar la encapsulación de la api de github, y podemos usar directamente la biblioteca encapsulada.

Yo uso: Pygithub, documentación del proyecto: https://pygithub.readthedocs.io/en/latest/introduction.html

Este método también se puede utilizar como rastreador de github para acceder automáticamente al contenido de los proyectos públicos de github.

Cómo instalar la biblioteca:

pip3 install pygithub

Cómo utilizar la biblioteca:

Solicitar token de acceso

Para usar la API de github, primero debe tener una cuenta de github o un token de acceso de github. La contraseña de la cuenta de github es fácil de obtener, pero esto no es seguro, y es fácil filtrar accidentalmente el nombre de usuario y la contraseña a otros; por lo tanto, recomendamos usar el token de acceso para acceder a la API de gitHub, y este access_token también es fácil de administrar.

Primero ingrese a la interfaz de configuración de github, haga clic en "Configuración de desarrollador"

Inserte la descripción de la imagen aquíLuego seleccione el token de acceso personal,
Inserte la descripción de la imagen aquí
haga clic en "Generar nuevo token" para crear un nuevo access_token.
Inserte la descripción de la imagen aquí
Selecciona los permisos requeridos, y luego dale un nombre, aquí solo seleccionamos todos los permisos del repositorio de código.
Inserte la descripción de la imagen aquí
Después de seleccionar, haga clic en el botón generar en la parte inferior, y luego podrá ver el access_token generado.
Guarda este access_token. Después de actualizar github de nuevo, esta cadena ya no se mostrará. Si la olvidas, solo podrás volver a solicitarla.
Inserte la descripción de la imagen aquí

Usar API

Iniciar sesión en Github

__author__ = 'jmh081701'
from github import Github
import config
git = Github(login_or_token=config.config['access_token'])

Visita el repositorio de Github

##得到指定仓库
repo = git.get_repo("jmhIcoding/datastore")
##输出仓库的一些信息
##输出主题
print(repo.get_topics())
##显示这个仓库的stars数目
print(repo.stargazers_count)

[Verificar] el archivo especificado del repositorio de Github especificado

contents= repo.get_contents(path="README.md")

Si el archivo no existe, la ejecución de esta función generará una excepción:

github.GithubException.UnknownObjectException: 404 {
    
    "message": "Not Found", "documentation_url": "https://docs.github.com/rest/reference/repos#get-repository-content"}

De lo contrario, la devolución es un github.ContentFile.ContentFileobjeto.
Algunos métodos y propiedades importantes en este objeto:

Nombre del Atributo sentido
tipo Tipo de archivo, valor: archivo o directorio
Talla Tamaño del archivo
nombre nombre del archivo
sendero Ruta de archivo
contenido Contenido del archivo, el resultado de la codificación base64
contenido_descodificado Contenido del archivo, resultado de la decodificación base64
download_url Enlace de descarga de archivos

Visitar:

print(contents.type)
print(contents.size)
print(contents.name)
print(contents.path)
print(contents.content)
print(contents.decoded_content)
print(contents.download_url)

Resultado de salida:

file
40
README.md
README.md
IyBkYXRhc3RvcmUK5Z+65LqOZ2l0aHVi55qE5pWw5o2u5Lit6L2sCg==

b'# datastore\n\xe5\x9f\xba\xe4\xba\x8egithub\xe7\x9a\x84\xe6\x95\xb0\xe6\x8d\xae\xe4\xb8\xad\xe8\xbd\xac\n'
https://raw.githubusercontent.com/jmhIcoding/datastore/main/README.md?token=AESR3WOCTZT5A4OAY5637W27TDPYK

Si el contenido del archivo es chino, después de la decodificación base64, preste atención a usar utf para decodificar una vez.

print(base64.b64decode(contents.content).decode('utf8'))

Producción:

# datastore
基于github的数据中转

[Agregar] Agregar un nuevo archivo Github

Complete la ruta del archivo, la información enviada: mensaje y contenido.
Tenga en cuenta que es mejor no tener espacios en el mensaje

repo.create_file(path="test.txt",message="commit_msg",content='test content')

Después de la ejecución, vemos que el almacén ya tiene este archivo:
Inserte la descripción de la imagen aquí
otra ruta de archivo no admite la creación de una nueva carpeta.

[Cambiar] Modificar el contenido del archivo Github

Obtenga el archivo primero y luego llame a la función update_file.

content = repo.get_contents('test.txt')
repo.update_file(path=content.path,message='update_msg',content='new content',sha=content.sha)

Preste atención al parámetro sha dentro y use content.sha para obtenerlo. Este sha se rellena con el valor hash del archivo reemplazado. Esto es para una confirmación adicional.

[Eliminar] Eliminar archivo Github

Obtenga el archivo primero, luego elimínelo

content = repo.get_contents("text.txt")
repo.delete_file(path=content.path,message='delete',sha=content.sha)

La función get_contents anterior se puede conectar al parámetro "ref". La función de este parámetro es indicar qué rama y etiqueta es el archivo. El valor predeterminado es la rama maestra.

El nombre de la confirmación / rama / etiqueta. Predeterminado: la rama predeterminada del repositorio (generalmente maestra)

Supongo que te gusta

Origin blog.csdn.net/jmh1996/article/details/109327334
Recomendado
Clasificación