[gimp-web: 1/2] tools: add simple download mirrors checker



commit b1cdebd5c648414d8af9b5da22b1e339409915d3
Author: Michael Schumacher <schumaml gmx de>
Date:   Wed Jun 10 15:30:29 2020 +0200

    tools: add simple download mirrors checker

 tools/downloads/downloads.http.txt    | 19 +++++++++++++++
 tools/downloads/gimp-check-mirrors.py | 45 +++++++++++++++++++++++++++++++++++
 2 files changed, 64 insertions(+)
---
diff --git a/tools/downloads/downloads.http.txt b/tools/downloads/downloads.http.txt
new file mode 100644
index 00000000..cca5b1a0
--- /dev/null
+++ b/tools/downloads/downloads.http.txt
@@ -0,0 +1,19 @@
+https://artfiles.org/gimp.org/pub/gimp/
+https://ftp.acc.umu.se/pub/gimp/gimp/
+https://ftp.cc.uoc.gr/mirrors/gimp/
+https://ftp.fau.de/gimp/gimp/
+https://ftp.gwdg.de/pub/misc/grafik/gimp/
+https://ftp.icm.edu.pl/pub/graphics/gimp/
+https://ftp.lysator.liu.se/pub/gimp/
+https://ftp.snt.utwente.nl/pub/software/gimp/gimp/
+https://gimp.ip-connect.info/gimp/
+https://mirror.jaleco.com/gimp/gimp/
+https://mirror.klaus-uwe.me/gimp/gimp/
+https://mirrors.dotsrc.org/gimp/gimp/
+https://mirrors.syringanetworks.net/gimp/gimp/
+https://mirrors.ukfast.co.uk/sites/gimp.org/pub/gimp/
+https://mirrors.xmission.com/gimp/gimp/
+https://mirror.umd.edu/gimp/gimp/
+https://www.mirrorservice.org/sites/ftp.gimp.org/pub/gimp/
+https://www.nic.funet.fi/pub/mirrors/ftp.gimp.org/
+https://download.gimp.org/pub/gimp/
diff --git a/tools/downloads/gimp-check-mirrors.py b/tools/downloads/gimp-check-mirrors.py
new file mode 100644
index 00000000..9ce840fd
--- /dev/null
+++ b/tools/downloads/gimp-check-mirrors.py
@@ -0,0 +1,45 @@
+#!/usr/bin/env python
+
+import argparse
+import fileinput
+import urllib.request
+from urllib.error import HTTPError
+import concurrent.futures
+
+# argparse for mirrorsfile and uri
+parser = argparse.ArgumentParser(description='Check if GIMP download mirrors have a file from 
download.gimp.org.')
+parser.add_argument('--mirrorsfile', metavar='<file>',
+                    help='A file with one download mirror per line, either https:// or http://. Is expected 
to point to the equivalent of https://download.gimp.org/pub/gimp/, as some mirrors only have that directory 
structure.')
+parser.add_argument('--uri', metavar='<uri>',
+                    help='URI pointing to the file on download.gimp.org, e.g. 
https://download.gimp.org/pub/gimp/v2.10/gimp-2.10.20.tar.bz2')
+
+args = parser.parse_args()
+#print(vars(args))
+
+# get local path
+dgo_uri = args.uri
+dgo_uri_local = dgo_uri.replace('https://download.gimp.org/pub/gimp/', '')
+dgo_uri_local = dgo_uri.replace('https://download.gimp.org/mirror/pub/gimp/', '')
+
+
+def load_url(url, timeout):
+    with urllib.request.urlopen(url, timeout=timeout) as conn:
+        return conn.read()
+
+# read mirrors file
+# fileinput.
+#with concurrent.futures.ThreadPoolExecutor(max_workers=5) as executor:
+with fileinput.input(files=(args.mirrorsfile), mode='r') as f: 
+    for line in f:
+        mirror_uri = line.strip() + dgo_uri_local      
+        request = urllib.request.Request(url=mirror_uri, method='HEAD')
+        
+        # future_to_url = executor.submit(load_url, request, 60)
+
+        #    for future in concurrent.futures.as_completed(future_to_url):          
+        try:
+            #data= future.result()
+            response = urllib.request.urlopen(request)
+            print(str(response.status) + ' : ' + mirror_uri)
+        except HTTPError as error:
+            print(str(error.code) + ' : ' + mirror_uri)


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]