> Adding README.md
> Adding podfetch.service
This commit is contained in:
Eugene Amos 2023-12-01 23:19:44 -08:00
parent 8feea71701
commit 15d791148f
2 changed files with 4 additions and 179 deletions

View File

@ -8,179 +8,4 @@
<br />
</p>
<details open>
<summary>Table of Contents</summary>
<ol>
<li><a href="#01-pip">PIP</a></li>
<li><a href="#02-folder-structure">Folder Structure</a></li>
<li><a href="#03-script">Script</a></li>
<li><a href="#04-run">Run</a></li>
<li><a href="#05-testing">Testing</a></li>
<li><a href="#06-automation">Automation</a></li>
</ol>
</details>
## 01. PIP
You will need pip installed on your linux mint system. **<a href="https://pypi.org/project/pip/" target="_blank">PIP</a>** is the package manager for Python.
* See if PIP is already installed. Open a terminal and type:
`pip -V`
* If not, install it.
`python get-pip.py`
* Once installed, install watchdog
`pip install watchdog`
> **Note:** You may need to use `pip3`
## 02. Folder Structure
Create a new folder called **scripts** in your home folder. This is where all your scripts will go. You can do this is two ways.
1. In your file manager go to `~/scripts` then right click on an open space and select `Open in terminal`
2. In your terminal type: `cd ~/scripts`
When done it should look like this: `/home/[username]/scripts`
## 03. Script
<details open>
<summary>podcast_folder_monitor.py</summary>
```python
#!/usr/bin/python3
import os
import time
import shutil
from watchdog.observers import Observer
from watchdog.events import FileSystemEventHandler
# Replace this with the folder path you want to monitor
folder_to_monitor = "/some/folder/to/monitor"
class MyHandler(FileSystemEventHandler):
def on_created(self, event):
if event.is_directory:
folder_path = event.src_path
self.rename_mp3_files(folder_path)
def rename_mp3_files(self, folder_path):
folder_name = os.path.basename(folder_path)
for filename in os.listdir(folder_path):
if filename.lower().endswith(".mp3"):
mp3_path = os.path.join(folder_path, filename)
new_mp3_path = os.path.join(folder_path, folder_name + ".mp3")
os.rename(mp3_path, new_mp3_path)
print(f"Renamed {filename} to {folder_name}.mp3")
if __name__ == "__main__":
event_handler = MyHandler()
observer = Observer()
observer.schedule(event_handler, folder_to_monitor, recursive=True)
observer.start()
try:
while True:
time.sleep(1)
except KeyboardInterrupt:
observer.stop()
observer.join()
```
</details>
Make sure to replace `/some/folder/to/monitor` with the actual path of the folder you want to monitor.
> **Note:** leave the quotation marks
Save this script as `podcast_folder_monitor.py` in the scripts folder. Next we need to change the permissions of this file so that the system can read it.
* Right click on `podcast_folder_monitor.py` then `Properties`.
* Click on `Permissions` tab at top.
* Make sure Owner & Group reflect your `username` with `Read and Write` access to all.
* Check the `Execute` box to allow executing the file as a program.
* Close out the window.
## 04. Run
Now we need to test and run the script.
Make sure you terminal is open to the location of the `podcast_folder_monitor.py` file. Should be `~/scripts`
Normally to run a Python script will would use
`python3 podcast_folder_monitor.py`
> **Note:** Will still work.
But because we have [shebang](https://linuxhandbook.com/shebang/) set in the script we can just use
`./podcast_folder_monitor.py`
You should now see the blinking curser in the terminal indicating that the script is running and monitoring the folder for a new file.
![testing](img/running_podcast.png)
## 05. Testing
To test the script copy and paste one of your podcast folder that includes the podcast.mp3 file back into the folder. The script should notice the change and rename the **.mp3** to the name of the parent folder.
![testing](img/testing_podcast.png)
If everything worked out okay we can move to the next step.
## 06. Automation
We can make the script auto run in the background. Just like Sonarr, Radarr, etc...
To get started we need to crate a new file in the systemd location.
* Go to `/etc/systemd/system`
* Right click in a empty space and select `Open as Root`. Root access is needed to create or edit in this directory.
* Create a new file called `podfetch.service`
* Use this code inside the `podfetch.service` file.
<details open>
<summary>podfetch.service</summary>
```ini
[Unit]
Description=Podcast Folder Monitor Service
Wants=network-online.target
After=network-online.target
# Change [username] with your own.
[Service]
ExecStart=/usr/bin/python3 /home/[username]/scripts/podcast_folder_monitor.py
WorkingDirectory=/home/[username]/scripts
Restart=always
User=[username]
[Install]
WantedBy=multi-user.target
```
</details>
> **Note:** Make sure you change `[username]` with your own..
Now we need to enable the service file.
```bash
# Reload the systemctl daemon
sudo systemctl daemon-reload
# Enable the podfetch service
sudo systemctl enable podfetch.service
# Starting the podfetch service
sudo systemctl start podfetch
# Checking status
sudo systemctl status podfetch
```
### Congratulation your service is auto-running and listing for new podcast folders
For install instructions see the <a href="https://wiki.euronvault.com/podfetch" target="blank">wiki</a>.

View File

@ -5,10 +5,10 @@ After=network-online.target
# Change [username] with your own.
[Service]
ExecStart=/usr/bin/python3 /home/[username]/scripts/podcast_folder_monitor.py
WorkingDirectory=/home/[username]/scripts
ExecStart=/usr/bin/python3 /home/[username]/scripts/podfetch/podcast_folder_monitor.py
WorkingDirectory=/home/[username]/scripts/podfetch
Restart=always
User=[username]
[Install]
WantedBy=multi-user.target
WantedBy=multi-user.target