Ich glaube ja, es war eine direkte Abfrage bei GitHub gemeint, da nicht unbedingt jedes Projekt bei PyPI hochgeladen wird. Insofern könnte man naiv über die Version-Tags gehen. GitHub bietet eine Rest API an, die man auch als nicht registrierter User nutzen kann. Allerdings stößt man da schnell ans Rate Limit.
Das folgende Skript fragt alle Repos eines Users ab und zieht sich dann die Tags der einzelnen Repos:
Code: Alles auswählen
#!/usr/bin/env python3
import requests
USER_REPOS_TEMPLATE = "https://api.github.com/users/{}/repos"
REPO_TAGS_TEMPLATE = "https://api.github.com/repos/{}/{}/tags"
def request_json(url):
response = requests.get(url)
response.raise_for_status()
return response.json()
def get_repo_names(user_name):
url = USER_REPOS_TEMPLATE.format(user_name)
return [repo["name"] for repo in request_json(url)]
def get_repo_tags(user, repo):
url = REPO_TAGS_TEMPLATE.format(user, repo)
return [tag["name"] for tag in request_json(url)]
def main():
ovos = "OpenVoiceOS"
for repo in get_repo_names(ovos):
tags = get_repo_tags(ovos, repo)
print(repo, max(tags, default="n/a"))
if __name__ == "__main__":
main()
Das soll natürlich nur ein erster Ansatz sein. Man würde sich die zuletzt abgefragten Tags als JSON-Datei merken und dann bei einer späteren Abfrage schauen, was sich verändert hat. Mit den geänderten Repos füttert man dann entsprechend ``pip``, was sich natürlich auch automatisieren lässt.
Großes Manko: Nur für wenige der Repos von OpenVoiceOS hat die Tag-Abfrage überhaupt geklappt. Das ist somit keinesfalls ein sicheres Kriterium...
EDIT: Und ansonsten gibt es noch einige Treffer, wenn man bei PyPI nach GitHub sucht. Also wohl so Wrapper, die evtl. eine ähnliche Funktionalität bieten (kenne mich da nicht aus). Ob es was Fertiges zum Checken von Updates gibt, weiß ich nicht. Wie gesagt kommt es auch darauf an, wieviel an Info das jeweilige Projekt überhaupt liefert.