summaryrefslogtreecommitdiff
path: root/scripts/geojson/fetch_all_points.sh
diff options
context:
space:
mode:
Diffstat (limited to 'scripts/geojson/fetch_all_points.sh')
-rwxr-xr-xscripts/geojson/fetch_all_points.sh48
1 files changed, 48 insertions, 0 deletions
diff --git a/scripts/geojson/fetch_all_points.sh b/scripts/geojson/fetch_all_points.sh
new file mode 100755
index 0000000..81c46e0
--- /dev/null
+++ b/scripts/geojson/fetch_all_points.sh
@@ -0,0 +1,48 @@
+#!/bin/bash
+
+json=`curl -s 'https://wiki.linux-forks.de/mediawiki/api.php?action=query&format=json&list=search&redirects=1&converttitles=1&srsearch=%7B%7BCo%7C&srlimit=max&srwhat=text&srprop=snippet'`
+data=`echo "$json" | json_reformat`;
+
+echo "[";
+
+IFS=$'\n';
+for line in $data; do
+ temp=`echo "$line" | sed -n 's/^\s*{\s*$/END/p'`
+ if [[ "$temp" == "END" ]]; then
+ title="";
+ coords="";
+ fi
+ temp=`echo "$line" | sed -n 's/\s*"title": "*\([^"]\+\).*/\1/p'`
+ if [[ "$temp" != "" ]]; then
+ title="$temp";
+ fi
+ temp=`echo "$line" | sed -n 's#.*<span class=.searchmatch.>Co<\/span>|\([0-9\-]\+\)|\([0-9\-]\+\)|\([0-9\-]\+\).*#\1,\3#p'`
+ if [[ "$temp" != "" ]]; then
+ coords="$temp";
+ fi
+ if [[ "$title" != "" && "$coords" != "" ]]; then
+ echo "{\"type\": \"Feature\", \"properties\": {\"name\": \"$title\","
+ echo -n "\"categories\": ["
+ urltitle=`echo "$title" | sed 's/ /%20/g'`
+ cjson=`curl -s "https://wiki.linux-forks.de/mediawiki/api.php?action=query&format=json&titles=$urltitle&prop=categories" | json_reformat -m`
+ categories=`echo "$cjson" | sed -n 's/.*\("categories":[^]]\+\).*/\1/p'`;
+ IFS='}'
+ fc="true";
+ for entry in $categories; do
+ if [[ "$fc" != "true" ]]; then
+ echo -n ",";
+ fi
+ category=`echo "$entry" | sed -n 's/.*Category:\([^"]\+\).*/\1/p'`
+ echo -n "\"$category\"";
+ fc="false";
+ done;
+ IFS=$'\n'
+ echo "]},";
+ echo "\"geometry\": {\"type\": \"Point\", \"coordinates\": [$coords]}},";
+ title="";
+ coords="";
+ fi
+done
+IFS=" ";
+
+echo "{}]";