diff --git a/README.md b/README.md index ce9bf83..db718f2 100644 --- a/README.md +++ b/README.md @@ -19,7 +19,6 @@ even if the date relies on a specific file in their repo, we can still find the to find repos of the mirrored projects to check, just search "projectName mirrors" not done: -CRAN csclub CTAN damnsmalllinux @@ -50,6 +49,7 @@ archlinux centos ceph CPAN +CRAN: https://cran.r-project.org/mirmon_report.html has a mirror tracker Cygwin debian debian-cd diff --git a/data.json b/data.json index 3435602..eb0d118 100644 --- a/data.json +++ b/data.json @@ -7,7 +7,7 @@ "file": "almalinux/TIME" }, "Alpine": { - "out_of_sync_since": null, + "out_of_sync_since": 1633923341, "out_of_sync_interval": 86400, "csc": "", "upstream": "https://uk.alpinelinux.org/", @@ -21,7 +21,7 @@ "file": "zzz/time.txt" }, "Arch": { - "out_of_sync_since": null, + "out_of_sync_since": 1633923341, "out_of_sync_interval": 86400, "csc": "archlinux/", "upstream": "http://arch.mirror.constant.com/", @@ -66,7 +66,7 @@ "file": "debian-cd/project/trace/cdimage.debian.org" }, "DebianMultimedia": { - "out_of_sync_since": 1633340186, + "out_of_sync_since": null, "out_of_sync_interval": 86400, "csc": "debian-multimedia/", "upstream": "http://debian-mirrors.sdinet.de/deb-multimedia/", @@ -80,7 +80,7 @@ "file": "debian-ports/project/trace/porta.debian.org" }, "DebianSecurity": { - "out_of_sync_since": 1633337502, + "out_of_sync_since": null, "out_of_sync_interval": 86400, "csc": "", "upstream": "http://debian.mirror.iweb.ca/", @@ -94,7 +94,7 @@ "file": "TIME" }, "Fedora": { - "out_of_sync_since": null, + "out_of_sync_since": 1633923341, "out_of_sync_interval": 86400, "csc": "fedora/", "upstream": "http://fedora.mirror.iweb.com/", @@ -193,7 +193,7 @@ "file": "" }, "vlc": { - "out_of_sync_since": 1633298732, + "out_of_sync_since": null, "out_of_sync_interval": 86400, "csc": "vlc/", "upstream": "http://download.videolan.org/pub/videolan/", @@ -249,7 +249,7 @@ "file": "MIRROR-TIMESTAMP" }, "qtproject": { - "out_of_sync_since": 1633340186, + "out_of_sync_since": null, "out_of_sync_interval": 86400, "csc": "qtproject/", "upstream": "https://download.qt.io/", @@ -289,5 +289,12 @@ "csc": "", "upstream": "https://launchpad.net/ubuntu/+mirror/mirror.csclub.uwaterloo.ca-release", "file": "" + }, + "cran": { + "out_of_sync_since": null, + "out_of_sync_interval": 86400, + "csc": "", + "upstream": "https://cran.r-project.org/mirmon_report.html", + "file": "" } } \ No newline at end of file diff --git a/main.py b/main.py index d525828..e11dda4 100644 --- a/main.py +++ b/main.py @@ -67,7 +67,7 @@ if __name__ == "__main__": print(f"Failure: {project} does not exist") continue project_class = getattr(sys.modules[__name__], project) - if project == "CPAN" or project == "ubuntu" or project == "ubuntu_releases" or project == "manjaro" or project == "mxlinux" or project == "mxlinux_iso" or project == "slackware" or project == "trisquel": + if project == "CPAN" or project == "ubuntu" or project == "ubuntu_releases" or project == "manjaro" or project == "mxlinux" or project == "mxlinux_iso" or project == "slackware" or project == "trisquel" or project == "cran": checker_result = project_class.check(data, project, current_time) if checker_result: print(f"Success: {project} up-to-date") diff --git a/projects/cran.py b/projects/cran.py new file mode 100644 index 0000000..185cf46 --- /dev/null +++ b/projects/cran.py @@ -0,0 +1,26 @@ +""" +Contains cran class +""" + +import os +from project import Project +from shared import CSC_MIRROR +import requests +import datefinder # another date finding library +from datetime import timedelta +from datetime import datetime +import re +import pandas as pd + +class cran(Project): + """cran class""" + @staticmethod + def check(data, project, current_time): + page = requests.get(data[project]["upstream"]).text + indexOfFile = page.find("mirror.csclub.uwaterloo.ca") + + m = re.search(r'(\d+ hour)|(\d+ hours)|(\d+(\.)?\d+ days)', page[indexOfFile:]) # solution from: https://stackoverflow.com/questions/21074100/how-to-convert-standard-timedelta-string-to-timedelta-object/21074460 + + duration = pd.to_timedelta(m.group(0)) + + return duration <= pd.to_timedelta(data[project]["out_of_sync_interval"], unit='s') \ No newline at end of file