<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Diaro 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/diaro/</link>
    <description>Recent content in Diaro 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>Mon, 11 Feb 2019 00:00:00 +0000</lastBuildDate>
    <atom:link href="https://move.cyber-neurones.org/tags/diaro/index.xml" rel="self" type="application/rss+xml" />
    <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>Diaro App : DiaroBackup.xml : How to parse in python ? (Draft n°2)</title>
      <link>https://move.cyber-neurones.org/post/2019/02/2019-02-08-diaro-app-diarobackup-xml-how-to-parse-in-python-draft-n2/</link>
      <pubDate>Fri, 08 Feb 2019 00:00:00 +0000</pubDate>
      <guid>https://move.cyber-neurones.org/post/2019/02/2019-02-08-diaro-app-diarobackup-xml-how-to-parse-in-python-draft-n2/</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;I have issue with ressources &lt;strong&gt;(link between ressources and notes)&lt;/strong&gt; &amp;hellip;. error 404. The logs in : .config/joplin-desktop/log-clipper.txt&lt;/p&gt;&#xA;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;....: &amp;#34;Request: PUT /ressources/71dd2cba2af54c4ebb53fb7fd8d0543b/notes/cbbc6076b2ac321ccae1f036a2fe6659?token=....&amp;#34;&#xA;....: &amp;#34;Error: Not Found&#xA;Error: Not Found&#xA;    at Api.route (/Applications/Joplin.app/Contents/Resources/app/lib/services/rest/Api.js:103:41)&#xA;    at execRequest (/Applications/Joplin.app/Contents/Resources/app/lib/ClipperServer.js:147:39)&#xA;    at IncomingMessage.request.on (/Applications/Joplin.app/Contents/Resources/app/lib/ClipperServer.js:185:8)&#xA;    at emitNone (events.js:105:13)&#xA;    at IncomingMessage.emit (events.js:207:7)&#xA;    at endReadableNT (_stream_readable.js:1045:12)&#xA;    at _combinedTickCallback (internal/process/next_tick.js:138:11)&#xA;    at process._tickCallback (internal/process/next_tick.js:180:9)&amp;#34;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;p&gt;&lt;strong&gt;My last code :&lt;/strong&gt;&lt;/p&gt;&#xA;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;#&#xA;# Version 2 &#xA;# for Python 3&#xA;# &#xA;#   ARIAS Frederic&#xA;#   Sorry ... It&amp;#39;s difficult for me the python :)&#xA;#&#xA;&#xA;#from lxml import etree&#xA;import xml.etree.ElementTree as etree&#xA;from time import gmtime, strftime&#xA;import time&#xA;import json&#xA;import requests&#xA;import os&#xA;&#xA;strftime(&amp;#34;%Y-%m-%d %H:%M:%S&amp;#34;, gmtime())&#xA;start = time.time()&#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;&#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;Diaro_UID = &amp;#34;12345678901234567801234567890123&amp;#34;&#xA;Lat = {}&#xA;Lng = {}&#xA;UID = {} &#xA;TAGS = {}&#xA;Lat[&amp;#34;&amp;#34;] = &amp;#34;&amp;#34;&#xA;Lng[&amp;#34;&amp;#34;] = &amp;#34;&amp;#34;&#xA;&#xA;payload = {&#xA;    &amp;#34;id&amp;#34;: Diaro_UID,&#xA;    &amp;#34;title&amp;#34;: &amp;#34;Diaro Import&amp;#34;&#xA;}&#xA;&#xA;try:&#xA;    resp = requests.post(url_folders, json=payload)&#xA;    #time.sleep(1)&#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;    Diaro_UID_real = resp_dict[&amp;#39;id&amp;#39;]&#xA;    save = str(resp_dict[&amp;#39;id&amp;#39;])&#xA;    UID[Diaro_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;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;         mydate_ms = 0;&#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;             print(subelem.tag)&#xA;             if (subelem.tag == &amp;#39;uid&amp;#39;):&#xA;                 myuid = subelem.text&#xA;                 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;                 mydate_ms = int(mydate)&#xA;                 print (&amp;#34;mydate&amp;#34;,mydate,&amp;#34; in ms&amp;#34;,mydate_ms)&#xA;             if (subelem.tag == &amp;#39;title&amp;#39;):&#xA;                 mytitle = subelem.text&#xA;                 print (&amp;#34;mytitle&amp;#34;,mytitle)&#xA;                 #if type(mytitle) == str:&#xA;                    #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) == str:&#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;                 &#xA;         if (name == &amp;#39;diaro_folders&amp;#39;):&#xA;            payload_folder = {&#xA;  &amp;#34;id&amp;#34;: myuid,&#xA;  &amp;#34;title&amp;#34;: mytitle,&#xA;  &amp;#34;parent_id&amp;#34;: Diaro_UID_real&#xA;}&#xA;            print(payload_folder)&#xA;            try:&#xA;                resp = requests.post(url_folders, json=payload_folder)&#xA;                #time.sleep(1)&#xA;                resp.raise_for_status()&#xA;                resp_dict = resp.json()&#xA;                print(resp_dict)&#xA;                print(resp_dict[&amp;#39;id&amp;#39;])&#xA;                save = str(resp_dict[&amp;#39;id&amp;#39;]) &#xA;                UID[myuid]= 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;         if (name == &amp;#39;diaro_tags&amp;#39;):&#xA;            payload_tags = {&#xA;                &amp;#34;id&amp;#34;: myuid,&#xA;                &amp;#34;title&amp;#34;: mytitle&#xA;            }&#xA;            try:&#xA;                resp = requests.post(url_tags, json=payload_tags)&#xA;                #time.sleep(1)&#xA;                resp.raise_for_status()&#xA;                resp_dict = resp.json()&#xA;                print(resp_dict)&#xA;                print(resp_dict[&amp;#39;id&amp;#39;])&#xA;                UID[myuid]= resp_dict[&amp;#39;id&amp;#39;]&#xA;                TAGS[myuid] = mytitle&#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 (name == &amp;#39;diaro_attachments&amp;#39;):&#xA;            payload_ressource = {&#xA;                &amp;#34;id&amp;#34;: myuid&#xA;            }&#xA;            filename = &amp;#34;./media/photo/&amp;#34;+myfilename&#xA;            files = {&amp;#39;document&amp;#39;: open(filename, &amp;#39;rb&amp;#39;)}&#xA;            files2 = {&amp;#39;data&amp;#39;: open(filename, &amp;#39;rb&amp;#39;)}&#xA;            files3 = {&amp;#39;data&amp;#39;: open(filename, &amp;#39;rb&amp;#39;), &amp;#39;props&amp;#39;: payload_ressource}&#xA;            data_ressource = {&#xA;                 &amp;#34;title&amp;#34;: myfilename&#xA;            }&#xA;            multiple_files = [&#xA;                (&amp;#39;data&amp;#39;, (myfilename, open(filename, &amp;#39;rb&amp;#39;))),&#xA;                (&amp;#39;props&amp;#39;, data_ressource)]&#xA;            headers = {&amp;#39;Content-type&amp;#39;: &amp;#39;multipart/form-data&amp;#39;}&#xA;            print(&amp;#34;Push : &amp;#34;+filename);&#xA;            #print os.path.isfile(filename)&#xA;            print(&amp;#34;----------0-----------&amp;#34;)&#xA;            #try:&#xA;               #resp = requests.post(url_ressources, files=filename, json=payload_ressource)&#xA;               #resp = requests.post(url_ressources, files=files, json=payload_ressource, headers=headers) &#xA;               #resp = requests.post(url_ressources, files=files2, headers=headers)&#xA;               #resp = requests.post(url_ressources, files=files2, headers=headers)&#xA;               #resp = requests.post(url_ressources,files = {&amp;#39;data&amp;#39; : (myfilename, open(filename, &amp;#39;rb&amp;#39;), &amp;#39;image/jpg&amp;#39;)}, data = {&amp;#39;id&amp;#39; : myuid}, headers=headers)&#xA;               #resp = requests.post(url_ressources,files = files2, data= data_ressource, headers=headers)&#xA;               #resp = requests.post(url_ressources,files = multiple_files, headers=headers)&#xA;               #resp = requests.post(url_ressources,files = multiple_files)&#xA;               #resp.text&#xA;               #time.sleep(1)&#xA;               #resp.raise_for_status()&#xA;               #if (resp.status_code == requests.codes.ok):&#xA;               #    resp_dict = resp.json()&#xA;               #    print(resp_dict)&#xA;               #    print(resp_dict[&amp;#39;id&amp;#39;])&#xA;               #    UID[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;               #UID[myuid]=&amp;#34;&amp;#34;&#xA;               #print(&amp;#34;----------1-----------&amp;#34;)&#xA;            #except requests.exceptions.RequestException as e:&#xA;               #print(&amp;#34;Network error:&amp;#34;, e)&#xA;               #UID[myuid]=&amp;#34;&amp;#34;&#xA;               #print(&amp;#34;----------2-----------&amp;#34;)&#xA;&#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;            resp = os.popen(cmd).read()&#xA;            respj = json.loads(resp)&#xA;            #resp_dict = respj.json() &#xA;            print(respj[&amp;#39;id&amp;#39;])&#xA;            UID[myuid]= respj[&amp;#39;id&amp;#39;]&#xA;&#xA;            print(&amp;#34;Link : &amp;#34;,myuid,&amp;#34; =&amp;gt; &amp;#34;,myentry_uid,&amp;#34; // &amp;#34;,UID[myuid]+&amp;#34; =&amp;gt; &amp;#34;,UID[myentry_uid])&#xA;            time.sleep(1)&#xA;&#xA;            cmd = &amp;#34;curl -X PUT http://&amp;#34;+ip+&amp;#34;:&amp;#34;+port+&amp;#34;/ressources/&amp;#34;+UID[myuid]+&amp;#34;/notes/&amp;#34;+UID[myentry_uid]+&amp;#34;?token=&amp;#34;+token&#xA;            resp = os.popen(cmd).read()&#xA;            print (resp)&#xA;            #url_link = (&#xA;            #   &amp;#34;http://&amp;#34;+ip+&amp;#34;:&amp;#34;+port+&amp;#34;/ressources/&amp;#34;+UID[myuid]+&amp;#34;/notes/&amp;#34;+UID[myentry_uid]+&amp;#34;?&amp;#34;&#xA;            #   &amp;#34;token=&amp;#34;+token&#xA;            #   )&#xA;            #try:&#xA;            #  resp = requests.post(url_link)&#xA;            #   #time.sleep(1)&#xA;            #   resp.raise_for_status()&#xA;            #   resp_dict = resp.json()&#xA;            #   print(resp_dict)&#xA;            #   print(resp_dict[&amp;#39;id&amp;#39;])&#xA;            #   UID[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;         if (name == &amp;#39;diaro_locations&amp;#39;):&#xA;              Lat[myuid] = mylat&#xA;              Lng[myuid] = mylng&#xA;&#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;            listtags = mytags.split(&amp;#34;,&amp;#34;)&#xA;            new_tagslist = &amp;#34;&amp;#34;;&#xA;            for uid_tags in listtags:&#xA;                 if (len(uid_tags) &amp;gt; 2):&#xA;                        if uid_tags in UID:&#xA;                             new_tagslist = new_tagslist + TAGS[uid_tags] + &amp;#34;,&amp;#34;;&#xA;            print (&amp;#34;TAGS&amp;#34;,mytags,&amp;#34;==&amp;gt;&amp;#34;,new_tagslist);&#xA;            payload_note = {&#xA;                &amp;#34;id&amp;#34;: myuid,&#xA;                &amp;#34;latitude&amp;#34;: Lat[mylocation_uid],&#xA;                &amp;#34;longitude&amp;#34;: Lng[mylocation_uid],&#xA;                &amp;#34;tags&amp;#34;: new_tagslist,&#xA;                &amp;#34;parent_id&amp;#34;: UID[myfolder_uid],&#xA;                &amp;#34;title&amp;#34;: mytitle,&#xA;                #&amp;#34;created_time&amp;#34;: mydate_ms,&#xA;                &amp;#34;user_created_time&amp;#34;: mydate_ms,&#xA;                &amp;#34;user_updated_time&amp;#34;: mydate_ms,&#xA;                &amp;#34;author&amp;#34;: &amp;#34;Diaro&amp;#34;,&#xA;                &amp;#34;body&amp;#34;: mytext &#xA;            }&#xA;            try:&#xA;                resp = requests.post(url_notes, json=payload_note)&#xA;                #time.sleep(1)&#xA;                resp.raise_for_status()&#xA;                resp_dict = resp.json()&#xA;                print(resp_dict)&#xA;                print(resp_dict[&amp;#39;id&amp;#39;])&#xA;                UID[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;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)&#xA;&#xA;# END : Ouf ...&lt;/code&gt;&lt;/pre&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>Diaro ( diaroapp.com ) : Import from Awesome Note ( bridworks.com )</title>
      <link>https://move.cyber-neurones.org/post/2018/01/2018-01-06-diaro-diaroapp-com-import-from-awesome-note-bridworks-com/</link>
      <pubDate>Sat, 06 Jan 2018 00:00:00 +0000</pubDate>
      <guid>https://move.cyber-neurones.org/post/2018/01/2018-01-06-diaro-diaroapp-com-import-from-awesome-note-bridworks-com/</guid>
      <description>&lt;p&gt;In my opinion Diaro should do more developments on data imports. Currently, people who change from iPhone to Android are looking for an equivalent of Awesome Note. The problem is nobody import Awesome Note data Backup. In fact before &lt;strong&gt;22/05/2017&lt;/strong&gt; it was impossible because the data was encrypted, now it&amp;rsquo;s totally possible. Each note is a plist file in binary format.&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;Since the 22/05/2017, it&amp;rsquo;s more easy to have access to the data with Awesome Note :&lt;/strong&gt; &lt;/p&gt;</description>
    </item>
    <item>
      <title>Why you should not use the app Awesome Note (by BRID Inc.) !</title>
      <link>https://move.cyber-neurones.org/post/2017/01/2017-01-04-why-not-use-the-app-awesome-note-by-brid-inc/</link>
      <pubDate>Wed, 04 Jan 2017 00:00:00 +0000</pubDate>
      <guid>https://move.cyber-neurones.org/post/2017/01/2017-01-04-why-not-use-the-app-awesome-note-by-brid-inc/</guid>
      <description>&lt;p&gt;This is very simple, with this app (&lt;a href=&#34;http://www.bridworks.com/anote/&#34;&gt;Awesome Note&lt;/a&gt;) you don&amp;rsquo;t have a local backup of your data. Currently you have a backup, but &lt;strong&gt;this backup is protect by a password&lt;/strong&gt;. And BRID don&amp;rsquo;t communicate the password. On the site, Awesome don&amp;rsquo;t precise :&lt;/p&gt;&#xA;&lt;blockquote&gt;&#xA;&lt;p&gt;3. Awesome Note Data Backup This will compress all notes created in Awesome Note and save it to &lt;strong&gt;one ‘.anb’ file&lt;/strong&gt;. Backup file will be saved according to the date for you to choose which file to restore from in the future.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Diaro sous Android</title>
      <link>https://move.cyber-neurones.org/post/2016/12/2016-12-14-diaro-sous-android/</link>
      <pubDate>Wed, 14 Dec 2016 00:00:00 +0000</pubDate>
      <guid>https://move.cyber-neurones.org/post/2016/12/2016-12-14-diaro-sous-android/</guid>
      <description>&lt;p&gt;Le site du logiciel est  : &lt;a href=&#34;http://www.diaroapp.com&#34;&gt;http://www.diaroapp.com&lt;/a&gt;  , la dernière version date du &lt;strong&gt;&amp;ldquo;Aug 12, 2016&amp;rdquo;&lt;/strong&gt;. La société qui fait le logiciel est &lt;a href=&#34;http://www.pixelcrater.com&#34;&gt;http://www.pixelcrater.com&lt;/a&gt; (Audit House, 260 Field End Road .Ruislip en GB). Depuis la dernière version il n&amp;rsquo;y a plus beaucoup d&amp;rsquo;activité sur le logiciel. C&amp;rsquo;est bien dommage car il me semblait assez propre. Je pense que c&amp;rsquo;est propre car il est facile pour un autre logiciel de reprendre les données. Le principal problème avec ce type de logiciel c&amp;rsquo;est la migration des données.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Logiciel (Software) pour &#34;Journal personnel&#34; ou &#34;Journal intime&#34; sur Mac, Android, iOS</title>
      <link>https://move.cyber-neurones.org/post/2016/02/2016-02-12-software-journal-personnel-sur-mac-android-ios/</link>
      <pubDate>Fri, 12 Feb 2016 00:00:00 +0000</pubDate>
      <guid>https://move.cyber-neurones.org/post/2016/02/2016-02-12-software-journal-personnel-sur-mac-android-ios/</guid>
      <description>&lt;p&gt;Un petit POST sur ma première analyse de recherche de software pour &amp;ldquo;journal personnel&amp;rdquo;.&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;Sur Mac&lt;/strong&gt; : j&amp;rsquo;en ai sélectionné 7.&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;strong&gt;Day One 2 Journal + Notes&lt;/strong&gt; : l&amp;rsquo;ergonomie est top, voir idéale. Mais il impose son CLOUD, et pour cette raison &lt;strong&gt;il faut fuir ce logiciel&lt;/strong&gt;. Les développeurs semblent en être conscients : &amp;ldquo;What&amp;rsquo;s missing&amp;rdquo;.&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Le lien  : &lt;a href=&#34;http://dayoneapp.com&#34;&gt;http://dayoneapp.com&lt;/a&gt; .&lt;/li&gt;&#xA;&lt;li&gt;Prix : &lt;strong&gt;20 Euros&lt;/strong&gt;.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Mémoir&lt;/strong&gt; : pas une bonne ergonomie. A fuir.&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Le lien : &lt;a href=&#34;http://www.vortimac.com/memoir/index.php&#34;&gt;http://www.vortimac.com/memoir/index.php&lt;/a&gt; &lt;/li&gt;&#xA;&lt;li&gt;Prix : &lt;strong&gt;7,99 Euros&lt;/strong&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Capture 365 Journal&lt;/strong&gt; &lt;strong&gt;(le meilleur à mon avis)&lt;/strong&gt;: bonne ergonomie, bonne sauvegarde il reste a étudier quel est le format de cette sauvegarde. Pour l&amp;rsquo;instant je dirais que c&amp;rsquo;est le meilleur. Ca c&amp;rsquo;est une phrase que j&amp;rsquo;aime : &amp;ldquo;Sync your journals &lt;strong&gt;without the use of a cloud service&lt;/strong&gt;. Sync directly across to your other devices &lt;strong&gt;over your local network&lt;/strong&gt;&amp;rdquo;. Mais bon a l&amp;rsquo;utilisation il se trouve qu&amp;rsquo;il y a pas mal de bug et de reset quand on utilise les TAG. La localisation utilise Foursquare , ce qui veut dire que tout ce qui n&amp;rsquo;est pas dans Foursquare n&amp;rsquo;est pas localisé. C&amp;rsquo;est plus que moyen &amp;hellip; Cependant je persiste à dire que c&amp;rsquo;est le meilleur, &amp;ldquo;au royaume des aveugles les borgnes sont rois&amp;rdquo;.&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Le lien : &lt;a href=&#34;http://capture365journal.com&#34;&gt;http://capture365journal.com&lt;/a&gt; &lt;/li&gt;&#xA;&lt;li&gt;Prix : &lt;strong&gt;14,5 Euros.&lt;/strong&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Travel Journal&lt;/strong&gt; : bon début.&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Le lien : &lt;a href=&#34;http://www.ilifetouch.com/Daily-Expenses&#34;&gt;http://www.ilifetouch.com/Daily-Expenses&lt;/a&gt; &lt;/li&gt;&#xA;&lt;li&gt;Prix : &lt;strong&gt;2,99 Euros&lt;/strong&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;iDo Notepad Pro&lt;/strong&gt; : quand on veut trop en faire cela fini par devenir très sale, à fuir. Il faut que cela soit simple et léger.&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Le lien: &lt;a href=&#34;http://www.idonotepad.com&#34;&gt;http://www.idonotepad.com&lt;/a&gt; &lt;/li&gt;&#xA;&lt;li&gt;Prix : &lt;strong&gt;3,99 Euros&lt;/strong&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Macjournal&lt;/strong&gt; : trop compliqué, mais bravo pour l&amp;rsquo;encryption des données en AES-256. Tous les logiciels devraient avoir cela. Par contre pas de localisation sur une carte &amp;hellip; et un prix de 40 Euros. Le timeline cela peut être sympa par mot clef.&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Le lien : &lt;a href=&#34;http://marinersoftware.com/products/macjournal/&#34;&gt;http://marinersoftware.com/products/macjournal/&lt;/a&gt; &lt;/li&gt;&#xA;&lt;li&gt;Prix : &lt;strong&gt;39,99 Euros&lt;/strong&gt; (aie, pas facile de vendre a ce prix là)&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;mJournal&lt;/strong&gt; : un bon début . Surtout avec l&amp;rsquo;encryption AES-256.&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Le lien :&lt;a href=&#34;http://apps.micw.eu/apps/mjournal/&#34;&gt;http://apps.micw.eu/apps/mjournal/&lt;/a&gt; &lt;/li&gt;&#xA;&lt;li&gt;Prix : Gratuit.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;&lt;strong&gt;Sur iOS&lt;/strong&gt; : J&amp;rsquo;en ai retenu seulement 2.&lt;/p&gt;</description>
    </item>
  </channel>
</rss>
