manolomartinez / greg

A command-line podcast aggregator
GNU General Public License v3.0
297 stars 37 forks source link

Automating downloads? #33

Closed jceloria closed 8 years ago

jceloria commented 8 years ago

I'm new to greg and my apologies if I'm missing something in the documentation or the configuration file, but does greg have the ability to keep a number of podcasts and clean up previous downloads? For example if I wanted to always have on hand the last 5 days of a subscribed show, I assume I would run 'greg download [0-4|-d YYYY-MM-DD]' via cron or something but would previous downloads be cleaned up or would I have to have another script or something do that for me?

I am planning on downloading the podcasts to a shared location that I'd like to expose to my home theater media manager and don't always listen everyday but it would be nice to have the last few days available.

I appreciate the work on this, it looks pretty awesome!

manolomartinez commented 8 years ago

Hi, the easy way to keep podcasts up to date is to have greg sync as a cron job. The greg download command you were suggesting would download all podcasts from the past 5 days, regardless of whether it had already downloaded them before.

As for the second part of your question, greg currently does not do anything to downloaded files. Once they have been downloaded, greg's job is over. I think that's as it should be. To keep your directories free of stuff older than 5 days you could perhaps use find in another cron job. I believe the right incantation would be something like this:

find /path/to/podcast/dir/* -type f -mtime +5 -exec rm {} \

There's an rm in there, so please test that I got it right before erasing something you didn't mean to!

Manolo

jceloria commented 8 years ago

Thank you, that's all I was looking for. I just wanted to make sure I wasn't missing something and then reinventing the wheel.

Much appreciated!

On Mon, Oct 12, 2015 at 4:41 PM, manolomartinez notifications@github.com wrote:

Hi, the easy way to keep podcasts up to date is to have greg sync as a cron job. The greg download command you were suggesting would download all podcasts from the past 5 days, regardless of whether it had already downloaded them before.

As for the second part of your question, greg currently does not do anything to downloaded files. Once they have been downloaded, greg's job is over. I think that's as it should be. To keep your directories free of stuff older than 5 days you could perhaps use find in another cron job. I believe the right incantation would be something like this:

find /path/to/podcast/dir/* -type f -mtime +5 -exec rm {} \

There's an rm there, so please test that I got it right before erasing something you didn't want to!

Manolo

— Reply to this email directly or view it on GitHub https://github.com/manolomartinez/greg/issues/33#issuecomment-147529705.

manolomartinez commented 8 years ago

Thank you for reporting :) Closing now.

Narrat commented 8 years ago

Instead of using cron alternatively systemd user timers could be used (which are files that could be offered by greg) on systems using it as init system (like Arch)

manolomartinez commented 8 years ago

Huh, care expanding on that solution? It sounds interesting.

Narrat commented 8 years ago

Two unit files needs to be created. greg.service and greg.timer. Installed would those files into /usr/lib/systemd/user (if a user wants to customize the fetch time he needs to copy it into $HOME/.config/systemd/user/ or /etc/systemd/user)

The service (greg.service) would look like:

[Unit] Description=Greg - Podcast aggregator Documentation= RequiresMountsFor=/home/

[Service] Type=simple ExecStart=/usr/bin/greg download

(IIRC more than one ExecStart can be added for example to add this find-remove command)

And the timer (greg.timer) would look like:

[Unit] Description=Timer for greg

[Timer] OnBootSec=1h OnUnitActiveSec=5h

[Install] WantedBy=timers.target

Activating is done via

systemctl --user start greg.timer

OnBootSec activates the .service 1h after booting. After that OnUnitActiveSec should take control and check/download every 5h

manolomartinez commented 8 years ago

Thanks a lot for the explanation, Narrat. As with some other systemd tools, I am not sure how this improves over cron jobs. I'll think about it.

Thanks again, M

Narrat commented 8 years ago

The Arch-wiki lists some points https://wiki.archlinux.org/index.php/Systemd/Timers#As_a_cron_replacement