In October 2016 I already wrote how a multimedia file could be played with VLC and as a cron job (Play a multimedia file in VLC as cron job).
In this case we're still talking about the same idea as in my article from October 2016: The cron job should play the "It's coffee time" audio file. But opening a VLC player to play an audio file is kind of overkill.
Let's first create an audio file from the Youtube video using "youtube-dl":
$ youtoube-dl -x https://www.youtube.com/watch?v=6SRXUufvZUE
The -x parameter extracts the audio from the video file, leaving you with just the sound of the video: COFFEE-TIME-6SRXUufvZUE.m4a.
Now this file can be played using ffplay, which is a command from the package "ffmpeg":
$ /usr/bin/ffplay -nodisp -autoexit /home/myuser/Music/COFFEE-TIME-6SRXUufvZUE.m4a
Important parameters here:
-nodisp: Avoids opening a user interface to play the audio (we don't need this for a cron job in the background)
- autoexit: Automatically exit ffplay once the file finished, otherwise the command will continue to run
With these parameters we can now schedule the cron job:
00 09 * * 1-5 /usr/bin/ffplay -nodisp -autoexit /home/myuser/Music/COFFEE-TIME-6SRXUufvZUE.m4a
Definitely a much more lightweight and elegant solution than the previous one using VLC.
ck from Switzerland wrote on Jun 5th, 2021:
XiaoPanPanKevinPan, thanks for your comment. But this is certainly not a trap! However I agree, I should have mentioned that this cron job was created in a running X Session. If you have not started a graphical session, you need to set the DISPLAY variable, but I have not tried it this way. The machine I used this on is a monitoring computer running Linux Mint where a browser is opened to show the current monitoring status. So whenever the cron job is running, an X session is available.
XiaoPanPanKevinPan from Taiwan, ROC wrote on Jun 5th, 2021:
(Debian GNU/Linux 10 (buster), GNOME 3.30.2)
I'm here just to prevent more people from falling into the same trap.
I've been trying this method for half an hour, but it doesn't work - till I just add "DISPLAY=:1" between the time and the command. Now it is functioning.
BTW in some distro, the default "DISPLAY" is ":0".
AWS Android Ansible Apache Apple Atlassian BSD Backup Bash Bluecoat CMS Chef Cloud Coding Consul Containers CouchDB DB DNS Database Databases Docker ELK Elasticsearch Filebeat FreeBSD Galera Git GlusterFS Grafana Graphics HAProxy HTML Hacks Hardware Icinga Icingaweb Icingaweb2 Influx Internet Java KVM Kibana Kodi Kubernetes LVM LXC Linux Logstash Mac Macintosh Mail MariaDB Minio MongoDB Monitoring Multimedia MySQL NFS Nagios Network Nginx OSSEC OTRS Office PGSQL PHP Perl Personal PostgreSQL Postgres PowerDNS Proxmox Proxy Python Rancher Rant Redis Roundcube SSL Samba Seafile Security Shell SmartOS Solaris Surveillance Systemd TLS Tomcat Ubuntu Unix VMWare VMware Varnish Virtualization Windows Wireless Wordpress Wyse ZFS Zoneminder