{"id":15722085,"url":"https://github.com/hbmartin/safari-to-sqlite","last_synced_at":"2025-05-13T02:49:36.231Z","repository":{"id":247670801,"uuid":"826025707","full_name":"hbmartin/safari-to-sqlite","owner":"hbmartin","description":"Save tabs from Safari to a SQLite database. Supports Datasette. Can sync multiple devices with Turso.","archived":false,"fork":false,"pushed_at":"2024-12-09T08:45:45.000Z","size":57,"stargazers_count":0,"open_issues_count":3,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-02-26T17:41:08.634Z","etag":null,"topics":["browser-automation","datasette","macos","safari","sqlite"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/hbmartin.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.txt","code_of_conduct":"CODE_OF_CONDUCT.md","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}},"created_at":"2024-07-09T01:15:53.000Z","updated_at":"2024-10-15T20:04:24.000Z","dependencies_parsed_at":"2024-10-24T16:45:09.292Z","dependency_job_id":"7660992e-55e3-4494-803e-fad30dbf6b46","html_url":"https://github.com/hbmartin/safari-to-sqlite","commit_stats":{"total_commits":36,"total_committers":2,"mean_commits":18.0,"dds":"0.16666666666666663","last_synced_commit":"b2b627ec782194cdd7a4921103c3a983b87100de"},"previous_names":["hbmartin/safari-to-sqlite"],"tags_count":4,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hbmartin%2Fsafari-to-sqlite","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hbmartin%2Fsafari-to-sqlite/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hbmartin%2Fsafari-to-sqlite/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hbmartin%2Fsafari-to-sqlite/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/hbmartin","download_url":"https://codeload.github.com/hbmartin/safari-to-sqlite/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":243306890,"owners_count":20270252,"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":["browser-automation","datasette","macos","safari","sqlite"],"created_at":"2024-10-03T22:03:46.443Z","updated_at":"2025-03-12T22:32:32.334Z","avatar_url":"https://github.com/hbmartin.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# safari-to-sqlite\n\n[![PyPI](https://img.shields.io/pypi/v/safari-to-sqlite.svg)](https://pypi.org/project/safari-to-sqlite/)\n[![Lint](https://github.com/hbmartin/safari-to-sqlite/actions/workflows/lint.yml/badge.svg)](https://github.com/hbmartin/safari-to-sqlite/actions/workflows/lint.yml)\n[![Ruff](https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/astral-sh/ruff/main/assets/badge/v2.json)](https://github.com/astral-sh/ruff)\n[![Code style: black](https://img.shields.io/badge/🐧️-black-000000.svg)](https://github.com/psf/black)\n[![Checked with pytype](https://img.shields.io/badge/🦆-pytype-437f30.svg)](https://google.github.io/pytype/)\n[![Versions](https://img.shields.io/pypi/pyversions/safari-to-sqlite.svg)](https://pypi.python.org/pypi/safari-to-sqlite)\n[![discord](https://img.shields.io/discord/823971286308356157?logo=discord\u0026label=\u0026color=323338)](https://discord.gg/EE7Hx4Kbny)\n[![twitter](https://img.shields.io/badge/@hmartin-00aced.svg?logo=twitter\u0026logoColor=black)](https://twitter.com/hmartin)\n\nSave tabs from Safari to a SQLite database. Multiple devices can be synced with Turso. Search and explore with [Datasette](https://datasette.io/)!\n\n- [How to install](#how-to-install)\n- [Usage](#usage)\n- [Authentication](#authentication)\n- [Downloading missing body content](#downloading-missing-body-content)\n\n## How to install\n\nThis package is available on PyPI and can be installed with pipx:\n\n```bash\nbrew install pipx\npipx install safari-to-sqlite\n```\n\n## Usage\n\nTo save your Safari tabs to a SQLite database, run:\n\n```bash\nsafari-to-sqlite\n```\n\nThis will save the tabs to a file called `safari-tabs.db` in your current directory.\n\nOr to specify a database file:\n\n```bash\nsafari-to-sqlite tabs.db\n```\n\n## Authentication\nCross device sync is possible using a [Turso](https://turso.tech) account. \nYou can configure your own database or allow this tool to automatically perform setup for you.\nTo authenticate, run:\n\n```bash\nsafari-to-sqlite auth\n```\n\nIf you don't have an existing Turso account or database, no problem!\nThis command will walk you through the setup process by installing the Turso CLI with brew and creating a new database for you.\nOtherwise, you can manually enter your own database URL and token.\n\n## Downloading missing body content\n\nSafari may not return the tab's body content if it is not available for some reason. To download and extract page content when this is missing, run:\n\n```bash\nsafari-to-sqlite download\n```\n\n## Development\n\nPull requests are very welcome! For major changes, please open an issue first to discuss what you would like to change.\n\n### Setup\n\n```bash\nbrew install python3\n# If you don't have python3 installed\n\ngit clone git@github.com:hbmartin/safari-to-sqlite.git\ncd safari-to-sqlite\n\npython3 -m venv venv\nsource venv/bin/activate\npip install -r requirements.txt\n\npython -m safari_to_sqlite\n```\n\n### Code Formatting\n\nThis project is linted with [ruff](https://docs.astral.sh/ruff/) and uses [Black](https://github.com/psf/black) code formatting.\n\n## Authors\n\n* [Harold Martin](https://www.linkedin.com/in/harold-martin-98526971/) - harold.martin at gmail\n\n## License\n\n© [Harold Martin](https://www.linkedin.com/in/harold-martin-98526971/) - released under [Apache-2.0 license](LICENSE.txt)\n\nSafari is a registered trademark of Apple Inc.","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhbmartin%2Fsafari-to-sqlite","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fhbmartin%2Fsafari-to-sqlite","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhbmartin%2Fsafari-to-sqlite/lists"}