Files

48 lines
2.3 KiB
Python

import sys, json, urllib.request, urllib.error
gitea_tok = sys.stdin.readline().strip()
gh_tok = sys.stdin.readline().strip()
GITEA="https://git.arch.fyi/api/v1"; GH="https://api.github.com"
def api(base, path, tokhdr, method="GET", body=None, extra=None):
d=json.dumps(body).encode() if body is not None else None
h={"Authorization":tokhdr,"Content-Type":"application/json"}
if extra: h.update(extra)
r=urllib.request.Request(base+path, data=d, method=method, headers=h)
with urllib.request.urlopen(r,timeout=30) as x:
b=x.read(); return json.loads(b) if b else None
def gitea(p,m="GET",b=None): return api(GITEA,p,f"token {gitea_tok}",m,b)
def gh(p,m="GET",b=None): return api(GH,p,f"Bearer {gh_tok}",m,b,{"Accept":"application/vnd.github+json"})
TOPICS=["jellyfin","jellyfin-plugin","skiasharp","dotnet","media-server"]
# 1. create GitHub repo
try:
repo=gh("/user/repos","POST",{"name":"jellyfin-placard",
"description":"Jellyfin plugin: bake library names onto backdrops (Placard)",
"private":False,"has_issues":True,"has_wiki":False,
"homepage":"https://git.arch.fyi/flan/jellyfin-placard"})
print("github repo:", repo.get("full_name"))
except urllib.error.HTTPError as e:
print("gh repo:", e.code, e.read()[:150].decode(errors='replace'))
# github topics
try:
gh("/repos/sudolulo/jellyfin-placard/topics","PUT",{"names":TOPICS}); print("gh topics set")
except urllib.error.HTTPError as e: print("gh topics:", e.code)
# 2. gitea push-mirror -> github
try:
pm=gitea("/repos/flan/jellyfin-placard/push_mirrors","POST",{
"remote_address":"https://github.com/sudolulo/jellyfin-placard.git",
"remote_username":"sudolulo","remote_password":gh_tok,
"sync_on_commit":True,"interval":"8h0m0s"})
print("push-mirror:", pm.get("remote_address"), "sync_on_commit", pm.get("sync_on_commit"))
except urllib.error.HTTPError as e:
print("push_mirror:", e.code, e.read()[:200].decode(errors='replace'))
# gitea topics
try:
gitea("/repos/flan/jellyfin-placard/topics","PUT",{"topics":TOPICS}); print("gitea topics set")
except urllib.error.HTTPError as e: print("gitea topics:", e.code)
# 3. trigger sync
try:
gitea("/repos/flan/jellyfin-placard/push_mirrors-sync","POST"); print("mirror sync triggered")
except urllib.error.HTTPError as e: print("sync:", e.code, e.read()[:150].decode(errors='replace'))