https://github.com/cointainer/cointainer-scraper-ecb
Cointainer component for scraping coins from the ECB Website.
https://github.com/cointainer/cointainer-scraper-ecb
coins collectables ecb python scraper
Last synced: 3 months ago
JSON representation
Cointainer component for scraping coins from the ECB Website.
- Host: GitHub
- URL: https://github.com/cointainer/cointainer-scraper-ecb
- Owner: cointainer
- License: apache-2.0
- Created: 2020-09-07T23:52:08.000Z (almost 6 years ago)
- Default Branch: main
- Last Pushed: 2022-12-19T12:38:35.000Z (over 3 years ago)
- Last Synced: 2025-03-21T22:03:19.414Z (over 1 year ago)
- Topics: coins, collectables, ecb, python, scraper
- Language: Python
- Homepage:
- Size: 593 KB
- Stars: 1
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE
Awesome Lists containing this project
README

> Cointainer component for scraping coins from the ECB Website.
## Introduction
Cointainer Scraper (ECB) is one of the components of the Cointainer. This component offers the functionality of scraping euro coin data from the ECB website.
Currently supported coins:
- €2 commemorative coins
- Country
- Feature
- Description
- Issuing Volume
- Issuing Date
- Image URLs
## Installation
```bash
pip install cointainer-scraper-ecb
```
## Example
```python
from cointainer_scraper_ecb import get_two_euro_commemorative_coins
get_two_euro_commemorative_coins(
language="en",
year=2004
)
```
> Tested with Python 3.9.13 and cointainer_scraper_ecb v0.1.3 ✔️
Two data classes are relevant which are beeing returned by the function:
```python
def get_two_euro_commemorative_coins(
lang: str = "en",
year: int = START_YEAR
) -> List[TwoEuro]: ...
```
```python
@dataclass
class Coinage:
"""Represents a coin of a country to be collected."""
country: Optional[str]
image_default_url: Optional[str]
volume: Optional[int]
image_default_url_info: Optional[str] = None
country_info: Optional[str] = None
circulation_date: Optional[datetime.date] = None
image_attribution: Optional[str] = None
circulation_date_info: Optional[str] = None
volume_info: Optional[str] = None
@dataclass
class TwoEuro:
"""A two euro coin to collect."""
feature: str = ""
description: str = ""
coinages: List[Coinage] = field(default_factory=list)
```
## Roadmap
- [ ] Implement national side scraping (2€, 1€, 50 cent, 20 cent, 10 cent, 5 cent, 2 cent and 1 cent)
- [ ] CLI implementation with click
## Development
### Creating a new release
1. Run the following command `poetry version `
*cointainer-scraper-ecb* uses the following schema: `^\d+\.\d+\.\d+((b|a)\d+)?$`
2. Bump the version within the files:
- [`cointainer_scraper_ecb/__init__.py`](cointainer_scraper_ecb/__init__.py)
- [`tests/test_cointainer_scraper_ecb.py`](tests/test_cointainer_scraper_ecb.py)
- [`pyproject.toml`](pyproject.toml)
*Make sure it's the same version used when bumping with poetry*
3. Open `CHANGELOG.md` and write the new changelog:
- Use the following `#` header: `v - (yyyy-mm-dd)`
Used `##` headers:
- 💌 Added
- 🔨 Fixed
- ♻️ Changed
4. Stage the modified files and push them with the following commit message:
> chore: bump to version `v`
5. Create annotated release tag
1. New tag
```
git tag -s -m "release v" v
```
2. Push created tag
```
git push --tags
```
6. Run the following command `poetry build` to create a tarball and a wheel based on the new version
7. Create a new github release and:
1. Copy and paste the changelog content **without** the `#` header into the *description of the release* textbox
2. Use the `#` header style to fill in the *Release title* (copy it from the `CHANGELOG.md`)
3. Copy the version with the `v`-prefix into the *Tag version*
4. Attach the produced tarball and wheel (`dist/`) to the release
5. Check *This is a pre-release* if it's either an alpha or beta release *(a|b)* - ***optional***
6. **Publish release**
### Testing
Use the following command to execute the tests:
```bash
poetry run pytest
```
To run the tests, the: `download-test-files.(ps1|sh)` script must be executed.
This is not the best method because the test data can change. However, I don't know if it is allowed to upload the data to the repository because of the copyright.
## License
This cointainer-scraper-ecb module is distributed under Apache-2.0. For ODbL-1.0 exception, see [LICENSING.md](https://github.com/cointainer/cointainer-scraper-ecb/blob/main/LICENSING.md)