3 votes

Ouverture des fichiers .memo à partir de l'application de mémo par défaut de Samsung

J'ai des fichiers .memo sur mon PC provenant de l'application mémo par défaut sur un téléphone Samsung précédemment possédé. Lorsqu'ils sont ouverts dans le Bloc-notes, les fichiers ne contiennent pas de texte brut. Comment puis-je récupérer le contenu des mémos ?

3voto

armandfp Points 700

J'ai écrit mon propre convertisseur "memo2txt" en Python. Voici le script (d'abord vous aurez besoin d'installer les libs Python en utilisant pip):

import os
import re
import glob
import zipfile
import xmltodict
from datetime import datetime

MEMO_PATH = r'i:\MY\PROGRAMMING\AndroidMemoExtracter\MemoFiles'
RESULTS_PATH = r'i:\MY\PROGRAMMING\AndroidMemoExtracter\Results'

memos = glob.glob(MEMO_PATH + '\*.memo')

for i, memo in enumerate(memos):
    print('{}/{} - {}'.format(i+1, len(memos), memo))

    try:
        # Extract *.memo file and read the content
        archive = zipfile.ZipFile(memo, 'r')
        memo_content = archive.read('memo_content.xml').decode('utf-8')
        cleanr = re.compile('&.*?;')
        memo_content = re.sub(cleanr, '', memo_content)
        memo_content = xmltodict.parse(memo_content)
        text = memo_content['memo']['contents']['content']

        # Generate filename from memo timestamp
        timestamp = int(memo_content['memo']['header']['meta'][2]['@createdTime'][:10])
        date = datetime.fromtimestamp(timestamp).strftime('%Y-%m-%d %H-%M-%S')
        file_name = '{}.txt'.format(date)

        # Save file as a *.txt
        with open(os.path.join(RESULTS_PATH, file_name), 'w', encoding='utf-8') as file:
            file.write(text)

    except zipfile.BadZipFile:
        continue

2voto

beeshyams Points 37355

En utilisant le lecteur VLC ou en téléchargeant Samsung Note pour PC comme mentionné ici

Les méthodes connexes mentionnées ici pour l'exportation - voir la réponse de Husni pour une solution de fichier zip et d'autres

Comment puis-je exporter des notes Samsung?

2voto

J0N0 Points 11

Inspiré par beeshyams, voici ma version ...

sur mon Samsung J3, les mémos sont dans un lecteur MTP quelque part comme ...

SAMSUNG Android/Phone/ShareMemo/*.memo

le fichier XML source ressemble à ceci :

<p value="memo2" >=====</p><p>https://medium.freecodecamp.org/</p><p>=====</p>

Je lance cette transformation xslt dessus ...

            body {background-color: powderblue;}
            #title {color: red; font-size: 300%;}
            .content {color: green;}

            <xsl:apply-templates select="memo/header/meta[@title]"/>

      ...

       <xsl:attribute name="timestamp">
        <xsl:value-of select="@createdTime" />
       </xsl:attribute>

       <!--  https://float-middle.com/how-to-put-cdata-into-script-tag-in-xslt/ -->
       <xsl:text disable-output-escaping="yes">
        /* &lt;![CDATA[ */
       </xsl:text>
         <xsl:value-of select="$s1" disable-output-escaping="yes"/>
       <xsl:text disable-output-escaping="yes">
        /* ]]&gt; */
       </xsl:text>

      ...

en utilisant lxml depuis python..

import os
import glob
import zipfile
from lxml import etree

import sys

if len(sys.argv) < 3:
    print('python3 convert_memos.py   ')
    sys.exit()

MEMO_PATH = os.path.join(sys.argv[1], '')
HTML_PATH = os.path.join(sys.argv[2], '')

xslt_src = '''[voir xml ci-dessus]'''

memos = glob.glob(MEMO_PATH + '*.memo')

for i, memo in enumerate(memos):

    try:

        archive = zipfile.ZipFile(memo, 'r')
        src = archive.read('memo_content.xml').decode('utf-8')

        xslt = etree.XML(xslt_src)
        xml = etree.XML(str.encode(src))
        transform = etree.XSLT(xslt)
        result = transform(xml)
        root = result.getroot()

        html = etree.tostring(root, pretty_print=True).decode('utf-8')

        filename = '{}.html'.format(os.path.basename(memo))
        filename = os.path.join(HTML_PATH, filename)

        with open(filename, 'w', encoding='utf-8') as file:
            file.write('<!DOCTYPE html>')
            file.write(html)

    except Exception as e:
        print(e)

produit quelque chose comme ..

            body {background-color: powderblue;}
            #title {color: red; font-size: 300%;}
            .content {color: green;}

    ==PROGRAMMATION==

        ==PROGRAMMATION==

    — 

     /* &#60;![CDATA[ */
      var ts = document.currentScript.getAttribute('timestamp')
      document.write("&#34;&#34;+ts+":   "+Date(ts).toLocaleString());
     /* ]]&#62; */

       =====
       https://medium.freecodecamp.org/
       =====

2voto

Je suis en train de forker la version de @Alderven pour importer les fichiers média, et convertir les emojis en caractères UTF-8 appropriés. De cette manière, ils sont faciles à importer dans Notable (sur le bureau Linux) et à synchroniser avec Markor (sur Android). J'ai posté ceci sur mon Github https://github.com/morciej/memo2html - n'hésitez pas à utiliser.

androidalle.com

AndroidAlle est une communauté de androiders où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X