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 ?
Réponses
Trop de publicités?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
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
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">
/* <![CDATA[ */
</xsl:text>
<xsl:value-of select="$s1" disable-output-escaping="yes"/>
<xsl:text disable-output-escaping="yes">
/* ]]> */
</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==
—
/* <![CDATA[ */
var ts = document.currentScript.getAttribute('timestamp')
document.write("""+ts+": "+Date(ts).toLocaleString());
/* ]]> */
=====
https://medium.freecodecamp.org/
=====
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.