From ef09fb2f02a01bb570f27b8fda819ebd31363bdd Mon Sep 17 00:00:00 2001 From: =?utf8?q?Beno=C3=AEt=20Fontaine?= Date: Tue, 19 Dec 2017 15:39:33 +0100 Subject: [PATCH] Add CONT tag to fact descriptions --- fsearch_translation.py | 176 ++++++++++++++++++++--------------------- getmyancestors.py | 21 +++-- mergemyancestors.py | 7 +- 3 files changed, 103 insertions(+), 101 deletions(-) diff --git a/fsearch_translation.py b/fsearch_translation.py index d899bed..1465d2f 100644 --- a/fsearch_translation.py +++ b/fsearch_translation.py @@ -1,98 +1,98 @@ translations = { - "Life Sketch": { - "de": "Kurzinfo zum Lebenslauf", - "eo": "[Ļîƒé Šķéţçĥ---- П國カ내]", - "es": "Resumen de la vida de la persona", - "fr": "Biographie succincte", - "it": "Profilo", - "ja": "生涯の概要", - "ko": "인생 개요", - "pt": "Resumo da Vida", - "ru": "Краткое жизнеописание", - "zh": "生活簡述" + 'Life Sketch': { + 'de': 'Kurzinfo zum Lebenslauf', + 'eo': '[Ļîƒé Šķéţçĥ---- П國カ내]', + 'es': 'Resumen de la vida de la persona', + 'fr': 'Biographie succincte', + 'it': 'Profilo', + 'ja': '生涯の概要', + 'ko': '인생 개요', + 'pt': 'Resumo da Vida', + 'ru': 'Краткое жизнеописание', + 'zh': '生活簡述' }, - "Contributors": { - "de": "Mitwirkende", - "eo": "Contributors", - "es": "Colaboradores", - "fr": "Contributeurs", - "it": "Contributori", - "ja": "貢献者", - "ko": "기여자", - "pt": "Colaboradores", - "ru": "Авторы", - "zh": "贡献者" + 'Contributors': { + 'de': 'Mitwirkende', + 'eo': 'Contributors', + 'es': 'Colaboradores', + 'fr': 'Contributeurs', + 'it': 'Contributori', + 'ja': '貢献者', + 'ko': '기여자', + 'pt': 'Colaboradores', + 'ru': 'Авторы', + 'zh': '贡献者' }, - "Stillborn": { - "de": "Tot geboren", - "eo": "[Šţîļļƀöŕñ----------- П國カ내]", - "es": "Nacido muerto o mortinato", - "fr": "Mort-né(e)", - "it": "Nato morto", - "ja": "死産", - "ko": "사산아", - "pt": "Natimorto", - "ru": "Мертворожденный", - "zh": "死胎" + 'Stillborn': { + 'de': 'Tot geboren', + 'eo': '[Šţîļļƀöŕñ----------- П國カ내]', + 'es': 'Nacido muerto o mortinato', + 'fr': 'Mort-né(e)', + 'it': 'Nato morto', + 'ja': '死産', + 'ko': '사산아', + 'pt': 'Natimorto', + 'ru': 'Мертворожденный', + 'zh': '死胎' }, - "Affiliation": { - "de": "Zugehörigkeit", - "eo": "[Ńƒîļîåţîöñ---- П國カ내]", - "es": "Afiliación", - "fr": "Affiliation", - "it": "Affiliazione", - "ja": "所属", - "ko": "소속", - "pt": "Afiliação", - "ru": "Принадлежность", - "zh": "所屬團體" + 'Affiliation': { + 'de': 'Zugehörigkeit', + 'eo': '[Ńƒîļîåţîöñ---- П國カ내]', + 'es': 'Afiliación', + 'fr': 'Affiliation', + 'it': 'Affiliazione', + 'ja': '所属', + 'ko': '소속', + 'pt': 'Afiliação', + 'ru': 'Принадлежность', + 'zh': '所屬團體' }, - "Clan Name": { - "de": "Bezeichnung des Clans", - "eo": "[Çļåñ Ñåɱé----------- П國カ내]", - "es": "Nombre del clan", - "fr": "Nom de clan", - "it": "Nome clan", - "ja": "氏族名", - "ko": "씨족 이름", - "pt": "Nome do Clã", - "ru": "Название клана", - "zh": "氏族名字" + 'Clan Name': { + 'de': 'Bezeichnung des Clans', + 'eo': '[Çļåñ Ñåɱé----------- П國カ내]', + 'es': 'Nombre del clan', + 'fr': 'Nom de clan', + 'it': 'Nome clan', + 'ja': '氏族名', + 'ko': '씨족 이름', + 'pt': 'Nome do Clã', + 'ru': 'Название клана', + 'zh': '氏族名字' }, - "National Identification": { - "de": "Ausweisnummer", - "eo": "[Ñåţîöñåļ Îðéñţîƒîçåţîöñ----------- П國カ내]", - "es": "Identificación nacional", - "fr": "Numéro national d’identification", - "it": "Documento di identità", - "ja": "国民登録番号", - "ko": "주민등록번호", - "pt": "Carteira de Identidade Nacional", - "ru": "Удостоверение личности", - "zh": "國民身分證" + 'National Identification': { + 'de': 'Ausweisnummer', + 'eo': '[Ñåţîöñåļ Îðéñţîƒîçåţîöñ----------- П國カ내]', + 'es': 'Identificación nacional', + 'fr': 'Numéro national d’identification', + 'it': 'Documento di identità', + 'ja': '国民登録番号', + 'ko': '주민등록번호', + 'pt': 'Carteira de Identidade Nacional', + 'ru': 'Удостоверение личности', + 'zh': '國民身分證' }, - "Race": { - "de": "Ethnische Zugehörigkeit", - "eo": "[Ŕåçé- П國カ내]", - "es": "Raza", - "fr": "Race", - "it": "Razza", - "ja": "人種", - "ko": "인종", - "pt": "Raça", - "ru": "Раса", - "zh": "種族" + 'Race': { + 'de': 'Ethnische Zugehörigkeit', + 'eo': '[Ŕåçé- П國カ내]', + 'es': 'Raza', + 'fr': 'Race', + 'it': 'Razza', + 'ja': '人種', + 'ko': '인종', + 'pt': 'Raça', + 'ru': 'Раса', + 'zh': '種族' }, - "Tribe Name": { - "de": "Bezeichnung des Stammes", - "eo": "[Ţŕîƀé Ñåɱé------------- П國カ내]", - "es": "Nombre de la tribu", - "fr": "Nom de tribu", - "it": "Nome tribù", - "ja": "部族名", - "ko": "부족명", - "pt": "Nome da Tribo", - "ru": "Название племени", - "zh": "部落名字" + 'Tribe Name': { + 'de': 'Bezeichnung des Stammes', + 'eo': '[Ţŕîƀé Ñåɱé------------- П國カ내]', + 'es': 'Nombre de la tribu', + 'fr': 'Nom de tribu', + 'it': 'Nome tribù', + 'ja': '部族名', + 'ko': '부족명', + 'pt': 'Nome da Tribo', + 'ru': 'Название племени', + 'zh': '部落名字' }, } diff --git a/getmyancestors.py b/getmyancestors.py index 062fb1b..bf155ec 100755 --- a/getmyancestors.py +++ b/getmyancestors.py @@ -27,6 +27,7 @@ import argparse import getpass import time import asyncio +import re from fsearch_translation import translations try: @@ -69,6 +70,10 @@ FACT_EVEN = { } +def cont(level, string): + return re.sub(r'[\r\n]+', '\n' + str(level) + ' CONT ', string) + + # FamilySearch session class class Session: def __init__(self, username, password, verbose=False, logfile=sys.stderr, timeout=60): @@ -279,7 +284,7 @@ class Note: self.text = text.strip() def print(self, file=sys.stdout): - file.write('0 @N' + str(self.num) + '@ NOTE ' + self.text.replace('\n', '\n1 CONT ') + '\n') + file.write('0 @N' + str(self.num) + '@ NOTE ' + cont(1, self.text) + '\n') def link(self, file=sys.stdout, level=1): file.write(str(level) + ' NOTE @N' + str(self.num) + '@\n') @@ -317,11 +322,11 @@ class Source: def print(self, file=sys.stdout): file.write('0 @S' + str(self.num) + '@ SOUR \n') if self.title: - file.write('1 TITL ' + self.title.replace('\n', '\n2 CONT ') + '\n') + file.write('1 TITL ' + cont(2, self.title) + '\n') if self.citation: - file.write('1 AUTH ' + self.citation.replace('\n', '\n2 CONT ') + '\n') + file.write('1 AUTH ' + cont(2, self.citation) + '\n') if self.url: - file.write('1 PUBL ' + self.url.replace('\n', '\n2 CONT ') + '\n') + file.write('1 PUBL ' + cont(2, self.url) + '\n') for n in self.notes: n.link(file, 1) file.write('1 REFN ' + self.fid + '\n') @@ -362,7 +367,7 @@ class Fact: elif self.type: file.write('1 EVEN\n2 TYPE ' + self.type) if self.value: - file.write('\n2 NOTE Description: ' + self.value) + file.write('\n2 NOTE Description: ' + cont(3, self.value)) else: return file.write('\n') @@ -388,7 +393,7 @@ class Memorie: def print(self, file=sys.stdout): file.write('1 OBJE\n2 FORM URL\n') if self.description: - file.write('2 TITL ' + self.description.replace('\n', '\n2 CONT ') + '\n') + file.write('2 TITL ' + cont(2, self.description) + '\n') if self.url: file.write('2 FILE ' + self.url + '\n') @@ -666,7 +671,7 @@ class Indi: for o in self.sources: o[0].link(file, 1) if len(o) > 1: - file.write('2 PAGE ' + o[1].replace('\n', '\n2 CONT ') + '\n') + file.write('2 PAGE ' + cont(2, o[1]) + '\n') # GEDCOM family class @@ -762,7 +767,7 @@ class Fam: for o in self.sources: o[0].link(file, 1) if len(o) > 1: - file.write('2 PAGE ' + o[1].replace('\n', '\n2 CONT ') + '\n') + file.write('2 PAGE ' + cont(2, o[1]) + '\n') # family tree class diff --git a/mergemyancestors.py b/mergemyancestors.py index dff90c4..8b658bd 100755 --- a/mergemyancestors.py +++ b/mergemyancestors.py @@ -225,11 +225,6 @@ class Gedcom: def __get_fact(self): fact = Fact() - # if self.tag == 'EVEN': - # self.__get_line() - # fact.type = self.data - # self.__get_line() - # fact.value = self.data[12:] if self.tag != 'EVEN': fact.type = FACT_TYPES[self.tag] fact.value = self.data @@ -248,6 +243,8 @@ class Gedcom: if num not in self.note: self.note[num] = Note(tree=self.tree, num=num) fact.note = self.note[num] + elif self.tag == 'CONT': + fact.value += '\n' + self.data self.flag = True return fact -- 2.52.0