<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Joplin on Blog GoHugo de Fredô : Linux, Proxmox, IA, Trail, Course, Randonnée, Gravel, Ski de Randonnée</title>
    <link>https://move.cyber-neurones.org/tags/joplin/</link>
    <description>Recent content in Joplin on Blog GoHugo de Fredô : Linux, Proxmox, IA, Trail, Course, Randonnée, Gravel, Ski de Randonnée</description>
    <generator>Hugo</generator>
    <language>fr</language>
    <lastBuildDate>Wed, 22 Jan 2020 00:00:00 +0000</lastBuildDate>
    <atom:link href="https://move.cyber-neurones.org/tags/joplin/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Joplin : des appels à api.ipify.org (API de géolocalisation des IP)</title>
      <link>https://move.cyber-neurones.org/post/2020/01/2020-01-22-joplin-des-appels-a-api-ipify-org-api-de-geolocalisation-des-ip/</link>
      <pubDate>Wed, 22 Jan 2020 00:00:00 +0000</pubDate>
      <guid>https://move.cyber-neurones.org/post/2020/01/2020-01-22-joplin-des-appels-a-api-ipify-org-api-de-geolocalisation-des-ip/</guid>
      <description>&lt;p&gt;J&amp;rsquo;ai pu voir des appels à l&amp;rsquo;API : api.ipify.org&lt;/p&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://www.cyber-neurones.org/wp-content/uploads/2020/01/capture-decran-2020-01-22-a-08-19-20.png&#34;&gt;&lt;img src=&#34;images/capture-decran-2020-01-22-a-08-19-20-1024x497.png&#34; alt=&#34;&#34;&gt;&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;Il y a donc l&amp;rsquo;utilisation d&amp;rsquo;une API pour la géolocalisation des IP. Je sais pas si c&amp;rsquo;est très bien &amp;hellip;&lt;/p&gt;&#xA;&lt;p&gt;A suivre.&lt;/p&gt;</description>
    </item>
    <item>
      <title>JOPLIN : Script to rename tacitpart file</title>
      <link>https://move.cyber-neurones.org/post/2019/11/2019-11-23-joplin-script-to-rename-tacitpart-file/</link>
      <pubDate>Sat, 23 Nov 2019 00:00:00 +0000</pubDate>
      <guid>https://move.cyber-neurones.org/post/2019/11/2019-11-23-joplin-script-to-rename-tacitpart-file/</guid>
      <description>&lt;p&gt;My script to rename tacitpart file :&lt;/p&gt;&#xA;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;#!/bin/bash&#xA;  &#xA;# ARIAS Frederic&#xA;#&#xA;# For MAC OS do&#xA;#&#xA;&#xA;suffix=&amp;#34;.tacitpart&amp;#34;&#xA;path=&amp;#34;WebDAV&amp;#34;&#xA;&#xA;for file in $path/*.tacitpart&#xA;do&#xA;    if [[ -f $file ]]; then&#xA;&#x9;filenew=$(basename $file $suffix)&#xA;        echo $file&amp;#34; -&amp;gt; &amp;#34;$filenew &#xA;&#x9;mv $file $path/$filenew&#xA;&#x9;touch $path/$filenew&#xA;    fi&#xA;done&#xA;&#xA;# &#xA;for file in $path/.resource/*.tacitpart&#xA;do&#xA;    if [[ -f $file ]]; then&#xA;&#x9;$filenew = ${file/%$suffix}&#xA;        echo $file.&amp;#34; -&amp;gt; &amp;#34;.$filenew&#xA;        mv $file $path/.resource/$filenew&#xA;        touch $path/.resource/$filenew&#xA;    fi&#xA;done&lt;/code&gt;&lt;/pre&gt;</description>
    </item>
    <item>
      <title>Joplin &amp; WebDav en HTTP : Recherche d&#39;une solution ...</title>
      <link>https://move.cyber-neurones.org/post/2019/09/2019-09-08-joplin-webdav-en-http-recherche-dune-solution/</link>
      <pubDate>Sun, 08 Sep 2019 00:00:00 +0000</pubDate>
      <guid>https://move.cyber-neurones.org/post/2019/09/2019-09-08-joplin-webdav-en-http-recherche-dune-solution/</guid>
      <description>&lt;p&gt;J&amp;rsquo;ai découvert ce superbe logiciel : Joplin, et je l&amp;rsquo;ai utilisé de façon intensive jusqu&amp;rsquo;à ce que le WebDav en HTTP ne soit plus possible. Ensuite cela a été la galère pour synchroniser les notes. J&amp;rsquo;ai cru pendant un moment que le problème allait être rapidement corriger &amp;hellip; mais non. Mon précédent POST sur le problème : &lt;a href=&#34;https://www.cyber-neurones.org/2019/07/android-joplin-synchronisation-webdav-en-http-est-hs/&#34;&gt;https://www.cyber-neurones.org/2019/07/android-joplin-synchronisation-webdav-en-http-est-hs/&lt;/a&gt; . Le problème est ouvert depuis le 17 juin, et on est le 8 septembre &amp;hellip;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Android &amp; Joplin : Synchronisation WebDAV en HTTP est HS</title>
      <link>https://move.cyber-neurones.org/post/2019/07/2019-07-17-android-joplin-synchronisation-webdav-en-http-est-hs/</link>
      <pubDate>Wed, 17 Jul 2019 00:00:00 +0000</pubDate>
      <guid>https://move.cyber-neurones.org/post/2019/07/2019-07-17-android-joplin-synchronisation-webdav-en-http-est-hs/</guid>
      <description>&lt;p&gt;Depuis deux versions il est impossible de faire une synchronisation via WebDAV , j&amp;rsquo;ai même essayé avec une clef privé ou une clef publique mais cela n&amp;rsquo;a pas fonctionné.&lt;/p&gt;&#xA;&lt;p&gt;Les deux versions de Joplin pour Android (je conseille donc de ne pas faire la mise à jours) : &lt;a href=&#34;https://play.google.com/store/apps/details?id=net.cozic.joplin&amp;amp;hl=fr&#34;&gt;https://play.google.com/store/apps/details?id=net.cozic.joplin&amp;amp;hl=fr&lt;/a&gt;&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;1.0.271.&lt;/li&gt;&#xA;&lt;li&gt;1.0.281.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;J&amp;rsquo;ai ouvert un ticket mais dans réelle solution : &lt;a href=&#34;https://discourse.joplinapp.org/t/webdav-not-work-with-last-release-of-android/2696&#34;&gt;https://discourse.joplinapp.org/t/webdav-not-work-with-last-release-of-android/2696&lt;/a&gt; :&lt;/p&gt;&#xA;&lt;blockquote&gt;&#xA;&lt;p&gt;Hi, Since the last update of Joplin, I can’t sync with WebDAV. I put a tcpdump on port of WebDAV but I don’t see any request … I try to remove and reinstall the app, but I have a same issue. How I can have more logs on Joplin (Android) ? Thanks. Frédéric.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Python : How to clean ressources of Joplin not used ?</title>
      <link>https://move.cyber-neurones.org/post/2019/03/2019-03-01-python-how-to-clean-ressources-of-joplin-not-used/</link>
      <pubDate>Fri, 01 Mar 2019 00:00:00 +0000</pubDate>
      <guid>https://move.cyber-neurones.org/post/2019/03/2019-03-01-python-how-to-clean-ressources-of-joplin-not-used/</guid>
      <description>&lt;p&gt;Here the script in Python : &lt;a href=&#34;https://github.com/CYBERNEURONES/Python/blob/master/JoplinCleanRessource.py&#34;&gt;https://github.com/CYBERNEURONES/Python/blob/master/JoplinCleanRessource.py&lt;/a&gt;&lt;/p&gt;&#xA;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;#&#xA;# Version 1 &#xA;# for Python 3&#xA;# &#xA;#   ARIAS Frederic&#xA;#   Sorry ... It&amp;#39;s difficult for me the python :)&#xA;#&#xA;&#xA;from time import gmtime, strftime&#xA;import time&#xA;import json&#xA;import requests&#xA;import os&#xA;import sqlite3&#xA;import re&#xA;&#xA;#conn = sqlite3.connect(&amp;#39;my_db.db&amp;#39;)&#xA;find_this = &amp;#34;\(:/&amp;#34;&#xA;&#xA;#c = conn.cursor()&#xA;#c.execute(&amp;#39;&amp;#39;&amp;#39;DROP TABLE LINK&amp;#39;&amp;#39;&amp;#39;)&#xA;#conn.commit()&#xA;#c.execute(&amp;#39;&amp;#39;&amp;#39;CREATE TABLE LINK (ID_NOTE text, ID_RESOURCE text, CHECKSUM_MD5 text)&amp;#39;&amp;#39;&amp;#39;)&#xA;#conn.commit()&#xA;&#xA;#IP&#xA;ip = &amp;#34;127.0.0.1&amp;#34;&#xA;port = &amp;#34;41184&amp;#34;&#xA;token = &amp;#34;Put the token here&amp;#34;&#xA;nb_request = 0&#xA;my_body = &amp;#34;&amp;#34;&#xA;headers = {&amp;#39;Content-type&amp;#39;: &amp;#39;application/json&amp;#39;, &amp;#39;Accept&amp;#39;: &amp;#39;text/plain&amp;#39;}&#xA;url_notes = (&#xA;    &amp;#34;http://&amp;#34;+ip+&amp;#34;:&amp;#34;+port+&amp;#34;/notes?&amp;#34;&#xA;    &amp;#34;token=&amp;#34;+token&#xA;)&#xA;nb_total_ressource = 0&#xA;nb_local_ressource = 0&#xA;ALL_ID = {}&#xA;try:&#xA;    resp = requests.get(url_notes, headers=headers)&#xA;    nb_request += 1&#xA;    resp.raise_for_status()&#xA;    resp_dict = resp.json()&#xA;    #print(resp_dict)&#xA;    for my_note in resp_dict:&#xA;        nb_local_ressource = 0&#xA;        my_body = my_note.get(&amp;#39;body&amp;#39;)&#xA;        my_ressource = [m.start() for m in re.finditer(find_this, my_body)]&#xA;        for my_ressource_x in my_ressource:&#xA;             nb_total_ressource += 1&#xA;             nb_local_ressource += 1&#xA;             my_ressource_id = my_body[my_ressource_x+3:my_ressource_x+32+3]&#xA;             print(nb_local_ressource,&amp;#34;:&amp;#34;,my_note.get(&amp;#39;id&amp;#39;),&amp;#34;:&amp;#34;,my_ressource_id)&#xA;             ALL_ID[my_ressource_id]=my_note.get(&amp;#39;id&amp;#39;)&#xA;             &#xA;             #c.execute(sql_request)&#xA;             #conn.commit()&#xA;except requests.exceptions.HTTPError as e:&#xA;    print(&amp;#34;Bad HTTP status code:&amp;#34;, e)&#xA;except requests.exceptions.RequestException as e:&#xA;    print(&amp;#34;Network error:&amp;#34;, e)&#xA;&#xA;nb_keep = 0&#xA;nb_remove = 0&#xA;url_resources = (&#xA;    &amp;#34;http://&amp;#34;+ip+&amp;#34;:&amp;#34;+port+&amp;#34;/resources?&amp;#34;&#xA;    &amp;#34;token=&amp;#34;+token&#xA;)&#xA;try:&#xA;    resp = requests.get(url_resources, headers=headers)&#xA;    nb_request += 1&#xA;    resp.raise_for_status()&#xA;    resp_dict = resp.json()&#xA;    #print(resp_dict)&#xA;    for my_resource in resp_dict:&#xA;        my_id = my_resource.get(&amp;#39;id&amp;#39;)&#xA;        if my_id in ALL_ID:&#xA;            print(&amp;#34;Keep for notes&amp;#34;,ALL_ID[my_id])&#xA;            nb_keep += 1&#xA;        else:&#xA;            print(&amp;#34;Remove&amp;#34;);&#xA;            nb_remove += 1&#xA;            url_resources_delete = (&#xA;    &amp;#34;http://&amp;#34;+ip+&amp;#34;:&amp;#34;+port+&amp;#34;/resources/&amp;#34;+my_id+&amp;#34;?&amp;#34;&#xA;    &amp;#34;token=&amp;#34;+token&#xA;)&#xA;            try:&#xA;                 resp2 = requests.delete(url_resources_delete, headers=headers)&#xA;                 resp.raise_for_status()&#xA;                 nb_request += 1&#xA;            except requests.exceptions.HTTPError as e:&#xA;                 print(&amp;#34;Bad HTTP status code:&amp;#34;, e)&#xA;            except requests.exceptions.RequestException as e:&#xA;                 print(&amp;#34;Network error:&amp;#34;, e)&#xA;except requests.exceptions.HTTPError as e:&#xA;    print(&amp;#34;Bad HTTP status code:&amp;#34;, e)&#xA;except requests.exceptions.RequestException as e:&#xA;    print(&amp;#34;Network error:&amp;#34;, e)&#xA;&#xA;#conn.close()&#xA;print(&amp;#34;nb_request&amp;#34;,nb_request,&amp;#34;nb_total_ressource : &amp;#34;,nb_total_ressource,&amp;#34; nb_local_ressource : &amp;#34;,nb_local_ressource)&#xA;print(&amp;#34;nb_keep&amp;#34;,nb_keep,&amp;#34;nb_remove&amp;#34;,nb_remove);&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;p&gt;Here the result :&lt;/p&gt;</description>
    </item>
    <item>
      <title>Joplin : Je suis heureux de recevoir le badge &#34;New User of the Month&#34;</title>
      <link>https://move.cyber-neurones.org/post/2019/02/2019-02-23-joplin-je-suis-heureux-de-recevoir-le-badge-new-user-of-the-month/</link>
      <pubDate>Sat, 23 Feb 2019 00:00:00 +0000</pubDate>
      <guid>https://move.cyber-neurones.org/post/2019/02/2019-02-23-joplin-je-suis-heureux-de-recevoir-le-badge-new-user-of-the-month/</guid>
      <description>&lt;p&gt;Il reste encore du travail à faire &amp;hellip; mais cette application est vraiment très bien. J&amp;rsquo;ai fait énormément de test avec beaucoup de donnée, et je n&amp;rsquo;ai pas eu de problème.&lt;/p&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://www.cyber-neurones.org/wp-content/uploads/2019/02/capture-decran-2019-02-18-a-18-36-23.png&#34;&gt;&lt;img src=&#34;images/capture-decran-2019-02-18-a-18-36-23-300x214.png&#34; alt=&#34;&#34;&gt;&lt;/a&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Joplin : version v1.0.127</title>
      <link>https://move.cyber-neurones.org/post/2019/02/2019-02-15-joplin-version-v1-0-127/</link>
      <pubDate>Fri, 15 Feb 2019 00:00:00 +0000</pubDate>
      <guid>https://move.cyber-neurones.org/post/2019/02/2019-02-15-joplin-version-v1-0-127/</guid>
      <description>&lt;p&gt;La nouvelle version arrive avec quelques fix et des améliorations :&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;img src=&#34;images/capture-decran-2019-02-15-a-08-58-54.png&#34; alt=&#34;&#34;&gt;&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;img src=&#34;images/capture-decran-2019-02-15-a-09-05-31.png&#34; alt=&#34;&#34;&gt;&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;On peut même faire du KaTeX !&lt;/p&gt;</description>
    </item>
    <item>
      <title>Joplin : Très robuste, et avec une API REST ! Mais que demande le peuple ? Plus d&#39;open source</title>
      <link>https://move.cyber-neurones.org/post/2019/02/2019-02-14-joplin-tres-robuste-et-avec-une-api-rest-mais-que-demande-le-peuple-plus-dopen-source/</link>
      <pubDate>Thu, 14 Feb 2019 00:00:00 +0000</pubDate>
      <guid>https://move.cyber-neurones.org/post/2019/02/2019-02-14-joplin-tres-robuste-et-avec-une-api-rest-mais-que-demande-le-peuple-plus-dopen-source/</guid>
      <description>&lt;p&gt;J&amp;rsquo;ai voulu tester Joplin &lt;a href=&#34;https://joplin.cozic.net&#34;&gt;https://joplin.cozic.net&lt;/a&gt; entièrement, pas seulement la synchronisation de 2 ou 3 fichiers.&lt;/p&gt;&#xA;&lt;p&gt;J&amp;rsquo;ai donc fait une base de 2465 notes, et 9787 images :&lt;/p&gt;&#xA;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;: &amp;#34;Total folders: 32&amp;#34;&#xA;: &amp;#34;Total notes: 2465&amp;#34;&#xA;: &amp;#34;Total resources: 9787&amp;#34;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;p&gt;Mon fichier WebDEV :&lt;/p&gt;&#xA;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;$ du -sh WebDAV/&#xA;2,7G&#x9;WebDAV/&#xA;$ ls -l WebDAV/*.md | wc -l&#xA;-bash: /bin/ls: Argument list too long&#xA;       0&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;p&gt;Il y a tellement de fichier que la commande &amp;ldquo;ls&amp;rdquo; plante :) , en fait il y a &lt;strong&gt;13051 fichiers&lt;/strong&gt; pour &lt;strong&gt;2,7 Go&lt;/strong&gt;. Le fichier le plus gros fait 13 Ko.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Python : How to do a Word Cloud with data (Title or body) in Joplin ?</title>
      <link>https://move.cyber-neurones.org/post/2019/02/2019-02-14-how-to-do-a-word-cloud-with-title-or-boby-in-joplin/</link>
      <pubDate>Thu, 14 Feb 2019 00:00:00 +0000</pubDate>
      <guid>https://move.cyber-neurones.org/post/2019/02/2019-02-14-how-to-do-a-word-cloud-with-title-or-boby-in-joplin/</guid>
      <description>&lt;p&gt;&lt;strong&gt;Step 0&lt;/strong&gt; : Install Joplin and activate the REST API ( &lt;a href=&#34;https://joplin.cozic.net/api/&#34;&gt;https://joplin.cozic.net/api/&lt;/a&gt; ) .&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;Step 1&lt;/strong&gt;: Install &lt;strong&gt;nltk and worldcloud&lt;/strong&gt; with pip ( for more information see &lt;a href=&#34;https://www.datacamp.com/community/tutorials/wordcloud-python&#34;&gt;https://www.datacamp.com/community/tutorials/wordcloud-python&lt;/a&gt; )&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;Step 3.a&lt;/strong&gt; : Run this scripts for Title (change the token)&lt;/p&gt;&#xA;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;#&#xA;# Version 1 &#xA;# for Python 3&#xA;# &#xA;#   ARIAS Frederic&#xA;#   Sorry ... It&amp;#39;s difficult for me the python :)&#xA;#&#xA;&#xA;from time import gmtime, strftime&#xA;import time&#xA;import json&#xA;import requests&#xA;import os&#xA;import nltk&#xA;nltk.download(&amp;#39;punkt&amp;#39;)&#xA;nltk.download(&amp;#39;stopwords&amp;#39;)&#xA;from nltk.tokenize import word_tokenize&#xA;from nltk.corpus import stopwords&#xA;from wordcloud import WordCloud&#xA;import numpy as np&#xA;import matplotlib.pyplot as plt&#xA;&#xA;#IP&#xA;ip = &amp;#34;127.0.0.1&amp;#34;&#xA;#Port&#xA;port = &amp;#34;41184&amp;#34;&#xA;#Token&#xA;token = &amp;#34;Put your token here&amp;#34;&#xA;nb_request = 0&#xA;my_title = &amp;#34;&amp;#34;&#xA;headers = {&amp;#39;Content-type&amp;#39;: &amp;#39;application/json&amp;#39;, &amp;#39;Accept&amp;#39;: &amp;#39;text/plain&amp;#39;}&#xA;url_notes = (&#xA;    &amp;#34;http://&amp;#34;+ip+&amp;#34;:&amp;#34;+port+&amp;#34;/notes?&amp;#34;&#xA;    &amp;#34;token=&amp;#34;+token&#xA;)&#xA;try:&#xA;    resp = requests.get(url_notes, headers=headers)&#xA;    nb_request += 1&#xA;    resp.raise_for_status()&#xA;    resp_dict = resp.json()&#xA;    #print(resp_dict)&#xA;    for my_note in resp_dict:&#xA;        #print(my_note.get(&amp;#39;id&amp;#39;))&#xA;        my_title += my_note.get(&amp;#39;title&amp;#39;)&#xA;except requests.exceptions.HTTPError as e:&#xA;    print(&amp;#34;Bad HTTP status code:&amp;#34;, e)&#xA;except requests.exceptions.RequestException as e:&#xA;    print(&amp;#34;Network error:&amp;#34;, e)&#xA;&#xA;# Create a word cloud image&#xA;stopwords = stopwords.words(&amp;#39;french&amp;#39;)&#xA;wc = WordCloud(background_color=&amp;#34;white&amp;#34;, max_words=5000, stopwords=stopwords, contour_width=3, contour_color=&amp;#39;firebrick&amp;#39;)&#xA;wc.generate(my_title)&#xA;wc.to_file(&amp;#34;jopling_title.png&amp;#34;)&#xA;plt.figure(figsize=[18,8])&#xA;plt.imshow(wc, interpolation=&amp;#39;bilinear&amp;#39;)&#xA;plt.axis(&amp;#34;off&amp;#34;)&#xA;plt.show()&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;p&gt;&lt;strong&gt;Step 3.b&lt;/strong&gt; : Run this scripts for Body (change the token)&lt;/p&gt;</description>
    </item>
    <item>
      <title>Python : How to migrate data of Awesome Note 2 (bridworks.com) to Joplin ?</title>
      <link>https://move.cyber-neurones.org/post/2019/02/2019-02-14-python-how-to-migrate-data-of-awesome-note-bridworks-com-to-joplin/</link>
      <pubDate>Thu, 14 Feb 2019 00:00:00 +0000</pubDate>
      <guid>https://move.cyber-neurones.org/post/2019/02/2019-02-14-python-how-to-migrate-data-of-awesome-note-bridworks-com-to-joplin/</guid>
      <description>&lt;p&gt;Awesome Note 2, it&amp;rsquo;s very popular on iPad :&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;images/capture-decran-2019-02-14-a-19-34-52-1024x565.png&#34; alt=&#34;&#34;&gt;&lt;/p&gt;&#xA;&lt;blockquote&gt;&#xA;&lt;p&gt;The new All-in-one Organizer, Awesome Note 2 is integrated with note and schedule management.&lt;br&gt;&#xA;And now it’s available!!&lt;/p&gt;&#xA;&lt;p&gt;WONDERFUL WRITING FEATURES&lt;br&gt;&#xA;· It can be used not only for simple notes, but also rich and wonderful writing tool.&lt;br&gt;&#xA;· Make notes even more powerful to add photos, voice recording and drawings.&lt;br&gt;&#xA;· Easily create diary notes to display feeling, weather or road map information.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Joplin &amp; Python ( gmplot Google Map)  : How to create a Maps with REST API and data in Joplin ?</title>
      <link>https://move.cyber-neurones.org/post/2019/02/2019-02-13-joplin-python-gmplot-google-map-how-to-create-a-maps-with-rest-api-and-data-in-joplin/</link>
      <pubDate>Wed, 13 Feb 2019 00:00:00 +0000</pubDate>
      <guid>https://move.cyber-neurones.org/post/2019/02/2019-02-13-joplin-python-gmplot-google-map-how-to-create-a-maps-with-rest-api-and-data-in-joplin/</guid>
      <description>&lt;p&gt;&lt;strong&gt;Step 0&lt;/strong&gt; : Install Joplin and activate the REST API ( &lt;a href=&#34;https://joplin.cozic.net/api/&#34;&gt;https://joplin.cozic.net/api/&lt;/a&gt; ) .&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;Step 1&lt;/strong&gt;: Install gmplot with pip&lt;/p&gt;&#xA;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;$ pip install gmplot&#xA;Collecting gmplot&#xA;  Downloading https://files.pythonhosted.org/packages/e2/b1/e1429c31a40b3ef5840c16f78b506d03be9f27e517d3870a6fd0b356bd46/gmplot-1.2.0.tar.gz (115kB)&#xA;    100% |████████████████████████████████| 122kB 1.0MB/s &#xA;Requirement already satisfied: requests in /usr/local/lib/python3.7/site-packages (from gmplot) (2.21.0)&#xA;Requirement already satisfied: urllib3&amp;lt;1.25,&amp;gt;=1.21.1 in /usr/local/lib/python3.7/site-packages (from requests-&amp;gt;gmplot) (1.24.1)&#xA;Requirement already satisfied: certifi&amp;gt;=2017.4.17 in /usr/local/lib/python3.7/site-packages (from requests-&amp;gt;gmplot) (2018.11.29)&#xA;Requirement already satisfied: idna&amp;lt;2.9,&amp;gt;=2.5 in /usr/local/lib/python3.7/site-packages (from requests-&amp;gt;gmplot) (2.8)&#xA;Requirement already satisfied: chardet&amp;lt;3.1.0,&amp;gt;=3.0.2 in /usr/local/lib/python3.7/site-packages (from requests-&amp;gt;gmplot) (3.0.4)&#xA;Building wheels for collected packages: gmplot&#xA;  Building wheel for gmplot (setup.py) ... done&#xA;  Stored in directory: /Users/...../Library/Caches/pip/wheels/81/6a/76/4dd6a7cc310ba765894159ee84871e8cd55221d82ef14b81a1&#xA;Successfully built gmplot&#xA;Installing collected packages: gmplot&#xA;Successfully installed gmplot-1.2.0&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;p&gt;The source code : (change your token)&lt;/p&gt;</description>
    </item>
    <item>
      <title>Joplin &amp; Python ( Static Map )  : How to create a Maps (JPEG) with REST API and data in Joplin ?</title>
      <link>https://move.cyber-neurones.org/post/2019/02/2019-02-13-joplin-python-static-map-how-to-create-a-maps-jpeg-with-rest-api-and-data-in-joplin/</link>
      <pubDate>Wed, 13 Feb 2019 00:00:00 +0000</pubDate>
      <guid>https://move.cyber-neurones.org/post/2019/02/2019-02-13-joplin-python-static-map-how-to-create-a-maps-jpeg-with-rest-api-and-data-in-joplin/</guid>
      <description>&lt;p&gt;&lt;strong&gt;Step 0&lt;/strong&gt; : Install Joplin and activate the REST API ( &lt;a href=&#34;https://joplin.cozic.net/api/&#34;&gt;https://joplin.cozic.net/api/&lt;/a&gt; ) .&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;Step 1&lt;/strong&gt;: Install staticmap with pip ( for more information see &lt;a href=&#34;https://github.com/komoot/staticmap&#34;&gt;https://github.com/komoot/staticmap&lt;/a&gt; )&lt;/p&gt;&#xA;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;$ pip install staticmap&#xA;Collecting staticmap&#xA;  Downloading https://files.pythonhosted.org/packages/f9/9f/5a3843533eab037cba031486175c4db1b214614404a29516208ff228dead/staticmap-0.5.4.tar.gz&#xA;Collecting Pillow (from staticmap)&#xA;  Downloading https://files.pythonhosted.org/packages/c9/ed/27cc92e99b9ccaa0985a66133baeea7e8a3371d3c04cfa353aaa3b81aac1/Pillow-5.4.1-cp37-cp37m-macosx_10_6_intel.macosx_10_9_intel.macosx_10_9_x86_64.macosx_10_10_intel.macosx_10_10_x86_64.whl (3.7MB)&#xA;    100% |████████████████████████████████| 3.7MB 6.3MB/s &#xA;Requirement already satisfied: requests in /usr/local/lib/python3.7/site-packages (from staticmap) (2.21.0)&#xA;Requirement already satisfied: chardet&amp;lt;3.1.0,&amp;gt;=3.0.2 in /usr/local/lib/python3.7/site-packages (from requests-&amp;gt;staticmap) (3.0.4)&#xA;Requirement already satisfied: idna&amp;lt;2.9,&amp;gt;=2.5 in /usr/local/lib/python3.7/site-packages (from requests-&amp;gt;staticmap) (2.8)&#xA;Requirement already satisfied: urllib3&amp;lt;1.25,&amp;gt;=1.21.1 in /usr/local/lib/python3.7/site-packages (from requests-&amp;gt;staticmap) (1.24.1)&#xA;Requirement already satisfied: certifi&amp;gt;=2017.4.17 in /usr/local/lib/python3.7/site-packages (from requests-&amp;gt;staticmap) (2018.11.29)&#xA;Building wheels for collected packages: staticmap&#xA;  Building wheel for staticmap (setup.py) ... done&#xA;  Stored in directory: /Users/..../Library/Caches/pip/wheels/fe/a6/a5/2acceb72471d85bd0498973aabd611e6ff1cdd48796790f047&#xA;Successfully built staticmap&#xA;Installing collected packages: Pillow, staticmap&#xA;Successfully installed Pillow-5.4.1 staticmap-0.5.4&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;p&gt;The source code :&lt;/p&gt;</description>
    </item>
    <item>
      <title>How to import data of Wordpress (Feed RSS) to Joplin ?</title>
      <link>https://move.cyber-neurones.org/post/2019/02/2019-02-12-how-to-import-data-of-wordpress-feed-rss-to-joplin/</link>
      <pubDate>Tue, 12 Feb 2019 00:00:00 +0000</pubDate>
      <guid>https://move.cyber-neurones.org/post/2019/02/2019-02-12-how-to-import-data-of-wordpress-feed-rss-to-joplin/</guid>
      <description>&lt;p&gt;Install JOPLIN : &lt;a href=&#34;https://joplin.cozic.net&#34;&gt;https://joplin.cozic.net ,&lt;/a&gt;  and start REST API. (Easy)&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;Step 1 :&lt;/strong&gt; Put this script in folder.&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;Step 2&lt;/strong&gt; : Edit the script and put your token &lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;Step 3&lt;/strong&gt; : Run the script&lt;/p&gt;&#xA;&lt;p&gt;The script :&lt;/p&gt;&#xA;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;#&#xA;# Version 1 &#xA;# for Python 3&#xA;# &#xA;#   ARIAS Frederic&#xA;#   Sorry ... It&amp;#39;s difficult for me the python :)&#xA;#&#xA;&#xA;import feedparser&#xA;from os import listdir&#xA;from pathlib import Path&#xA;import glob&#xA;import csv&#xA;import locale&#xA;import os&#xA;import time&#xA;from datetime import datetime&#xA;import json&#xA;import requests&#xA;&#xA;#Token&#xA;ip = &amp;#34;127.0.0.1&amp;#34;&#xA;port = &amp;#34;41184&amp;#34;&#xA;token = &amp;#34;Put your token here&amp;#34;&#xA;&#xA;nb_import = 0;&#xA;headers = {&amp;#39;Content-type&amp;#39;: &amp;#39;application/json&amp;#39;, &amp;#39;Accept&amp;#39;: &amp;#39;text/plain&amp;#39;}&#xA;&#xA;url_notes = (&#xA;    &amp;#34;http://&amp;#34;+ip+&amp;#34;:&amp;#34;+port+&amp;#34;/notes?&amp;#34;&#xA;    &amp;#34;token=&amp;#34;+token&#xA;)&#xA;url_folders = (&#xA;    &amp;#34;http://&amp;#34;+ip+&amp;#34;:&amp;#34;+port+&amp;#34;/folders?&amp;#34;&#xA;    &amp;#34;token=&amp;#34;+token&#xA;)&#xA;url_tags = (&#xA;    &amp;#34;http://&amp;#34;+ip+&amp;#34;:&amp;#34;+port+&amp;#34;/tags?&amp;#34;&#xA;    &amp;#34;token=&amp;#34;+token&#xA;)&#xA;url_ressources = (&#xA;    &amp;#34;http://&amp;#34;+ip+&amp;#34;:&amp;#34;+port+&amp;#34;/ressources?&amp;#34;&#xA;    &amp;#34;token=&amp;#34;+token&#xA;)&#xA;&#xA;#Init&#xA;Wordpress_UID = &amp;#34;12345678901234567801234567890123&amp;#34;&#xA;UID = {}&#xA;&#xA;payload = {&#xA;    &amp;#34;id&amp;#34;:Wordpress_UID,&#xA;    &amp;#34;title&amp;#34;:&amp;#34;Wordpress Import&amp;#34;&#xA;}&#xA;&#xA;try:&#xA;    resp = requests.post(url_folders, data=json.dumps(payload, separators=(&amp;#39;,&amp;#39;,&amp;#39;:&amp;#39;)), headers=headers)&#xA;    resp.raise_for_status()&#xA;    resp_dict = resp.json()&#xA;    print(resp_dict)&#xA;    print(&amp;#34;My ID&amp;#34;)&#xA;    print(resp_dict[&amp;#39;id&amp;#39;])&#xA;    Wordpress_UID_real = resp_dict[&amp;#39;id&amp;#39;]&#xA;    save = str(resp_dict[&amp;#39;id&amp;#39;])&#xA;    UID[Wordpress_UID]= save&#xA;except requests.exceptions.HTTPError as e:&#xA;    print(&amp;#34;Bad HTTP status code:&amp;#34;, e)&#xA;except requests.exceptions.RequestException as e:&#xA;    print(&amp;#34;Network error:&amp;#34;, e)&#xA;&#xA;feed = feedparser.parse(&amp;#34;https://www.cyber-neurones.org/feed/&amp;#34;)&#xA;&#xA;feed_title = feed[&amp;#39;feed&amp;#39;][&amp;#39;title&amp;#39;]&#xA;feed_entries = feed.entries&#xA;&#xA;numero = -2&#xA;nb_entries = 1&#xA;nb_metadata_import = 1&#xA;&#xA;while nb_entries &amp;gt; 0 : &#xA;  print (&amp;#34;----- Page &amp;#34;,numero,&amp;#34;-------&amp;#34;)&#xA;  numero += 2&#xA;  url = &amp;#34;https://www.cyber-neurones.org/feed/?paged=&amp;#34;+str(numero)&#xA;  feed = feedparser.parse(url)&#xA;  feed_title = feed[&amp;#39;feed&amp;#39;][&amp;#39;title&amp;#39;]&#xA;  feed_entries = feed.entries&#xA;  nb_entries = len(feed[&amp;#39;entries&amp;#39;])&#xA;  for entry in feed.entries:&#xA;     nb_metadata_import += 1&#xA;     my_title = entry.title&#xA;     my_link = entry.link&#xA;     article_published_at = entry.published # Unicode string&#xA;     article_published_at_parsed = entry.published_parsed # Time object&#xA;     article_author = entry.author&#xA;     timestamp = time.mktime(entry.published_parsed)*1000&#xA;     print(&amp;#34;Published at &amp;#34;+article_published_at)&#xA;     my_body = entry.description&#xA;     payload_note = {&#xA;         &amp;#34;parent_id&amp;#34;:Wordpress_UID_real,&#xA;         &amp;#34;title&amp;#34;:my_title,&#xA;         &amp;#34;source&amp;#34;:&amp;#34;Wordpress&amp;#34;,&#xA;         &amp;#34;source_url&amp;#34;:my_link,&#xA;         &amp;#34;order&amp;#34;:nb_metadata_import,&#xA;         &amp;#34;user_created_time&amp;#34;:timestamp,&#xA;         &amp;#34;user_updated_time&amp;#34;:timestamp,&#xA;         &amp;#34;author&amp;#34;:article_author,&#xA;         &amp;#34;body_html&amp;#34;:my_body&#xA;         }&#xA;     payload_note_put = {&#xA;         &amp;#34;source&amp;#34;:&amp;#34;Wordpress&amp;#34;,&#xA;         &amp;#34;order&amp;#34;:nb_metadata_import,&#xA;         &amp;#34;source_url&amp;#34;:my_link,&#xA;         &amp;#34;user_created_time&amp;#34;:timestamp,&#xA;         &amp;#34;user_updated_time&amp;#34;:timestamp,&#xA;         &amp;#34;author&amp;#34;:article_author&#xA;         }&#xA;&#xA;     try:&#xA;         resp = requests.post(url_notes, json=payload_note)&#xA;         resp.raise_for_status()&#xA;         resp_dict = resp.json()&#xA;         print(resp_dict)&#xA;         print(resp_dict[&amp;#39;id&amp;#39;])&#xA;         myuid= resp_dict[&amp;#39;id&amp;#39;]&#xA;     except requests.exceptions.HTTPError as e:&#xA;         print(&amp;#34;Bad HTTP status code:&amp;#34;, e)&#xA;     except requests.exceptions.RequestException as e:&#xA;         print(&amp;#34;Network error:&amp;#34;, e)&#xA;&#xA;     url_notes_put = (&#xA;    &amp;#34;http://&amp;#34;+ip+&amp;#34;:&amp;#34;+port+&amp;#34;/notes/&amp;#34;+myuid+&amp;#34;?&amp;#34;&#xA;    &amp;#34;token=&amp;#34;+token&#xA;)&#xA;     try:&#xA;         resp = requests.put(url_notes_put, json=payload_note_put)&#xA;         resp.raise_for_status()&#xA;         resp_dict = resp.json()&#xA;         print(resp_dict)&#xA;     except requests.exceptions.HTTPError as e:&#xA;         print(&amp;#34;Bad HTTP status code:&amp;#34;, e)&#xA;     except requests.exceptions.RequestException as e:&#xA;         print(&amp;#34;Network error:&amp;#34;, e)&lt;/code&gt;&lt;/pre&gt;</description>
    </item>
    <item>
      <title>Diaro App (PIXEL CRATER LTD) : DiaroBackup.xml : How to migrate data to JOPLIN ?</title>
      <link>https://move.cyber-neurones.org/post/2019/02/2019-02-11-diaro-app-pixel-crater-ltd-diarobackup-xml-how-to-migrate-data-to-joplin/</link>
      <pubDate>Mon, 11 Feb 2019 00:00:00 +0000</pubDate>
      <guid>https://move.cyber-neurones.org/post/2019/02/2019-02-11-diaro-app-pixel-crater-ltd-diarobackup-xml-how-to-migrate-data-to-joplin/</guid>
      <description>&lt;p&gt;Link to Diaro App : &lt;a href=&#34;https://diaroapp.com&#34;&gt;https://diaroapp.com&lt;/a&gt; .&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Android : &lt;a href=&#34;https://play.google.com/store/apps/details?id=com.pixelcrater.Diaro&amp;amp;hl=fr&#34;&gt;https://play.google.com/store/apps/details?id=com.pixelcrater.Diaro&amp;amp;hl=fr .&lt;/a&gt; (76 580 users )&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;&lt;img src=&#34;images/capture-decran-2019-02-11-a-17-49-31.png&#34; alt=&#34;&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;But to many tracking !!!&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;images/screenshot_20190206_130214-537x1024.jpg&#34; alt=&#34;&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;Link to JOPLIN : &lt;a href=&#34;https://joplin.cozic.net/&#34;&gt;https://joplin.cozic.net/&lt;/a&gt; , and the REST API : &lt;a href=&#34;https://joplin.cozic.net/api/&#34;&gt;https://joplin.cozic.net/api/&lt;/a&gt;&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Android : &lt;a href=&#34;https://play.google.com/store/apps/details?id=net.cozic.joplin&amp;amp;hl=fr&#34;&gt;https://play.google.com/store/apps/details?id=net.cozic.joplin&amp;amp;hl=fr&lt;/a&gt;: 435 users.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;Step 1 : Add in first ligne : &lt;strong&gt;&lt;!-- raw HTML omitted --&gt;&lt;/strong&gt; before &lt;strong&gt;&lt;!-- raw HTML omitted --&gt;&lt;/strong&gt; in file &lt;strong&gt;DiaroBackup.xml&lt;/strong&gt; … it’s mandatory !&lt;/p&gt;&#xA;&lt;p&gt;My note for REST API :&lt;/p&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;Not possible to choose the ID on folder.&lt;/li&gt;&#xA;&lt;li&gt;Not possible to choose the ID on tags.&lt;/li&gt;&#xA;&lt;li&gt;Not possible to do PUT on note to add at the end of text : [&lt;code&gt;](:/ID_RESOURCE)&lt;/code&gt;. The syntax : PUT /ressources/ID_RESSOURCE/notes/ID_NOTE?token=…” . It&amp;rsquo;s more simple &amp;hellip;.&lt;/li&gt;&#xA;&lt;li&gt;Not possible to add ID of tags instead text on Notes (POST).&lt;/li&gt;&#xA;&lt;li&gt;Not possible to create NOTE with &amp;ldquo;user_created_time&amp;rdquo; (POST) , it&amp;rsquo;s mandatory to do PUT.&lt;/li&gt;&#xA;&lt;li&gt;Not possible to change &amp;ldquo;user_updated_time&amp;rdquo; with PUT.&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;p&gt;After install python3 ( it&amp;rsquo;s easy &amp;hellip; and run this script), note put your token in the script.&lt;/p&gt;</description>
    </item>
    <item>
      <title>How to import data of Google&#43; to Joplin ?</title>
      <link>https://move.cyber-neurones.org/post/2019/02/2019-02-11-how-to-import-data-of-google-to-joplin/</link>
      <pubDate>Mon, 11 Feb 2019 00:00:00 +0000</pubDate>
      <guid>https://move.cyber-neurones.org/post/2019/02/2019-02-11-how-to-import-data-of-google-to-joplin/</guid>
      <description>&lt;p&gt;Install JOPLIN : &lt;a href=&#34;https://joplin.cozic.net&#34;&gt;https://joplin.cozic.net ,&lt;/a&gt;  and start REST API.&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;Step 1 :&lt;/strong&gt; Download all with &lt;a href=&#34;https://takeout.google.com&#34;&gt;https://takeout.google.com&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;Step 2 :&lt;/strong&gt; Uncompress and put all on same folder.&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;Step 3 :&lt;/strong&gt; Put this script in folder.&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;Step 4&lt;/strong&gt; : Edit the script and put your token&lt;/p&gt;&#xA;&lt;p&gt;The script :&lt;/p&gt;&#xA;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;#&#xA;# Version 1 &#xA;# for Python 3&#xA;# &#xA;#   ARIAS Frederic&#xA;#   Sorry ... It&amp;#39;s difficult for me the python :)&#xA;#&#xA;&#xA;from os import listdir&#xA;from pathlib import Path&#xA;import glob&#xA;import csv&#xA;import locale&#xA;import os&#xA;import time&#xA;from datetime import datetime&#xA;import json&#xA;import requests&#xA;&#xA;nb_metadata = 0&#xA;nb_metadata_import = 0&#xA;def month_string_to_number(string):&#xA;    m = {&#xA;        &amp;#39;janv.&amp;#39;: 1,&#xA;        &amp;#39;feb.&amp;#39;: 2,&#xA;        &amp;#39;févr.&amp;#39;: 2,&#xA;        &amp;#39;mar.&amp;#39;: 3,&#xA;        &amp;#39;mars&amp;#39;: 3,&#xA;        &amp;#39;apr.&amp;#39;:4,&#xA;        &amp;#39;avr.&amp;#39;:4,&#xA;         &amp;#39;may.&amp;#39;:5,&#xA;         &amp;#39;mai&amp;#39;:5,&#xA;         &amp;#39;juin&amp;#39;:6,&#xA;         &amp;#39;juil.&amp;#39;:7,&#xA;         &amp;#39;aug.&amp;#39;:8,&#xA;         &amp;#39;août&amp;#39;:8,&#xA;         &amp;#39;sept.&amp;#39;:9,&#xA;         &amp;#39;oct.&amp;#39;:10,&#xA;         &amp;#39;nov.&amp;#39;:11,&#xA;         &amp;#39;déc.&amp;#39;:12&#xA;        }&#xA;    s = string.strip()[:5].lower()&#xA;&#xA;    try:&#xA;        out = m[s]&#xA;        return out&#xA;    except:&#xA;        raise ValueError(&amp;#39;Not a month&amp;#39;)&#xA;&#xA;locale.setlocale(locale.LC_TIME, &amp;#39;fr_FR.UTF-8&amp;#39;)&#xA;#today = datetime.date.today()&#xA;#print(today.strftime(&amp;#39;The date :%d %b. %Y à %H:%M:%S UTC&amp;#39;))&#xA;from time import strftime,localtime&#xA;print(localtime())&#xA;print(strftime(&amp;#34;%H:%M:%S, %d %b. %Y&amp;#34;,localtime()))&#xA;date = datetime.strptime(&amp;#39;2017-05-04&amp;#39;,&amp;#34;%Y-%m-%d&amp;#34;)&#xA;&#xA;#Token&#xA;ip = &amp;#34;127.0.0.1&amp;#34;&#xA;port = &amp;#34;41184&amp;#34;&#xA;token = &amp;#34;Put your token here&amp;#34;&#xA;&#xA;nb_import = 0;&#xA;headers = {&amp;#39;Content-type&amp;#39;: &amp;#39;application/json&amp;#39;, &amp;#39;Accept&amp;#39;: &amp;#39;text/plain&amp;#39;}&#xA;&#xA;url_notes = (&#xA;    &amp;#34;http://&amp;#34;+ip+&amp;#34;:&amp;#34;+port+&amp;#34;/notes?&amp;#34;&#xA;    &amp;#34;token=&amp;#34;+token&#xA;)&#xA;url_folders = (&#xA;    &amp;#34;http://&amp;#34;+ip+&amp;#34;:&amp;#34;+port+&amp;#34;/folders?&amp;#34;&#xA;    &amp;#34;token=&amp;#34;+token&#xA;)&#xA;url_tags = (&#xA;    &amp;#34;http://&amp;#34;+ip+&amp;#34;:&amp;#34;+port+&amp;#34;/tags?&amp;#34;&#xA;    &amp;#34;token=&amp;#34;+token&#xA;)&#xA;url_ressources = (&#xA;    &amp;#34;http://&amp;#34;+ip+&amp;#34;:&amp;#34;+port+&amp;#34;/ressources?&amp;#34;&#xA;    &amp;#34;token=&amp;#34;+token&#xA;)&#xA;&#xA;#Init&#xA;GooglePlus_UID = &amp;#34;12345678901234567801234567890123&amp;#34;&#xA;UID = {}&#xA;&#xA;payload = {&#xA;    &amp;#34;id&amp;#34;:GooglePlus_UID,&#xA;    &amp;#34;title&amp;#34;:&amp;#34;GooglePlus Import&amp;#34;&#xA;}&#xA;&#xA;try:&#xA;    resp = requests.post(url_folders, data=json.dumps(payload, separators=(&amp;#39;,&amp;#39;,&amp;#39;:&amp;#39;)), headers=headers)&#xA;    resp.raise_for_status()&#xA;    resp_dict = resp.json()&#xA;    print(resp_dict)&#xA;    print(&amp;#34;My ID&amp;#34;)&#xA;    print(resp_dict[&amp;#39;id&amp;#39;])&#xA;    GooglePlus_UID_real = resp_dict[&amp;#39;id&amp;#39;]&#xA;    save = str(resp_dict[&amp;#39;id&amp;#39;])&#xA;    UID[GooglePlus_UID]= save&#xA;except requests.exceptions.HTTPError as e:&#xA;    print(&amp;#34;Bad HTTP status code:&amp;#34;, e)&#xA;except requests.exceptions.RequestException as e:&#xA;    print(&amp;#34;Network error:&amp;#34;, e)&#xA;&#xA;for csvfilename in glob.iglob(&amp;#39;Takeout*/**/*.metadata.csv&amp;#39;, recursive=True):&#xA;  nb_metadata += 1&#xA;  print(nb_metadata,&amp;#34; &amp;#34;,csvfilename)&#xA;  #print(&amp;#34;Picture:&amp;#34;+os.path.basename(csvfilename))&#xA;  mybasename = os.path.basename(csvfilename)&#xA;  mylist = mybasename.split(&amp;#34;.&amp;#34;)&#xA;  myfilename = mylist[0] + &amp;#34;.&amp;#34; + mylist[1]&#xA;  filename = os.path.dirname(csvfilename)+&amp;#34;/&amp;#34;+myfilename&#xA;  my_file = Path(filename)&#xA;  with open(csvfilename) as csvfile:&#xA;    reader = csv.DictReader(csvfile)&#xA;    for row in reader:&#xA;        if (len(row[&amp;#39;description&amp;#39;]) &amp;gt; 0):&#xA;            print(row[&amp;#39;title&amp;#39;], row[&amp;#39;description&amp;#39;], row[&amp;#39;creation_time.formatted&amp;#39;], row[&amp;#39;geo_data.latitude&amp;#39;], row[&amp;#39;geo_data.longitude&amp;#39;])&#xA;            #date = datetime.strptime(row[&amp;#39;creation_time.formatted&amp;#39;], &amp;#34;%d %b %Y à %H:%M:%S %Z&amp;#34;).timetuple()&#xA;            #print(date)&#xA;            mylist2 = row[&amp;#39;creation_time.formatted&amp;#39;].split(&amp;#34; &amp;#34;);&#xA;            mylist3 = mylist2[4].split(&amp;#34;:&amp;#34;);&#xA;            date = date.replace(hour=int(mylist3[0]), year=int(mylist2[2]), month=month_string_to_number(mylist2[1]), day=int(mylist2[0]))&#xA;            timestamp = time.mktime(date.timetuple())*1000&#xA;            print(timestamp)&#xA;            nb_metadata_import += 1&#xA;            mybody = row[&amp;#39;description&amp;#39;]&#xA;            if (len(row[&amp;#39;geo_data.latitude&amp;#39;]) &amp;gt; 2):&#xA;              payload_note = {&#xA;                &amp;#34;parent_id&amp;#34;:GooglePlus_UID_real,&#xA;                &amp;#34;title&amp;#34;:row[&amp;#39;creation_time.formatted&amp;#39;],&#xA;                &amp;#34;source&amp;#34;:myfilename,&#xA;                &amp;#34;source_url&amp;#34;:row[&amp;#39;url&amp;#39;],&#xA;                &amp;#34;order&amp;#34;:nb_metadata_import,&#xA;                &amp;#34;body&amp;#34;:mybody&#xA;                }&#xA;              payload_note_put = {&#xA;                &amp;#34;latitude&amp;#34;:float(row[&amp;#39;geo_data.latitude&amp;#39;]),&#xA;                &amp;#34;longitude&amp;#34;:float(row[&amp;#39;geo_data.longitude&amp;#39;]),&#xA;                &amp;#34;source&amp;#34;:myfilename,&#xA;                &amp;#34;source_url&amp;#34;:row[&amp;#39;url&amp;#39;],&#xA;                &amp;#34;order&amp;#34;:nb_metadata_import,&#xA;                &amp;#34;user_created_time&amp;#34;:timestamp,&#xA;                &amp;#34;user_updated_time&amp;#34;:timestamp,&#xA;                &amp;#34;author&amp;#34;:&amp;#34;Google+&amp;#34;&#xA;                }&#xA;            else:&#xA;               payload_note = {&#xA;                &amp;#34;parent_id&amp;#34;:GooglePlus_UID_real,&#xA;                &amp;#34;title&amp;#34;:row[&amp;#39;creation_time.formatted&amp;#39;],&#xA;                &amp;#34;source&amp;#34;:myfilename,&#xA;                &amp;#34;source_url&amp;#34;:row[&amp;#39;url&amp;#39;],&#xA;                &amp;#34;order&amp;#34;:nb_metadata_import,&#xA;                &amp;#34;user_created_time&amp;#34;:timestamp,&#xA;                &amp;#34;user_updated_time&amp;#34;:timestamp,&#xA;                &amp;#34;author&amp;#34;:&amp;#34;Google+&amp;#34;,&#xA;                &amp;#34;body&amp;#34;:mybody&#xA;                }&#xA;               payload_note_put = {&#xA;                &amp;#34;source&amp;#34;:myfilename,&#xA;                &amp;#34;order&amp;#34;:nb_metadata_import,&#xA;                &amp;#34;source_url&amp;#34;:row[&amp;#39;url&amp;#39;],&#xA;                &amp;#34;user_created_time&amp;#34;:timestamp,&#xA;                &amp;#34;user_updated_time&amp;#34;:timestamp,&#xA;                &amp;#34;author&amp;#34;:&amp;#34;Google+&amp;#34;&#xA;                }&#xA;&#xA;            try:&#xA;                resp = requests.post(url_notes, json=payload_note)&#xA;                resp.raise_for_status()&#xA;                resp_dict = resp.json()&#xA;                print(resp_dict)&#xA;                print(resp_dict[&amp;#39;id&amp;#39;])&#xA;                myuid= resp_dict[&amp;#39;id&amp;#39;]&#xA;            except requests.exceptions.HTTPError as e:&#xA;                print(&amp;#34;Bad HTTP status code:&amp;#34;, e)&#xA;            except requests.exceptions.RequestException as e:&#xA;                print(&amp;#34;Network error:&amp;#34;, e)&#xA;&#xA;            url_notes_put = (&#xA;    &amp;#34;http://&amp;#34;+ip+&amp;#34;:&amp;#34;+port+&amp;#34;/notes/&amp;#34;+myuid+&amp;#34;?&amp;#34;&#xA;    &amp;#34;token=&amp;#34;+token&#xA;)&#xA;&#xA;            try:&#xA;                resp = requests.put(url_notes_put, json=payload_note_put)&#xA;                resp.raise_for_status()&#xA;                resp_dict = resp.json()&#xA;                print(resp_dict)&#xA;            except requests.exceptions.HTTPError as e:&#xA;                print(&amp;#34;Bad HTTP status code:&amp;#34;, e)&#xA;            except requests.exceptions.RequestException as e:&#xA;                print(&amp;#34;Network error:&amp;#34;, e)&#xA;            &#xA;            if my_file.is_file():&#xA;               cmd = &amp;#34;curl -F &amp;#39;data=@&amp;#34;+filename+&amp;#34;&amp;#39; -F &amp;#39;props={\&amp;#34;title\&amp;#34;:\&amp;#34;&amp;#34;+myfilename+&amp;#34;\&amp;#34;}&amp;#39; http://&amp;#34;+ip+&amp;#34;:&amp;#34;+port+&amp;#34;/resources?token=&amp;#34;+token&#xA;               print(&amp;#34;Command&amp;#34;+cmd)&#xA;               resp = os.popen(cmd).read()&#xA;               try:&#xA;                  respj = json.loads(resp)&#xA;                  print(respj[&amp;#39;id&amp;#39;])&#xA;                  myuid_picture= respj[&amp;#39;id&amp;#39;]&#xA;               except:&#xA;                  print(&amp;#39;bad json: &amp;#39;, resp)&#xA;&#xA;               mybody = row[&amp;#39;description&amp;#39;] + &amp;#34;\n  ![&amp;#34; + myfilename + &amp;#34;](:/&amp;#34; + myuid_picture + &amp;#34;)   \n&amp;#34;;&#xA;&#xA;               payload_note_put = {&#xA;                &amp;#34;body&amp;#34;:mybody&#xA;                }&#xA;&#xA;               try:&#xA;                  resp = requests.put(url_notes_put, json=payload_note_put)&#xA;                  resp.raise_for_status()&#xA;                  resp_dict = resp.json()&#xA;                  print(resp_dict)&#xA;               except requests.exceptions.HTTPError as e:&#xA;                  print(&amp;#34;Bad HTTP status code:&amp;#34;, e)&#xA;               except requests.exceptions.RequestException as e:&#xA;                  print(&amp;#34;Network error:&amp;#34;, e)&#xA;&#xA;print(nb_metadata)&#xA;print(nb_metadata_import)&lt;/code&gt;&lt;/pre&gt;</description>
    </item>
    <item>
      <title>Diaro App : DiaroBackup.xml : How to parse in python ? (Draft n°3)</title>
      <link>https://move.cyber-neurones.org/post/2019/02/2019-02-09-diaro-app-diarobackup-xml-how-to-parse-in-python-draft-n3/</link>
      <pubDate>Sat, 09 Feb 2019 00:00:00 +0000</pubDate>
      <guid>https://move.cyber-neurones.org/post/2019/02/2019-02-09-diaro-app-diarobackup-xml-how-to-parse-in-python-draft-n3/</guid>
      <description>&lt;p&gt;(See the finale release : &lt;a href=&#34;https://www.cyber-neurones.org/2019/02/diaro-app-pixel-crater-ltd-diarobackup-xml-how-to-migrate-data-to-joplin/&#34;&gt;https://www.cyber-neurones.org/2019/02/diaro-app-pixel-crater-ltd-diarobackup-xml-how-to-migrate-data-to-joplin/&lt;/a&gt; )&lt;/p&gt;&#xA;&lt;p&gt;Now with release V3, it&amp;rsquo;s possible to import data &amp;hellip; Le last issue is on user_created_time and user_updated_time.&lt;/p&gt;&#xA;&lt;p&gt;The REST API is very good ( &lt;a href=&#34;https://joplin.cozic.net/api/&#34;&gt;https://joplin.cozic.net/api/&lt;/a&gt; ) , but If it&amp;rsquo;s not too complex :&lt;/p&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;Add possibility to choose the ID on folder.&lt;/li&gt;&#xA;&lt;li&gt;Add possibility to choose the ID on tags.&lt;/li&gt;&#xA;&lt;li&gt;Add possibility to do PUT on note to add at the end of text : [&lt;code&gt;](:/ID_RESOURCE)&lt;/code&gt;. The syntax : PUT /ressources/ID_RESSOURCE/notes/ID_NOTE?token=…”&lt;/li&gt;&#xA;&lt;li&gt;Possibility to add ID of tags instead text on Notes.&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;p&gt;My last source :&lt;/p&gt;</description>
    </item>
    <item>
      <title>Mac OS : ImportError: No module named requests</title>
      <link>https://move.cyber-neurones.org/post/2019/02/2019-02-06-mac-os-importerror-no-module-named-requests/</link>
      <pubDate>Wed, 06 Feb 2019 00:00:00 +0000</pubDate>
      <guid>https://move.cyber-neurones.org/post/2019/02/2019-02-06-mac-os-importerror-no-module-named-requests/</guid>
      <description>&lt;p&gt;J&amp;rsquo;ai voulu suivre la procédure avec brew, pip, &amp;hellip;. mais sans succès avec la version 2.7.2&lt;/p&gt;&#xA;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;$ python --version&#xA;Python 2.7.2&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;p&gt;J&amp;rsquo;avais des erreurs du type :&lt;/p&gt;&#xA;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;$ brew reinstall python....xcrun: error: invalid active developer path (/Library/Developer/CommandLineTools), missing xcrun at: /Library/Developer/CommandLineTools/usr/bin/xcrun Error: An exception occurred within a child process:   CompilerSelectionError: python cannot be built with any available compilers. Install GNU&amp;#39;s GCC   brew install gcc$ python -m pip install --user requests /Library/Frameworks/Python.framework/Versions/2.7/Resources/Python.app/Contents/MacOS/Python: No module named pip$ sudo easy_install pip Searching for pip Reading http://pypi.python.org/simple/pip/ Couldn&amp;#39;t find index page for &amp;#39;pip&amp;#39; (maybe misspelled?) Scanning index of all packages (this may take a while) Reading http://pypi.python.org/simple/ No local packages or download links found for pip Best match: None Traceback (most recent call last):   File &amp;#34;/Library/Frameworks/Python.framework/Versions/2.7/bin/easy_install&amp;#34;, line 8, in &amp;lt;module&amp;gt;     load_entry_point(&amp;#39;setuptools==0.6c11&amp;#39;, &amp;#39;console_scripts&amp;#39;, &amp;#39;easy_install&amp;#39;)()   File &amp;#34;/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/setuptools-0.6c11-py2.7.egg/setuptools/command/easy_install.py&amp;#34;, line 1712, in main        File &amp;#34;/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/setuptools-0.6c11-py2.7.egg/setuptools/command/easy_install.py&amp;#34;, line 1700, in with_ei_usage        File &amp;#34;/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/setuptools-0.6c11-py2.7.egg/setuptools/command/easy_install.py&amp;#34;, line 1716, in &amp;lt;lambda&amp;gt;        File &amp;#34;/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/distutils/core.py&amp;#34;, line 152, in setup     dist.run_commands()   File &amp;#34;/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/distutils/dist.py&amp;#34;, line 953, in run_commands     self.run_command(cmd)   File &amp;#34;/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/distutils/dist.py&amp;#34;, line 972, in run_command     cmd_obj.run()   File &amp;#34;/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/setuptools-0.6c11-py2.7.egg/setuptools/command/easy_install.py&amp;#34;, line 211, in run        File &amp;#34;/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/setuptools-0.6c11-py2.7.egg/setuptools/command/easy_install.py&amp;#34;, line 434, in easy_install        File &amp;#34;/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/setuptools-0.6c11-py2.7.egg/setuptools/package_index.py&amp;#34;, line 475, in fetch_distribution AttributeError: &amp;#39;NoneType&amp;#39; object has no attribute &amp;#39;clone&amp;#39;  &lt;/code&gt;&lt;/pre&gt;&#xA;&lt;p&gt;J&amp;rsquo;ai donc changé de fusil d&amp;rsquo;épaule :&lt;/p&gt;</description>
    </item>
    <item>
      <title>Pourquoi l&#39;application Joplin sous Android est mieux que Diaro ? ( Diaro App )</title>
      <link>https://move.cyber-neurones.org/post/2019/02/2019-02-06-pourquoi-lapplication-joplin-sous-android-est-mieux-que-diaro-diaro-app/</link>
      <pubDate>Wed, 06 Feb 2019 00:00:00 +0000</pubDate>
      <guid>https://move.cyber-neurones.org/post/2019/02/2019-02-06-pourquoi-lapplication-joplin-sous-android-est-mieux-que-diaro-diaro-app/</guid>
      <description>&lt;p&gt;C&amp;rsquo;est très facile à voir, en deux images :&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;img src=&#34;images/screenshot_20190206_130214-537x1024.jpg&#34; alt=&#34;&#34;&gt;&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;img src=&#34;images/screenshot_20190206_130053-1-537x1024.jpg&#34; alt=&#34;&#34;&gt;&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;12 pisteurs VS 1 pisteurs.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Diaro App : DiaroBackup.xml : How to parse in python ? (Draft n°1)</title>
      <link>https://move.cyber-neurones.org/post/2019/02/2019-02-05-diaro-app-diarobackup-xml-how-to-parse-in-python-draft-n1/</link>
      <pubDate>Tue, 05 Feb 2019 00:00:00 +0000</pubDate>
      <guid>https://move.cyber-neurones.org/post/2019/02/2019-02-05-diaro-app-diarobackup-xml-how-to-parse-in-python-draft-n1/</guid>
      <description>&lt;p&gt;(See the finale release : &lt;a href=&#34;https://www.cyber-neurones.org/2019/02/diaro-app-pixel-crater-ltd-diarobackup-xml-how-to-migrate-data-to-joplin/&#34;&gt;https://www.cyber-neurones.org/2019/02/diaro-app-pixel-crater-ltd-diarobackup-xml-how-to-migrate-data-to-joplin/&lt;/a&gt; )&lt;/p&gt;&#xA;&lt;p&gt;Step 1: Add in first ligne : &lt;strong&gt;&lt;!-- raw HTML omitted --&gt;&lt;/strong&gt; before &lt;strong&gt;&lt;!-- raw HTML omitted --&gt;&lt;/strong&gt; in file &lt;strong&gt;DiaroBackup.xml&lt;/strong&gt; &amp;hellip; it&amp;rsquo;s mandatory !&lt;/p&gt;&#xA;&lt;p&gt;I use REST API to insert in JOPLIN : &lt;a href=&#34;https://joplin.cozic.net/api/&#34;&gt;https://joplin.cozic.net/api/&lt;/a&gt; , it&amp;rsquo;s good documentation.&lt;/p&gt;&#xA;&lt;p&gt;Here my first release in Python to import data from Diaro App Backup to Joplin API :&lt;/p&gt;&#xA;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;#&#xA;# Version 1  &#xA;#  &#xA;#   ARIAS Frederic&#xA;#   Sorry ... It&amp;#39;s difficult for me the python :)&#xA;&#xA;from urllib2 import unquote&#xA;from lxml import etree&#xA;import os&#xA;from time import gmtime, strftime&#xA;import time&#xA;&#xA;strftime(&amp;#34;%Y-%m-%d %H:%M:%S&amp;#34;, gmtime())&#xA;start = time.time()&#xA;&#xA;print(&amp;#34;Start : Parse Table&amp;#34;)&#xA;tree = etree.parse(&amp;#34;./DiaroBackup.xml&amp;#34;)&#xA;for table in tree.xpath(&amp;#34;/data/table&amp;#34;):&#xA;    print(table.get(&amp;#34;name&amp;#34;))&#xA;print(&amp;#34;End : Parse Table&amp;#34;)&#xA;&#xA;#Token&#xA;ip = &amp;#34;127.0.0.1&amp;#34;&#xA;port = &amp;#34;41184&amp;#34;&#xA;#token = &amp;#34;ABCD123ABCD123ABCD123ABCD123ABCD123&amp;#34;&#xA;token = &amp;#34;blablabla&amp;#34;&#xA;cmd = &amp;#39;curl http://&amp;#39;+ip+&amp;#39;:&amp;#39;+port+&amp;#39;/notes?token=&amp;#39;+token&#xA;print cmd&#xA;os.system(cmd)&#xA;&#xA;#Init&#xA;Diaro_UID = &amp;#34;12345678901234567801234567890123&amp;#34;&#xA;Lat = {}&#xA;Lng = {}&#xA;Lat[&amp;#34;&amp;#34;] = &amp;#34;&amp;#34;&#xA;Lng[&amp;#34;&amp;#34;] = &amp;#34;&amp;#34;&#xA;cmd = &amp;#39;curl --data \&amp;#39;{ &amp;#34;id&amp;#34;: &amp;#34;&amp;#39;+Diaro_UID+&amp;#39;&amp;#34;, &amp;#34;title&amp;#34;: &amp;#34;Diaro Import&amp;#34;}\&amp;#39; http://&amp;#39;+ip+&amp;#39;:&amp;#39;+port+&amp;#39;/folders?token=&amp;#39;+token&#xA;print cmd&#xA;os.system(cmd)&#xA;&#xA;print(&amp;#34;Start : Parse Table&amp;#34;)&#xA;tree = etree.parse(&amp;#34;./DiaroBackup.xml&amp;#34;)&#xA;for table in tree.iter(&amp;#39;table&amp;#39;):&#xA;    name = table.attrib.get(&amp;#39;name&amp;#39;)&#xA;    print name&#xA;    myorder = 1&#xA;    for r in table.iter(&amp;#39;r&amp;#39;):&#xA;         myuid = &amp;#34;&amp;#34;&#xA;         mytitle = &amp;#34;&amp;#34;&#xA;         mylat = &amp;#34;&amp;#34;&#xA;         mylng = &amp;#34;&amp;#34;&#xA;         mytags = &amp;#34;&amp;#34;&#xA;         mydate = &amp;#34;&amp;#34;&#xA;         mytext = &amp;#34;&amp;#34;&#xA;         myfilename = &amp;#34;&amp;#34;&#xA;         myfolder_uid = Diaro_UID&#xA;         mylocation_uid = &amp;#34;&amp;#34;&#xA;         myprimary_photo_uid = &amp;#34;&amp;#34;&#xA;         myentry_uid = &amp;#34;&amp;#34;&#xA;         myorder += 1&#xA;         for subelem in r:&#xA;&#x9;     print(subelem.tag)&#xA;             if (subelem.tag == &amp;#39;uid&amp;#39;):&#xA;                 myuid = subelem.text&#xA;              &#x9; print (&amp;#34;myuid&amp;#34;,myuid)&#xA;             if (subelem.tag == &amp;#39;entry_uid&amp;#39;):&#xA;                 myentry_uid = subelem.text&#xA;                 print (&amp;#34;myentry_uid&amp;#34;,myentry_uid)&#xA;             if (subelem.tag == &amp;#39;primary_photo_uid&amp;#39;):&#xA;                 myprimary_photo_uid = subelem.text&#xA;                 print (&amp;#34;myprimary_photo_uid&amp;#34;,myprimary_photo_uid)&#xA;             if (subelem.tag == &amp;#39;folder_uid&amp;#39;):&#xA;                 myfolder_uid = subelem.text&#xA;                 print (&amp;#34;myfolder_uid&amp;#34;,myfolder_uid)&#xA;             if (subelem.tag == &amp;#39;location_uid&amp;#39;):&#xA;                 mylocation_uid = subelem.text&#xA;                 print (&amp;#34;mylocation_uid&amp;#34;,mylocation_uid)&#xA;             if (subelem.tag == &amp;#39;date&amp;#39;):&#xA;                 mydate = subelem.text&#xA;                 print (&amp;#34;mydate&amp;#34;,mydate)&#xA;             if (subelem.tag == &amp;#39;title&amp;#39;):&#xA;                 mytitle = subelem.text&#xA;                 print (&amp;#34;mytitle&amp;#34;,mytitle)&#xA;&#x9;&#x9; print type(mytitle)&#xA;                 if type(mytitle) == unicode:&#xA;&#x9;&#x9;&#x9;mytitle = mytitle.encode(&amp;#39;utf8&amp;#39;)&#xA;             if (subelem.tag == &amp;#39;lat&amp;#39;):&#xA;                 mylat = subelem.text&#xA;                 print (&amp;#34;mylat&amp;#34;,mylat)&#xA;             if (subelem.tag == &amp;#39;lng&amp;#39;):&#xA;                 mylng = subelem.text&#xA;                 print (&amp;#34;mylng&amp;#34;,mylng)&#xA;             if (subelem.tag == &amp;#39;tags&amp;#39;):&#xA;                 mytags = subelem.text&#xA;                 if mytags:&#xA;                    mytags[1:]&#xA;                 print (&amp;#34;mytags&amp;#34;,mytags)&#xA;             if (subelem.tag == &amp;#39;text&amp;#39;):&#xA;                 mytext = subelem.text&#xA;                 print (&amp;#34;mytext&amp;#34;,mytext)&#xA;                 if type(mytext) == unicode:&#xA;                        mytext = mytext.encode(&amp;#39;utf8&amp;#39;)&#xA;             if (subelem.tag == &amp;#39;filename&amp;#39;):&#xA;                 myfilename = subelem.text&#xA;                 print (&amp;#34;myfilename&amp;#34;,myfilename)&#xA;         if (name == &amp;#39;diaro_folders&amp;#39;):&#xA;              cmd = &amp;#39;curl --data \&amp;#39;{ &amp;#34;id&amp;#34;: &amp;#34;&amp;#39;+myuid+&amp;#39;&amp;#34;, &amp;#34;title&amp;#34;: &amp;#34;&amp;#39;+mytitle+&amp;#39;&amp;#34;, &amp;#34;parent_id&amp;#34;: &amp;#34;&amp;#39;+Diaro_UID+&amp;#39;&amp;#34;}\&amp;#39; http://&amp;#39;+ip+&amp;#39;:&amp;#39;+port+&amp;#39;/folders?token=&amp;#39;+token&#xA;              print cmd&#xA;              os.system(cmd)&#xA;         if (name == &amp;#39;diaro_tags&amp;#39;):&#xA;              cmd = &amp;#39;curl --data \&amp;#39;{ &amp;#34;id&amp;#34;: &amp;#34;&amp;#39;+myuid+&amp;#39;&amp;#34;, &amp;#34;title&amp;#34;: &amp;#34;&amp;#39;+mytitle+&amp;#39;&amp;#34;}\&amp;#39; http://&amp;#39;+ip+&amp;#39;:&amp;#39;+port+&amp;#39;/tags?token=&amp;#39;+token&#xA;              print cmd&#xA;              os.system(cmd)&#xA;         if (name == &amp;#39;diaro_attachments&amp;#39;):&#xA;              cmd = &amp;#39;curl -F \&amp;#39;data=@media/photo/&amp;#39;+myfilename+&amp;#39;\&amp;#39;  -F \&amp;#39;props={&amp;#34;id&amp;#34;:&amp;#34;&amp;#39;+myuid+&amp;#39;&amp;#34;}\&amp;#39; http://&amp;#39;+ip+&amp;#39;:&amp;#39;+port+&amp;#39;/resources?token=&amp;#39;+token&#xA;              print cmd&#xA;              os.system(cmd)&#xA;              cmd = &amp;#39;curl -X PUT http://&amp;#39;+ip+&amp;#39;:&amp;#39;+port+&amp;#39;/resources/&amp;#39;+myuid+&amp;#39;/notes/&amp;#39;+myentry_uid+&amp;#39;?token=&amp;#39;+token&#xA;              print cmd&#xA;              os.system(cmd)&#xA;         if (name == &amp;#39;diaro_locations&amp;#39;):&#xA;              Lat[myuid] = mylat&#xA;              Lng[myuid] = mylng&#xA;         if (name == &amp;#39;diaro_entries&amp;#39;):&#xA;             if not mytext:&#xA;                  mytext = &amp;#34;&amp;#34;&#xA;             if not myfolder_uid:&#xA;                  myfolder_uid = Diaro_UID&#xA;             if not mytags:&#xA;                  mytags = &amp;#34;&amp;#34;&#xA;             if not mylocation_uid:&#xA;                  mylocation_uid = &amp;#34;&amp;#34;&#xA;             mytext = mytext.replace(&amp;#34;&amp;#39;&amp;#34;, &amp;#34;&amp;#34;)&#xA;             mytitle = mytitle.replace(&amp;#34;&amp;#39;&amp;#34;, &amp;#34;&amp;#34;)&#xA;             mytext = mytext.strip(&amp;#34;\&amp;#39;&amp;#34;)&#xA;             mytitle = mytitle.strip(&amp;#34;\&amp;#39;&amp;#34;)&#xA;             mytext = mytext.strip(&amp;#39;(&amp;#39;)&#xA;             mytitle = mytitle.strip(&amp;#39;(&amp;#39;)&#xA;             print type(mytext)&#xA;             cmd = &amp;#39;curl --data \&amp;#39;{&amp;#34;latitude&amp;#34;:&amp;#34;&amp;#39;+Lat[mylocation_uid]+&amp;#39;&amp;#34;,&amp;#34;longitude&amp;#34;:&amp;#34;&amp;#39;+Lng[mylocation_uid]+&amp;#39;&amp;#34;,&amp;#34;tags&amp;#34;:&amp;#34;&amp;#39;+mytags+&amp;#39;&amp;#34;,&amp;#34;parent_id&amp;#34;:&amp;#34;&amp;#39;+myfolder_uid+&amp;#39;&amp;#34;,&amp;#34;id&amp;#34;:&amp;#34;&amp;#39;+myuid+&amp;#39;&amp;#34;,&amp;#34;title&amp;#34;:&amp;#34;&amp;#39;+mytitle+&amp;#39;&amp;#34;, &amp;#34;created_time&amp;#34;: &amp;#34;&amp;#39;+mydate+&amp;#39;&amp;#34;, &amp;#34;body&amp;#34;: &amp;#34;&amp;#39;+mytext+&amp;#39;&amp;#34;}\&amp;#39; http://&amp;#39;+ip+&amp;#39;:&amp;#39;+port+&amp;#39;/notes?token=&amp;#39;+token&#xA;             print cmd&#xA;             os.system(cmd)&#xA;print(&amp;#34;End : Parse Table&amp;#34;)&#xA;&#xA;strftime(&amp;#34;%Y-%m-%d %H:%M:%S&amp;#34;, gmtime())&#xA;done = time.time()&#xA;elapsed = done - start&#xA;print(elapsed)&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;p&gt;But I don&amp;rsquo;t understand the API, I can force the id ( for exemple : &lt;strong&gt;12345678901234567801234567890123 )&lt;/strong&gt;:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Diaro App : backup format</title>
      <link>https://move.cyber-neurones.org/post/2019/02/2019-02-04-diario-app-backup-format/</link>
      <pubDate>Mon, 04 Feb 2019 00:00:00 +0000</pubDate>
      <guid>https://move.cyber-neurones.org/post/2019/02/2019-02-04-diario-app-backup-format/</guid>
      <description>&lt;p&gt;Le format est en XML : DiarioBackup.xml , la syntaxe est la suivante :&lt;/p&gt;&#xA;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;&amp;lt;data version=&amp;#34;2&amp;#34;&amp;gt;&amp;lt;table name=&amp;#34;diaro_folders&amp;#34;&amp;gt;&amp;lt;r&amp;gt;&amp;lt;uid&amp;gt;0773341a39b09938e234d0c4e2970988&amp;lt;/uid&amp;gt;&amp;lt;title&amp;gt;Nom du fichier&amp;lt;/title&amp;gt;&amp;lt;color&amp;gt;#ff921c&amp;lt;/color&amp;gt;&amp;lt;pattern&amp;gt;&amp;lt;/pattern&amp;gt;&amp;lt;/r&amp;gt;...&amp;lt;/table&amp;gt;&amp;lt;table name=&amp;#34;diaro_tags&amp;#34;&amp;gt;&amp;lt;r&amp;gt;   &amp;lt;uid&amp;gt;0b2cc127642c774a77e4e048278fb716&amp;lt;/uid&amp;gt;   &amp;lt;title&amp;gt;Nom du tags&amp;lt;/title&amp;gt;&amp;lt;/r&amp;gt;...&amp;lt;/table&amp;gt;&amp;lt;table name=&amp;#34;diaro_locations&amp;#34;&amp;gt;&amp;lt;r&amp;gt;   &amp;lt;uid&amp;gt;008e9d97ecbae5876ceefc3463c57753&amp;lt;/uid&amp;gt;   &amp;lt;title&amp;gt;Lieu&amp;lt;/title&amp;gt;   &amp;lt;address&amp;gt;Address&amp;lt;/address&amp;gt;   &amp;lt;lat&amp;gt;YY.YYYYY&amp;lt;/lat&amp;gt;   &amp;lt;lng&amp;gt;X.XXXXX&amp;lt;/lng&amp;gt;   &amp;lt;zoom&amp;gt;10&amp;lt;/zoom&amp;gt;&amp;lt;/r&amp;gt;...&amp;lt;/table&amp;gt;&amp;lt;table name=&amp;#34;diaro_entries&amp;#34;&amp;gt;&amp;lt;r&amp;gt;   &amp;lt;uid&amp;gt;f4526cfd9536ecc422df849bc4b69d89&amp;lt;/uid&amp;gt;   &amp;lt;date&amp;gt;1475771220000&amp;lt;/date&amp;gt;   &amp;lt;tz_offset&amp;gt;+02:00&amp;lt;/tz_offset&amp;gt;   &amp;lt;title&amp;gt;Titre&amp;lt;/title&amp;gt;   &amp;lt;text&amp;gt;Texte&amp;lt;/text&amp;gt;   &amp;lt;folder_uid&amp;gt;4c4db654f97a84333d4e29fd949cbada&amp;lt;/folder_uid&amp;gt;   &amp;lt;location_uid&amp;gt;85c77bb40d800da8f5a9d9777967d325&amp;lt;/location_uid&amp;gt;   &amp;lt;tags&amp;gt;,28f79fcdf75cb5a3deb10ab40d1ed956,&amp;lt;/tags&amp;gt;   &amp;lt;primary_photo_uid&amp;gt;&amp;lt;/primary_photo_uid&amp;gt;   &amp;lt;weather_temperature&amp;gt;null&amp;lt;/weather_temperature&amp;gt;   &amp;lt;weather_icon&amp;gt;&amp;lt;/weather_icon&amp;gt;   &amp;lt;weather_description&amp;gt;&amp;lt;/weather_description&amp;gt;   &amp;lt;mood&amp;gt;0&amp;lt;/mood&amp;gt;&amp;lt;/r&amp;gt;....&amp;lt;/table&amp;gt;&amp;lt;table name=&amp;#34;diaro_attachments&amp;#34;&amp;gt;&amp;lt;r&amp;gt;   &amp;lt;uid&amp;gt;0237499c90decb1cc9787ecb11718a35&amp;lt;/uid&amp;gt;   &amp;lt;entry_uid&amp;gt;53b97932b1acc1b4a5be5895d22bc16d&amp;lt;/entry_uid&amp;gt;   &amp;lt;type&amp;gt;photo&amp;lt;/type&amp;gt;   &amp;lt;filename&amp;gt;name.jpg&amp;lt;/filename&amp;gt;   &amp;lt;position&amp;gt;1&amp;lt;/position&amp;gt;&amp;lt;/r&amp;gt;...&amp;lt;/table&amp;gt;&amp;lt;/data&amp;gt;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;p&gt;Sachant qu&amp;rsquo;ensuite les photos dans dans le répertoire media/photo/ .&lt;/p&gt;&#xA;&lt;p&gt;Mon but est de convertir cela en fichier .ENEX pour ensuite faire un import dans Joplin. J&amp;rsquo;ai vu un programme en Python assez intéressant : https://github.com/andrewheiss/nvalt2evernote &amp;ldquo;Convert plain text notes stored in &lt;a href=&#34;http://notational.net/&#34;&gt;Notational Velocity&lt;/a&gt; or &lt;a href=&#34;http://brettterpstra.com/projects/nvalt/&#34;&gt;nvALT&lt;/a&gt; to an .enex file to import into &lt;a href=&#34;https://evernote.com/&#34;&gt;Evernote&lt;/a&gt;.&amp;rdquo;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Joplin : Mon architecture cible : Mac &amp; Android</title>
      <link>https://move.cyber-neurones.org/post/2019/02/2019-02-04-joplin-mon-architecture-cible-mac-android/</link>
      <pubDate>Mon, 04 Feb 2019 00:00:00 +0000</pubDate>
      <guid>https://move.cyber-neurones.org/post/2019/02/2019-02-04-joplin-mon-architecture-cible-mac-android/</guid>
      <description>&lt;p&gt;Voici mon architecture :&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Mac Version &lt;strong&gt;10.14.3&lt;/strong&gt; :&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Joplin version : &lt;strong&gt;1.0.125&lt;/strong&gt;&lt;/li&gt;&#xA;&lt;li&gt;WebDAVNav Server : v &lt;strong&gt;2.6.4&lt;/strong&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;Android : 9 ( Build &lt;strong&gt;9.0.0.162&lt;/strong&gt; : Honor View 10 )&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Joplin version : &lt;strong&gt;v1.0.234 - Base de données v17&lt;/strong&gt;.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;J&amp;rsquo;ai réussi a faire une synchronisation de &lt;strong&gt;Mac -&amp;gt; Android&lt;/strong&gt; et une synchronisation de &lt;strong&gt;Android -&amp;gt; Mac&lt;/strong&gt;. C&amp;rsquo;est donc fonctionnel !&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;images/capture-decran-2019-02-04-a-20-59-34.png&#34; alt=&#34;&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;Quelques captures d&amp;rsquo;écran :&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;images/capture-decran-2019-02-04-a-20-32-23.png&#34; alt=&#34;&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;images/capture-decran-2019-02-04-a-20-32-04.png&#34; alt=&#34;&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;images/capture-decran-2019-02-04-a-20-39-40.png&#34; alt=&#34;&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;images/capture-decran-2019-02-04-a-20-39-14.png&#34; alt=&#34;&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;Et sur Android :&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;img src=&#34;images/screenshot_20190204_203511-1-568x1024.jpg&#34; alt=&#34;&#34;&gt;&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;img src=&#34;images/screenshot_20190204_203552-1-532x1024.jpg&#34; alt=&#34;&#34;&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Joplin</title>
      <link>https://move.cyber-neurones.org/post/2019/02/2019-02-03-joplin/</link>
      <pubDate>Sun, 03 Feb 2019 00:00:00 +0000</pubDate>
      <guid>https://move.cyber-neurones.org/post/2019/02/2019-02-03-joplin/</guid>
      <description>&lt;p&gt;Je viens de découvrir Joplin ( &lt;a href=&#34;https://framalibre.org/content/joplin&#34;&gt;https://framalibre.org/content/joplin&lt;/a&gt; , le lien officiel du site &lt;a href=&#34;https://joplin.cozic.net&#34;&gt;https://joplin.cozic.net&lt;/a&gt; ) , je voulais un système de note avec une synchronisation via NextCloud ( sur un &lt;strong&gt;Cloud Personnel&lt;/strong&gt; ).&lt;/p&gt;&#xA;&lt;p&gt;Je vais me lancer dans les tests, et dans la conversion de mes données.&lt;/p&gt;&#xA;&lt;p&gt;A suivre &amp;hellip;. surtout la migration des données.&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Diario : &lt;a href=&#34;https://diaroapp.com&#34;&gt;https://diaroapp.com&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;Awesomes Notes : &lt;a href=&#34;http://www.bridworks.com/anote/&#34;&gt;http://www.bridworks.com/anote/&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&amp;hellip; voir même Google+ pour certains posts.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;J&amp;rsquo;ai installé l&amp;rsquo;application sur Mac &amp;amp; Android, a noté que sur Mac après l&amp;rsquo;installation de la 1.0.120 on propose une mise à jour en 1.0.125 :&lt;/p&gt;</description>
    </item>
  </channel>
</rss>
