This is a list of Free Software network services and web applications which can be hosted locally. Selfhosting is the process of locally hosting and managing applications instead of renting from SaaS providers.
https://reddit.com/r/selfhosted
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
60 lines
2.1 KiB
60 lines
2.1 KiB
#!/usr/bin/env python3
|
|
|
|
""" A script to find github repo links and last commit dates in a markdown file
|
|
|
|
Requirements:
|
|
- python3 github module (sudo apt install python3-github on Debian)
|
|
- A personal access token (https://github.com/settings/tokens)
|
|
|
|
Usage:
|
|
- Run awesome_bot --allow-redirect -f README.md beforehand to detect any error(4xx, 5xx) that would
|
|
cause the script to abort
|
|
- Github API calls are limited to 5000 requests/hour https://developer.github.com/v3/#rate-limiting
|
|
- Put the token in your environment variables:
|
|
export GITHUB_TOKEN=18c45f8d8d556492d1d877998a5b311b368a76e4
|
|
- The output is unsorted, just pipe it through 'sort' or paste it in your editor and sort from there
|
|
- Put the script in your crontab or run it from time to time. It doesn't make sense to add this
|
|
script to the CI job that runs every time something is pushed.
|
|
- To detect no-commit related activity (repo metadata changes, wiki edits, ...), replace pushed_at
|
|
with updated_at
|
|
|
|
"""
|
|
|
|
from github import Github
|
|
import sys
|
|
import time
|
|
import re
|
|
import os
|
|
|
|
__author__ = "nodiscc"
|
|
__copyright__ = "Copyright 2019, nodiscc"
|
|
__credits__ = ["https://github.com/awesome-selfhosted/awesome-selfhosted"]
|
|
__license__ = "MIT"
|
|
__version__ = "1.0"
|
|
__maintainer__ = "nodiscc"
|
|
__email__ = "nodiscc@gmail.com"
|
|
__status__ = "Production"
|
|
|
|
###############################################################################
|
|
|
|
access_token = os.environ['GITHUB_TOKEN']
|
|
|
|
""" find all URLs of the form https://github.com/owner/repo """
|
|
with open('README.md', encoding="utf8") as readme:
|
|
data = readme.read()
|
|
project_urls = re.findall('https://github.com/[A-z]*/[A-z|0-9|\-|_|\.]+', data)
|
|
|
|
urls = sorted(set(project_urls))
|
|
|
|
""" Uncomment this to debug the list of matched URLs """
|
|
# print(str(urls))
|
|
# exit(0)
|
|
|
|
""" login to github API """
|
|
g = Github(access_token)
|
|
|
|
""" load project metadata, output last commit date and URL """
|
|
for url in urls:
|
|
project = re.sub('https://github.com/', '', url)
|
|
repo = g.get_repo(project)
|
|
print(str(repo.pushed_at) + ' https://github.com/' + project + ' archived:' + str((repo.archived)))
|
|
|