Step 0 : Install Joplin and activate the REST API ( https://joplin.cozic.net/api/ ) .
Step 1: Install gmplot with pip
$ pip install gmplot
Collecting gmplot
Downloading https://files.pythonhosted.org/packages/e2/b1/e1429c31a40b3ef5840c16f78b506d03be9f27e517d3870a6fd0b356bd46/gmplot-1.2.0.tar.gz (115kB)
100% |████████████████████████████████| 122kB 1.0MB/s
Requirement already satisfied: requests in /usr/local/lib/python3.7/site-packages (from gmplot) (2.21.0)
Requirement already satisfied: urllib3<1.25,>=1.21.1 in /usr/local/lib/python3.7/site-packages (from requests->gmplot) (1.24.1)
Requirement already satisfied: certifi>=2017.4.17 in /usr/local/lib/python3.7/site-packages (from requests->gmplot) (2018.11.29)
Requirement already satisfied: idna<2.9,>=2.5 in /usr/local/lib/python3.7/site-packages (from requests->gmplot) (2.8)
Requirement already satisfied: chardet<3.1.0,>=3.0.2 in /usr/local/lib/python3.7/site-packages (from requests->gmplot) (3.0.4)
Building wheels for collected packages: gmplot
Building wheel for gmplot (setup.py) ... done
Stored in directory: /Users/...../Library/Caches/pip/wheels/81/6a/76/4dd6a7cc310ba765894159ee84871e8cd55221d82ef14b81a1
Successfully built gmplot
Installing collected packages: gmplot
Successfully installed gmplot-1.2.0
The source code : (change your token)
#
# Version 1
# for Python 3
#
# ARIAS Frederic
# Sorry ... It's difficult for me the python :)
#
from time import gmtime, strftime
import time
import json
import requests
import os
import gmplot
strftime("%Y-%m-%d %H:%M:%S", gmtime())
start = time.time()
#Token
ip = "127.0.0.1"
port = "41184"
token = "Put your token here"
nb_request = 0
nb_plot = 0
headers = {'Content-type': 'application/json', 'Accept': 'text/plain'}
url_notes = (
"http://"+ip+":"+port+"/notes?"
"token="+token
)
x=[] #longitudes
y=[] #latitudes
try:
resp = requests.get(url_notes, headers=headers)
nb_request += 1
resp.raise_for_status()
resp_dict = resp.json()
#print(resp_dict)
for my_note in resp_dict:
#print(my_note.get('id'))
url_notes2 = (
"http://"+ip+":"+port+"/notes/"+my_note.get('id')+"?fields=longitude,latitude&"
"token="+token
)
try:
resp2 = requests.get(url_notes2, headers=headers)
nb_request += 1
resp2.raise_for_status()
resp_dict2 = resp2.json()
#print(resp_dict2)
long = resp_dict2.get('longitude')
lat = resp_dict2.get('latitude')
if (long != '0.00000000'):
#print(long,lat)
nb_plot += 1
if (nb_plot == 1):
gmap1 = gmplot.GoogleMapPlotter(float(lat), float(long), 13 )
x.append(float(long))
y.append(float(lat))
except requests.exceptions.HTTPError as e:
print("Bad HTTP status code:", e)
except requests.exceptions.RequestException as e:
print("Network error:", e)
except requests.exceptions.HTTPError as e:
print("Bad HTTP status code:", e)
except requests.exceptions.RequestException as e:
print("Network error:", e)
gmap1.scatter( y, x, '#FF0000', size = 10, marker = False )
gmap1.draw("mymap.html")
print ("Number total of request",nb_request)
print ("Number total of pin",nb_plot)
After clic on mymap.html on same folder.
Note n°1 : JOPLIN is robust
$ time python3 JoplinToGoogleMap.py
Number total of request 1927
Number total of pin 643
real 0m8.401s
user 0m4.564s
sys 0m0.577s
In 9 seconds, 1927 requests !! JOPLIN it’s perfect.
Note n°2 : To increase the size of the PIN it’s here ( size = 10 ) :
gmap1.scatter( y, x, '#FF0000', size = 10, marker = False )