{"id":15017378,"url":"https://github.com/nigelhorne/gedcom","last_synced_at":"2025-04-09T19:42:24.100Z","repository":{"id":19161346,"uuid":"22393005","full_name":"nigelhorne/gedcom","owner":"nigelhorne","description":"Gedcom utility program","archived":false,"fork":false,"pushed_at":"2024-05-22T15:16:36.000Z","size":3257,"stargazers_count":22,"open_issues_count":6,"forks_count":7,"subscribers_count":4,"default_branch":"master","last_synced_at":"2024-05-22T16:36:24.499Z","etag":null,"topics":["anniversaries","birthday","family","family-history","gedcom","gedcom-files","genealogy","genealogy-calendar","perl","perl-script","perl5"],"latest_commit_sha":null,"homepage":"","language":"Perl","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/nigelhorne.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null},"funding":{"github":"nigelhorne","patreon":null,"open_collective":null,"ko_fi":null,"tidelift":null,"community_bridge":null,"liberapay":null,"issuehunt":null,"otechie":null,"lfx_crowdfunding":null,"custom":["https://www.paypal.com/paypalme/bandsman"]}},"created_at":"2014-07-29T19:43:08.000Z","updated_at":"2024-05-28T23:22:45.721Z","dependencies_parsed_at":"2023-10-12T04:45:36.474Z","dependency_job_id":"2ca7e139-ff25-44f1-90f4-f91a64fa5497","html_url":"https://github.com/nigelhorne/gedcom","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nigelhorne%2Fgedcom","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nigelhorne%2Fgedcom/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nigelhorne%2Fgedcom/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nigelhorne%2Fgedcom/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/nigelhorne","download_url":"https://codeload.github.com/nigelhorne/gedcom/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248101060,"owners_count":21047893,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["anniversaries","birthday","family","family-history","gedcom","gedcom-files","genealogy","genealogy-calendar","perl","perl-script","perl5"],"created_at":"2024-09-24T19:50:22.877Z","updated_at":"2025-04-09T19:42:24.094Z","avatar_url":"https://github.com/nigelhorne.png","language":"Perl","funding_links":["https://github.com/sponsors/nigelhorne","https://www.paypal.com/paypalme/bandsman"],"categories":[],"sub_categories":[],"readme":"[![Tweet](https://img.shields.io/twitter/url/http/shields.io.svg?style=social)](https://x.com/intent/tweet?text=A+general+purpose+utility+for+gedcom+files+#genealogy\u0026url=https://github.com/nigelhorne/gedcom\u0026via=nigelhorne)\n\n# Gedcom Utility\n\n`Gedcom` is a powerful utility for managing and analyzing Gedcom genealogy files.\nIt offers a variety of tools for exploring family data,\nidentifying errors and presenting information in useful formats.\n\n## Key Features\n\n### Family Anniversaries\n\n* Identify today's birthdays and death anniversaries from your family tree.\n\n* Use the -l flag to include living relatives.\n\n* The -d flag provides detailed biographies.\n\n#### Autmate with Cron\n\nReceive a daily e-mail:\n\n    3 5 * * * gedcom -dl gedcom-file.ged\n\nor\n\n    22 5 * * * gedcom -dth 'Your Full Name' gedcom-file.ged\n\n### Gedcom Validation\n\nIdentify and correct issues like:\n\n* Missing or inconsistent data\n\n* Duplicate entries\n\n* Incorrect date formats\n\nFor example:\n\n    gedcom -dAwWl gedcom-file.ged \u003e /dev/null\n\nTo categorised errors:\n\n    gedcom -dAwWl gedcom-file.ged \u003e /dev/null 2\u003e /tmp/errs\n    sort -t: -k2 /tmp/errs\n\n### Genealogy Calendar\n\nCreate month-to-page calendars for your family:\n\n    for i in {1..12}; do\n        gedcom -dwHm $i -y $(date +%Y) gedcom-file.ged \u003e $i.html\n    done\n\nTo filter calendars by surname:\n\n    for i in 1 2 3 4 5 6 7 8 9 10 11 12\n    do\n        gedcom -dwHlm $i -y $(date +%Y) -h 'John Smith' -s gedcom-file.ged \u003e $i.html\n    done\n\nCreate an ICS file to import to Google Calendar:\n\n    gedcom -i /tmp/ics.ics gedcom-file.ged\n\n### Google Maps Integration\n\nGenerate CSV files for mapping ancestor locations:\n\n    gedcom -xsh Smith gedcom-file-ged \u003e smith.csv\n\n* Upload the CSV file to Google Drive\n* Visit [Google Maps](https://google.com/maps),\non the 3 horizontal lines choose \"your places\" (\"Vos adresses\"), then \"maps\" (\"Cartes\")\n* Click \"create map\", choose \"import\" and upload your file,\nchoose \"Location\" as the position column and \"People\" as the title column\n\nYou may see that several rows can't be seen in the map,\nthis is an opportunity to find locations in your map that are incorrect.\n\n### Family History Book\n\nCreate a PDF genealogy book for special occasions:\n\n    # Note that this will only print people related to your father, even if you give -a\n    # yum install gd-devel ImageMagick-devel\n    gedcom -B family-history.pdf -dh \"Your Father's Full Name\" gedcom-file.ged\n\nFor a surname-specific book:\n\n    gedcom -GB smith.pdf -dsh 'John Smith' gedcom-file.ged\n\n## Environment Variables\n\n`Gedcom` honours the following environment variables for improved compatibility:\n\n* BMAP_KEY - Bing (virtualearth.net) API Key\n* GEONAMES_USER - geonames.org registered username\n* GMAP_KEY - Google Places (maps.googleapis.com) API Key\n* LANG - some handling of en_GB and en_US translating between then, fr_FR is a work in progress\n* OPENADDR_HOME - directory of data from http -//results.openaddresses.io/\n* REDIS_SERVER - ip:port pair of where to cache geo-coding data\n* OPENAI_KEY - experimental: use the key from openai.com to enhance the text\n\n## Runtime Options\n\n`Gedcom` comes with various options that let you customize how your family tree website is generated.\nHere’s what each option does:\n\n### Command-Line Flags\n\n| Flag | Description |\n| ---- | ----------- |\n| -a | all days otherwise just today |\n| -A | print everyone, in alphabetical order |\n| -b | only print birthdays |\n| -B | create a genealogy book |\n| -c | give citations on detailed listing |\n| -C | print birth dates of children |\n| -d | show the detailed lifetime information about the person |\n| -D | only print anniversaries of deaths |\n| -e | external website to use for the -L option |\n| -f | treat warnings as fatals, implies -w |\n| -F | create a forefathers book |\n| -G | print everyone, in generation order |\n| -g | prints a GML of the locations |\n| -H | Print an HTML calendar of this month |\n| -h | set the home person - useful for calculating relationships with -d |\n| -i | creates an ICS file |\n| -l | include living people |\n| -L | include ged2site hyperlinks with -H |\n| -m | month for -H calendar |\n| -M | produce a map of a place (currently only Kent is supported) as an animated gif of births and migration pattern into $surname.gif or all.gif |\n| -O | print a list of occupations, useful for finding typos and inconsistencies |\n| -p | print the biography of the given person |\n| -P | print a list of places, useful for finding typos of inconsistencies |\n| -r | print a list of residences, useful for finding typos and inconsistencies |\n| -t | print tomorrow's information, don't use with -a |\n| -s | only print entries matching the home person's surname |\n| -S | create an SQLite database from a Gedcom |\n| -v | verbose - for debugging |\n| -w | print warning about inconsistent data - a sort of lint for Gedcom files |\n| -W | don't colorize warning output |\n| -x | prints a list of towns in a format suitable to import into a google map |\n| -X | prints a CSV of information |\n| -y | year for -H calendar, or -T to give a list of places for a specific year |\n\n## Running on Windows\n\n* Firstly, if you're running Windows 10, install\n[Ubuntu](https://ubuntu.com/tutorials/ubuntu-on-windows#1-overview)\nor install Perl directly, either ActiveState or Strawberry should work fine.\nI have also had success using Cygwin's Perl.\n\n* Next follow the instructions at [local::lib](https://metacpan.org/pod/local::lib#The-bootstrapping-technique).\n\n* Load in all the CPAN modules that gedcom uses.\nIf you're not sure, run gedcom with no arguments and the program will install its core modules to get started.\n\n## Bugs\n\nThere will be numerous strange handling of Gedcoms since it's not that tightly\nobserved by websites.\nIf you see lumpy English text in the output, or just plain mistakes,\nplease e-mail me or add a bug report to github.com/nigelhorne/gedcom.\n\nI've tested against a number of Gedcoms including the Torture Tests at\nhttps://www.tamurajones.net/DownloadTortureTests.xhtml and gedcoms\nfrom gedcomlibrary.com.\n\nWith the -T option, countries and counties can be optimized out.\nThat will be fixed.\n\nDifferent people use different ways to format and enter information,\nged2site goes out of its way to support all of these,\nsuch as different location and date formats.\nIf your data shows issues with this aim, let me know.\n\nThe story telling format is hard coded, it would be useful if it were configurable.\n\n## Pre-Requisites\n\nGedcom uses many CPAN modules which it will try to install if they are not\non your system.\nIf it doesn't have the necessary privilege to install the modules it will\nfail on starting up with \"permission denied\" errors.\nThis is most likely because you're not running as root\n(which is of course how it should be)\nand you're not using [local::lib](https://metacpan.org/pod/local::lib),\nor [Perlbrew](https://perlbrew.pl/).\n\nRunning the program for the first time with no\narguments should install them,\nof course that will fail if you don't have the privilege,\nin which case you'll need to add them by hand.\nTo install by hand you'll either have to use local::lib or perlbrew.\nOf course you could also run gedcom as root,\nbut I strongly advise you don't do that.\n\nYou can also try\n```cpan -i lazy \u0026\u0026 perl -Mlazy gedcom```\nthough I've not tested that.\n\nTo use the -B option on FreeBSD you'll need to\n\"sudo pkg install pkgconf gdlib ImageMagick7;\ncd /usr/local/lib;\nsudo ln -s libMagick++-7.so libMagickCore-7.Q16HDRI.so\"\n\nTo use the -M option on FreeBSD you'll need to\n\"sudo pkg install apngasm\"\n\n## Acknowledgements\n\nSo many Perl CPAN modules that if I list them all I'll miss one, but special\nmention goes to the [Gedcom](http://search.cpan.org/~pjcj/Gedcom/) module.\n\n## See Also\n\n* [ged2site](https://github.com/nigelhorne/ged2site) - create a website from a Gedcom file\n* [gedcmp](https://github.com/nigelhorne/gedcmp) - compare two Gedcoms\n* [lib](https://github.com/nigelhorne/lib) - library of routines used by this package\n* [The Perl-GEDCOM Mailing List](https://www.miskatonic.org/pg/) - dead mailing list, you can check the archives\n\n## LICENSE AND COPYRIGHT\n\nCopyright 2015-2025 Nigel Horne.\n\nThis program is released under the following licence: GPL for personal use on a single computer.\nAll other users (including Commercial, Charity, Educational, Government)\nmust apply in writing for a licence for use from Nigel Horne at\n`\u003cnjh at nigelhorne.com\u003e`.\n\n## Support\n\nPlease report any bugs or feature requests to the author.\nThis module is provided as-is without any warranty.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnigelhorne%2Fgedcom","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fnigelhorne%2Fgedcom","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnigelhorne%2Fgedcom/lists"}