#11  
Alt 14.10.2020, 14:43
HKD HKD ist offline
Benutzer
 
Registriert seit: 20.06.2010
Beiträge: 49
Standard

@sonki

Interessant Deine Beiträge. Sollten wir dazu nicht ein separates Thema unter dem Titel 'Gramps & Python' oder allgemeiner 'Gramps & Programmierung' aufmachen?

Meine erste Frage dazu wäre nämlich, von welcher Oberfläche Dein Skript gestartet werden sollte. Über die Win cmd.exe oder über das Python Kommandozeilen-Gramplet? Mein OS ist Win10.

HKD
Mit Zitat antworten
  #12  
Alt 14.10.2020, 15:12
sonki sonki ist offline
Erfahrener Benutzer
 
Registriert seit: 10.05.2018
Beiträge: 2.554
Standard

Zitat:
Zitat von HKD Beitrag anzeigen
Meine erste Frage dazu wäre nämlich, von welcher Oberfläche Dein Skript gestartet werden sollte. Über die Win cmd.exe oder über das Python Kommandozeilen-Gramplet? Mein OS ist Win10.
Also ich starte das vom Windows Command Prompt (bzw. aus meinem Editor - Visual Studio Code - in der integrierten Windows Powershell). Voraussetzung ist natürlich das Python installiert ist.

Das Gramps Python Shell Gramplet habe ich mir noch nicht wirklich angeschaut, aber da müsste man einige Anpassungen im Script vornehmen, da sich die Import Pfade ändern ect..
Ich bevorzuge halt den komplett externen Zugriff auf die Gramps Sqlite Datenbank - aber wie gesagt, vielleicht geht es über die Gramps Shell leichter & besser. Allerdings wird es je nachdem was man im Script alles machen will besser mit einem externen Start - spätestens bei der Installation von externen Bibliotheken via pip will man das ja in einer virtual env (venv) Umgebung machen um sich die Default Python-Installation nicht zuzumüllen.
__________________
Private Nachrichten möglichst vermeiden!

Geändert von sonki (14.10.2020 um 17:03 Uhr)
Mit Zitat antworten
  #13  
Alt 18.10.2020, 12:13
Oberschwabe Oberschwabe ist offline männlich
Benutzer
Themenstarter
 
Registriert seit: 23.07.2016
Beiträge: 36
Standard

Zitat:
Zitat von HKD Beitrag anzeigen
Bitte entschuldige diesen harten Vergleich, aber was ist einfacher als die Kinder direkt in Gramps einzugeben?
Du hast eine Quelle/Fundstelle, die Du einmalig über die Quellenverwaltung anlegst und dann in die Zwischenablage schiebst.
Du hast einen Ort, den Du - wenn er nicht schon vorhanden ist - über die Orteverwaltung anlegst und von dort in die Zwischenablage schiebst .
Du hast evtl. Medien, die Du einmalig über die Medienverwaltung anlegst und dann in die Zwischenablage schiebst.

Im Familieneditor klickst Du auf 'Kind hinzufügen', gibst den Vornamen ein, der Nachname wird Dir (vom Vater abgeleitet) bereits vorgeschlagen.

Im Ereigniseditor muss nur noch das Datum eingetragen werden. Die Ereignisart 'Geburt' ist bereits vorbelegt, den Ort ziehst Du mit der Maus aus der Zwischenablage ins Ortefeld. Und aus der Zwischenablage ziehst Du auch Quelle/Fundstelle und ggf. Medium auf die entsprechenden Reiter im Personeneditor.
Hallo HKD,

ich hätte vielleicht dazu sagen sollen, dass mir in einigen Fällen solche Excel-Tabellen mit den Kindern bereits vorliegen. Beispielsweise exportiere ich mir ganz gerne Suchergebnisse von Familysearch als Exceltabelle. Dann lösche ich einfach die unnötigen Spalten und schon habe ich alle Kinder mit Taufdatum und Taufort aufgelistet. Dann ist der csv-Import sicher die schnellste Möglichkeit. (Keine Sorge, die Angaben werden natürlich überprüft bzw. als nicht geprüft gekennzeichnet)

Ansonsten gebe ich dir recht, dass man auch in Gramps mit der Zwischenablage sehr effektiv arbeiten kann. Danke für die Beschreibung deines "Workflows". Das ist deutlich schneller als meine bisherige Arbeitsweise.

Ich werde trotzdem den CSV Import ausprobieren. Mit der Zeit zeigt sich dann, welche Methode sich wofür am besten eignet.
Mit Zitat antworten
  #14  
Alt 18.10.2020, 12:43
HKD HKD ist offline
Benutzer
 
Registriert seit: 20.06.2010
Beiträge: 49
Standard

Hallo Oberschwabe,

ich hatte schon befürchtet, durch meine besserwisserische Antwort Dein Thema kaputt gemacht zu haben.

Natürlich muss jeder für sich entscheiden, wie er die Dinge anpackt. Und so, wie Du es jetzt beschrieben hast, kann ich Deiner Logik folgen.

Vielleicht wollte ich auch nur davor warnen, die gleichen Fehler zu machen wie ich. Anfangs meiner Arbeit bin ich auch zweigleisig gefahren - und habe mich dabei schnell verzettelt.

Beste Grüße
HKD
Mit Zitat antworten
  #15  
Alt 30.10.2020, 11:47
Oberschwabe Oberschwabe ist offline männlich
Benutzer
Themenstarter
 
Registriert seit: 23.07.2016
Beiträge: 36
Standard

Hallo zusammen,

leider scheitere ich immer noch daran sonkis Programm bei mir zum Laufen zu bringen. Das erste Problem war der Pfad
C:/Users/<username>/AppData/Local/GrampsAIO64-5.1.3
Bei mir gibt es unter diesem Pfad kein GrampsAIO64-5.1.3. Also habe ich es zu
C:/Program Files/GrampsAIO64-5.1.3
geändert.

Nun bekomme ich aber noch folgende Fehlermeldung:
.gramps.gen.utils.grampslocale.WARNING: ICU not loaded because No module named 'PyICU'. Localization will be impaired. Use your package manager to install PyICU
.gramps.gen.utils.grampslocale.WARNING: Localization library libintl not on %PATH%, localization will be incomplete


Ich habe dann versucht das Paket PyICU zu installieren. Dazu habe ich zuerst pip install PyICU und dann conda install PyICU in die Konsole eingegeben. Beides hat nicht funktioniert (Paket ist nicht verfügbar).

Habe ich das mit dem Pfad richtig gemacht? Und wie kann ich das fehlende Paket installieren? Ich benutze Windows 10 64 bit und den Spyder-Editor mit Python 3.

Vielen Dank schonmal für eure Hilfe.
Mit Zitat antworten
  #16  
Alt 30.10.2020, 12:40
sonki sonki ist offline
Erfahrener Benutzer
 
Registriert seit: 10.05.2018
Beiträge: 2.554
Standard

Ich kann mich zwar nicht erinnern, das ich diese Meldung bekommen habe, aber wer weiß an was das nun schon wieder liegt.
Falls die Installation von pyicu via pip nicht klappt, kannst du ja mal versuchen es über whl (python wheel) zu installieren:

https://www.lfd.uci.edu/~gohlke/pythonlibs/#pyicu
Dort die richtige Version auswählen (python version und os bit system), runterladen und:
python -m pip install pfad/zum/*.whl
__________________
Private Nachrichten möglichst vermeiden!
Mit Zitat antworten
  #17  
Alt 30.10.2020, 16:27
HKD HKD ist offline
Benutzer
 
Registriert seit: 20.06.2010
Beiträge: 49
Standard

Hallo,

bei mir klappts einwandfrei, nachdem ich Python39 installiert und als Standardanwendung für .py-Dateien festgelegt habe. Hier meine Pfade:

- os.environ['GRAMPS_RESOURCES'] = 'C:/Program Files/Gramps/GrampsAIO64-5.1.2/share'
- sys.path.append(r'C:\Program Files\Gramps\GrampsAIO64-5.1.2')
- db = sqlite.SQLite('D:/Ahnenforschung/_Gramps/GrampsDb512/Demo')

HKD
Mit Zitat antworten
  #18  
Alt 03.11.2020, 15:10
Oberschwabe Oberschwabe ist offline männlich
Benutzer
Themenstarter
 
Registriert seit: 23.07.2016
Beiträge: 36
Standard

Hallo,

nach viel Rumprobieren und einer kompletten Neuinstallation meiner Python-Umgebung habe ich nun festgestellt, dass es bei mir doch funktioniert und ich die Fehlermeldung einfach ignorieren kann. Es kann so einfach sein ...

Also habe ich jetzt mal ein wenig rumgebastelt und eine Funktion geschrieben, die eine CSV-Tabelle einliest. Geplant war damit zu Testzwecken die Fundstellen zu den Geburtseinträgen von 14 Kindern in einem Taufbuch anzulegen. Diese habe ich in Excel mit Namen, Jahrgang und Nummer des Eintrags erfasst und als CSV abgespeichert. Daraus sollten dann die Fundstellen im Format "Jahrgang 1872 Nr. 27 Maximilian Fensterle" erstellt werden.

Da ich noch nicht herausgefunden habe wie das mit den Fundstellen funktioniert, habe ich zum Testen jetzt erstmal Quellen angelegt. Hier der Code:
Code:
import sys
import os
import sqlite3

os.environ['GRAMPS_RESOURCES'] = 'C:/Program Files/GrampsAIO64-5.1.3/share'
sys.path.append(r'C:\Program Files\GrampsAIO64-5.1.3')

from gramps.plugins.db.dbapi import sqlite
from gramps.gen.db.txn import DbTxn
from gramps.gen.dbstate import DbState
from gramps.gen.lib import Repository, Source, Citation


def import_CSV(dateiname):  #Importiert nur eine gewünschte csv-Datei und gibt Liste von Listen zurück
       path = os.path.join(os.getcwd(),"CSVOrdner",dateiname)   # Pfad zu Datei
       with open(path,"r") as f:                                # Packt die Tabelle in eine Liste von Listen
           tmp = f.read().strip().split("\n")
           return [i.split(";")[0:5] for i in tmp[1:]]
              
daten = import_CSV("Fundstellen.csv")

db = sqlite.SQLite('C:/Users/<username>/AppData/Roaming/gramps/grampsdb/5f8c6b11')

for j in range(0, len(daten)):
    title = "Jahrgang " + daten[j][2] + " Nr. " + daten[j][3] +" "+ daten[j][0] +" "+ daten[j][1]
    source = Repository()
    source.set_title(title)
    transaction = DbTxn('msg', db)
    db.add_source(source, transaction)
    db.transaction_commit(transaction)

db.close()
Das funktioniert soweit prima. Nun möchte ich natürlich weiter herumspielen und analog zu "set_title" auch die anderen Felder ausfüllen. Gibt es irgendwo eine Dokumentation wo ich diese ganzen Funktionen finde? Insbesondere würde mich jetzt interessieren wie ich analog zu den Quellen Fundstellen erzeugen kann. Aus dem was ich im Internet finde, werde ich nicht so richtig schlau.

Grüße
Oberschwabe

Geändert von Oberschwabe (03.11.2020 um 15:13 Uhr)
Mit Zitat antworten
  #19  
Alt 03.11.2020, 15:31
sonki sonki ist offline
Erfahrener Benutzer
 
Registriert seit: 10.05.2018
Beiträge: 2.554
Standard

Zitat:
Zitat von Oberschwabe Beitrag anzeigen
Gibt es irgendwo eine Dokumentation wo ich diese ganzen Funktionen finde?
Die API und alle Funktionen sind hier beschrieben - da muss man sich halt durchkämpfen:
https://www.gramps-project.org/docs/api.html
__________________
Private Nachrichten möglichst vermeiden!
Mit Zitat antworten
  #20  
Alt 03.11.2020, 23:28
Oberschwabe Oberschwabe ist offline männlich
Benutzer
Themenstarter
 
Registriert seit: 23.07.2016
Beiträge: 36
Standard

Danke dir!
Mit Zitat antworten
Antwort

Lesezeichen

Stichworte
gramps , makros , python

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.

Gehe zu

Alle Zeitangaben in WEZ +2. Es ist jetzt 03:13 Uhr.