Podfetch
> Adding README.md > Adding podfetch.service
This commit is contained in:
parent
8feea71701
commit
15d791148f
@ -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.
|
||||
|
||||

|
||||
|
||||
## 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.
|
||||
|
||||

|
||||
|
||||
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>.
|
@ -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
|
||||
|
Loading…
x
Reference in New Issue
Block a user