Samstag, März 17, 2007

Freemind: Links zu lokalen Dateien kontrollieren

Ich nutze Freemind (MindMapping Tool) unter anderem, um mir in einem Verzeichnis mit vielen Dokumenten (Artikel und weitere Quellen, in meinen Fall mittlerweile um die 350 Dokumenten) einen Überblick (thematisch) verschaffen zu können, eine äußerst nützliche Funktion.

Allerdings hat man im Laufe der Zeit ja immer wieder etwas verändert, z. B. Dateien verschoben oder unbenannt. Es ist dann recht schwer zu kontrollieren, ob noch alle Verknüpfungen stimmen. Hierzu habe ich mir dann einen kleinen Script geschrieben, der mir diese Arbeit abnimmt und mir die Links anzeigt, für die es keine Datei mehr gibt.

Das Skript läuft bei mir recht gut, ist aber sicherlich sehr verbesserungsfähig. Ist ja aber auch nur "hobby"... Für Tipps bin ich dankbar.

Falls also jemand sowas braucht, hier ist es:


"""
Allgemeine Einstellungen
#######__BITTE ANPASSEN__##########
"""
# Freemind Datei die geprüft werden soll
PfadUndName = r'D:\Ordner1\Ordner2\Freemind_Datei.mm'
#Pfad zu dem Ordner wo alle Dateien liegen - Angabe ohne "\" am Ende!
PfadETMListe = r'D:\Ordner1\Ordner2\Scann'
# Datei in der die falschen, d. h. nicht zu einer Datei führenden Links geschrieben werden sollen
DateiMitFalschenLinks = r'c:\Ordner1\Ordner2\Falschelinks.txt'

"""
Import der benötigten Modulen
"""
from xml.dom.minidom import *
from os import *
from os.path import *

"""
Datei öfnen und Inhalt bzw. Text in eine Variable speichern
Die Datei wird nur zum lesen geöffnet und danach sofort wieder geschlossen
"""
xml_file = file(PfadUndName)
xml_textraw = xml_file.read()
xml_text = xml_textraw.encode("utf-8")
xml_file.close()

# XML Verarbeitung

xml_objekt = parseString(xml_text)
nodeliste = xml_objekt.getElementsByTagName("node")

falschelinks = ["Falsche Links:"]

for node in nodeliste:
pfad = node.getAttribute("LINK")
DateiMitPfad = join(PfadETMListe,pfad)
if isfile(DateiMitPfad) == 0:
falschelinks.append(pfad)

# Alte Datei, falls vorhanden, löschen
if isfile(DateiMitFalschenLinks):
remove(DateiMitFalschenLinks)

# Datei neu anlegen
f = file(DateiMitFalschenLinks,'w+')

# Links die nicht gefunden wurden in neue Datei schreiben
for link in falschelinks:
if link != '':
f.write(link.encode("utf-8"))
f.write("\n")

f.close()

Donnerstag, März 01, 2007

Aus http://www.kinook.com/Forum/showthread.php?threadid=1429
ZITAT-ANFANG
I have a (fairly crude) XSL file which will transform .OML to .XML (readable by MindManager 6 (mindJet)).

To use it Export selected Items from UR as a.OML file, then transform with the attached .XSL file.
To transform I suggest the command line utility "msxsl.exe" from MS which you can get from:

http://tinyurl.com/gub2y

syntax is something like:
msxsl source.oml oml2mmap.xsl -o target.xml

then just load target.xml in MindManager (and format as you require)

NB: As I said this is a fairly crude XSL, it will import all Items but will "flatten" them to core and sub-topics only (no deeply nested topics produced)

ZITAT-ENDE

Software aus http://www.microsoft.com/downloads/details.aspx?FamilyID=2fb55371-c94e-4373-b0e9-db4816552e41&DisplayLang=en

Leo und Freemind -- Bindeglied OPML

Ich nutze seit langem Freemind, z. B. um eine Literaturliste zu Pflegen mit den entsprechenden Links (z. B. zu einer Internetseite oder zu einer PDF-Datei). Zur Bearbeitung von Texten und aufgrund der Möglichkeit Einträge doppelt einzuordnen ist für mich aber LEO das Tool geworden mit dem ich vorwiegend arbeite. Aber eigentlich möchte ich auf keines der beiden verzichten, Freemind ist z. B. zur "Präsentation" von Ideen natürlich wesentlich besser geeignet.

Aber zum Glück speichern beider Tools ihre Daten in XML, was schon mal die Möglichkeiten des Datenaustausches start verbessern. Nun ist es allerdings ein Zeitproblem, sich durch die Spezifikationen durchzuwühlen und dann noch (als "Sonntagsprogrammierer") ein passendes Programm (xslt-Datei) zu schreiben... Aber es gibt ja den OPML-Format. Und das geht wie folgt:
  • Freemind: Im Ordner "accessories" gibt es die Dateien mm2opml.xsl (export) und opml2mm.xsl (import). Geht man über "Datei --> Export --> Mittels XSLT..." kann man diese Dateien entsprechend auswählen und fertig!
  • Leo: Aktiviert man den Plugin leoopml kann man über "Alt-X + read-opml-file" oder "Alt-X + write-opml-file" entsprechend aggieren.
Den Import in Freemind habe ich auf die schnelle nicht getestet. Der Import in Leo funktioniert, allerdings gehen z. B. Links verloren. Der Text aus den Nodes geht komplett in die "Überschrift", das ist aber prinzipiell nicht so tragisch. Wichtig ist, dass die Struktur erhalten bleibt.