{"id":23547230,"url":"https://github.com/kpanic/pollicino","last_synced_at":"2025-06-14T09:06:39.865Z","repository":{"id":29122899,"uuid":"32652655","full_name":"kpanic/pollicino","owner":"kpanic","description":"Street search, spiced up with multiple storage and geocoders","archived":false,"fork":false,"pushed_at":"2016-04-09T18:17:19.000Z","size":1464,"stargazers_count":19,"open_issues_count":0,"forks_count":4,"subscribers_count":5,"default_branch":"master","last_synced_at":"2025-06-14T09:06:32.721Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/kpanic.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"COPYING","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2015-03-21T22:31:21.000Z","updated_at":"2018-03-21T20:46:08.000Z","dependencies_parsed_at":"2022-07-25T18:47:11.845Z","dependency_job_id":null,"html_url":"https://github.com/kpanic/pollicino","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/kpanic/pollicino","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kpanic%2Fpollicino","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kpanic%2Fpollicino/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kpanic%2Fpollicino/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kpanic%2Fpollicino/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/kpanic","download_url":"https://codeload.github.com/kpanic/pollicino/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kpanic%2Fpollicino/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":259790455,"owners_count":22911547,"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":[],"created_at":"2024-12-26T09:14:59.975Z","updated_at":"2025-06-14T09:06:39.840Z","avatar_url":"https://github.com/kpanic.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Pollicino\n\n## Street search, spiced up with multiple storage and geocoders\n\n## Find Pollicino by following breadcrumbs in the woods!\n\n* Free software: LGPL3 license\n\n**Description**\n\nThe aim of this project is to be able to execute search in a populated storage\n(Elasticsearch, redis, etc) and to use multiple geocoding backends\n(OpenStreetMap, Google maps and so on) as a fallback if the address is not\npresent.\nThe current (and only) storage used is Elasticsearch, there might be different\nstorage support in the future. For instance, redis.\n\n## Example interface for the API\n\n![geocode](img/pollicino.gif)\n\n## Do-not-use (yet ;)) (really)\n\n```python\nfrom pollicino import config\n\nfrom pollicino.geocoder import GeocoderClient\n\ngeocoder = GeocoderClient.from_config(config.CONFIG)\n\nresult = geocoder.geocode('Via Recoaro 1, Broni')\nprint result\n\n# Formatted for your convenience\n\n{'city': u'Broni',\n 'coordinates': [9.2732744, 45.0688205],\n 'country': u'Italy',\n 'country_code': u'IT',\n 'county': u'Lombardia',\n 'full_address': u'Via dei Recoaro, 1, 27043 Broni PV, Italy',\n 'house_number': u'1',\n 'neighbourhood': None,\n 'postcode': u'27043',\n 'road': u'Via dei Recoaro',\n 'state': u'Lombardia',\n 'suburb': u'Pavia'}\n```\n\n## System requirements to be installed\n\n* Download Elasticsearch 2.3.x\n\n* Install the ICU Analisys plugin for Elasticsearch\n\n    sudo /usr/share/elasticsearch/bin/plugin install analysis-icu\n\n  on debian systems\n\n* Restart Elasticsearch\n\n**NOTE**\non Debian based distributions the `plugin` command is located in:\n\n`/usr/share/elasticsearch/bin/plugin`\n\n* Install Python modules\n```\npython setup.py develop\n```\n\n## Warming up the Elasticsearch storage from an OpenStreetMap data excerpt\n\nExecute: `./scripts/import_addresses.py`\nYou should have in the `pollicino` index an excerpt of the streets of\n**Berlin**.\nTry to search for `Landsberg`, it should match `Landsberg*` from Elasticsearch,\notherwise fallback to Google Maps\n\n**NOTE**\nPer **Google Maps Terms of Use**, the data can be cached for 30 days maximum, this\nwill be handled at some point in `pollicino`\n\n## Demo example api plus autocomplete frontend\n\nYou can find a bare bone \"web interface\" in [examples](examples)\n\nTo play with the demo, launch the development server:\n\n`python examples/api.py`\n\nAnd point your browser to http://localhost:5000\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkpanic%2Fpollicino","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fkpanic%2Fpollicino","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkpanic%2Fpollicino/lists"}