kakamond's picture
Update app.py
95a0096 verified
raw
history blame
3.42 kB
import os
import requests
import gradio as gr
def create_github_release(
owner: str,
repo: str,
token: str,
release_tag: str,
release_name: str,
release_description: str,
files: list,
):
try:
# 创建 Release
release_response = requests.post(
f"https://api.github.com/repos/{owner}/{repo}/releases",
headers={
"Authorization": f"token {token}",
"Accept": "application/vnd.github.v3+json",
},
json={
"tag_name": release_tag,
"name": release_name,
"body": release_description,
"draft": False,
"prerelease": False,
},
)
if release_response.status_code != 201:
return f"Failed to create release: {release_response.status_code}, {release_response.json()}"
# 获取上传 URL
release = release_response.json()
upload_url = release["upload_url"].split("{")[0]
# 上传多个二进制文件
results = []
for file_path in files:
file_name = os.path.basename(file_path)
with open(file_path, "rb") as binary_file:
upload_response = requests.post(
f"{upload_url}?name={file_name}",
headers={
"Authorization": f"token {token}",
"Content-Type": "application/octet-stream",
},
data=binary_file,
)
if upload_response.status_code == 201:
results.append(f"Binary file '{file_name}' uploaded successfully!")
else:
results.append(
f"Failed to upload binary file '{file_name}': {upload_response.status_code}, {upload_response.json()}"
)
return "\n".join(results)
except Exception as e:
return f"Release failed: {e}"
if __name__ == "__main__":
gr.Interface(
fn=create_github_release,
inputs=[
gr.Textbox(
label="GitHub Owner",
placeholder="username / organization name",
show_copy_button=True,
),
gr.Textbox(
label="GitHub Repo",
placeholder="repo name",
show_copy_button=True,
),
gr.Textbox(
label="GitHub Token",
placeholder="personal access token",
type="password",
),
gr.Textbox(
label="Release Tag",
placeholder="v1.0.0",
show_copy_button=True,
),
gr.Textbox(
label="Release Name",
placeholder="My New Release",
show_copy_button=True,
),
gr.TextArea(
label="Describe this release",
placeholder="Release with binary file(s) and source code.",
show_copy_button=True,
),
gr.File(label="Binary File(s)", file_count="multiple"),
],
outputs=gr.TextArea(label="Status", show_copy_button=True),
title="GitHub Release Creator",
description="Upload binary file(s) to create a new GitHub release.",
flagging_mode="never",
).launch()