# Amazon Kindle Email PDF Downloader This project is a Python daemon that connects to your Gmail account, searches for unread emails from "Amazon Kindle Support" containing PDF download links, and automatically downloads the PDFs to a specified local directory if they don’t already exist. The script runs as a background service and checks for new emails at a specified interval. ## Features - Automatically reads unread emails from Gmail. - Searches for emails from "Amazon Kindle Support" with PDF download links. - Parses the email to extract the actual PDF download link. - Downloads the PDF file and saves it to a local `data` directory. - Runs as a daemon, checking for new emails periodically. ## Requirements - Python 3.7+ - Google API credentials for Gmail API access - Gmail API access enabled in Google Cloud Console ## Installation 1. **Clone the Repository**: ```bash git clone https://github.com/yourusername/amznMailConverter.git cd amznMailConverter ``` 2. **Install Dependencies**: ```bash pip install -r requirements.txt ``` The `requirements.txt` should include: ```plaintext google-auth google-auth-oauthlib google-auth-httplib2 google-api-python-client requests beautifulsoup4 python-daemon # Only if using the daemon library ``` 3. **Set Up Google API Credentials**: - Create a project in the [Google Cloud Console](https://console.cloud.google.com/). - Enable the Gmail API. - Download the OAuth 2.0 Client Credentials JSON file, rename it to `credentials.json`, and place it in the project root directory. 4. **Authorize Access**: - On first run, the script will prompt you to authorize Gmail API access. Follow the instructions in the browser to grant permissions. - After authorization, a `token.json` file will be generated to store your access token. ## Usage To run the script as a daemon, use one of the following methods: ### 1. Using Python Daemon Library (Recommended for Simplicity) ```bash python3 email_pdf_downloader.py ``` The script will run in the background, checking for new emails every 5 minutes. ### 2. Using Systemd (Linux) 1. **Create a Systemd Service**: - Create a file `/etc/systemd/system/email_reader.service`: ```ini [Unit] Description=Email PDF Downloader Daemon [Service] ExecStart=/usr/bin/python3 /path/to/email_pdf_downloader.py Restart=always User=your_username WorkingDirectory=/path/to/project [Install] WantedBy=multi-user.target ``` 2. **Enable and Start the Service**: ```bash sudo systemctl daemon-reload sudo systemctl enable email_reader.service sudo systemctl start email_reader.service ``` 3. **Check Status**: ```bash sudo systemctl status email_reader.service ``` ## Configuration - **SCOPES**: OAuth scopes for Gmail API access. - **SEARCH_QUERY**: Query to filter emails by sender ("Amazon Kindle Support"). - **SCRIPT_DIR**: Base directory where files are saved. - **Interval**: The script is set to check for new emails every 5 minutes (300 seconds). You can adjust this interval in the `run_daemon` function in `email_pdf_downloader.py`. ## Logging Logging information (success messages, errors) is printed to the console or saved to `systemd` logs when running as a systemd service. ## License This project is licensed under the MIT License.