plugins: videos: photos: add videos plugin

This change adds a new plugin that mirrors photos functionality, but for
videos (mp4 and others).

NOTE: this plugin requires ffmepg installed on the host machine

  $ sudo apt-get install -y ffmpeg
diff --git a/Makefile b/Makefile
index ead5917..daa6b60 100644
--- a/Makefile
+++ b/Makefile
@@ -7,6 +7,7 @@
 OUTPUTDIR=$(BASEDIR)/output
 OUTPUTDIR_THEME=$(OUTPUTDIR)/theme
 OUTPUTDIR_PHOTOS=$(OUTPUTDIR)/photos
+OUTPUTDIR_VIDEOS=$(OUTPUTDIR)/videos
 CONFFILE=$(BASEDIR)/pelicanconf.py
 PUBLISHCONF=$(BASEDIR)/publishconf.py
 
@@ -35,8 +36,11 @@
 endif
 INSTALLFLAGS := $(INSTALLFLAGS) -rXaA
 INSTALLDIR ?=
+# Copy the whole directory theme
 INSTALLDIR_THEME ?=
+# Copy contents only
 INSTALLDIR_PHOTOS ?=
+INSTALLDIR_VIDEOS ?=
 
 DEBUG ?= 0
 ifeq ($(DEBUG), 1)
@@ -56,6 +60,8 @@
 	@echo '   make clean-html                     remove all html files and folders  '
 	@echo '   make clean-theme                    remove output/theme                '
 	@echo '   make clean-photos                   remove output/photos               '
+	@echo '   make clean-videos                   remove output/videos               '
+	@echo '   make distclean                      remove output and __pycache__      '
 	@echo '   make clean                          remove output folder               '
 	@echo '   make regenerate                     regenerate files upon modification '
 	@echo '   make publish                        generate using production settings '
@@ -73,6 +79,7 @@
 	@echo '   make install-html                   copy *.html, html folders locally  '
 	@echo '   make install-theme                  copy output/theme locally          '
 	@echo '   make install-photos                 copy output/photos locally         '
+	@echo '   make install-videos                 copy output/videos locally         '
 	@echo '   make install                        copy output/* locally              '
 	@echo '                                                                          '
 	@echo 'Set the DEBUG variable to 1 to enable debugging, e.g. make DEBUG=1 html   '
@@ -92,9 +99,15 @@
 clean-photos:
 	[ ! -d "$(OUTPUTDIR_PHOTOS)" ] || rm -rf $(OUTPUTDIR_PHOTOS)
 
+clean-videos:
+	[ ! -d "$(OUTPUTDIR_VIDEOS)" ] || rm -rf $(OUTPUTDIR_VIDEOS)
+
 clean:
 	[ ! -d "$(OUTPUTDIR)" ] || rm -rf $(OUTPUTDIR)
 
+distclean: clean
+	find $(BASEDIR) -type d -name "__pycache__" -exec rm -rf '{}' '+'
+
 regenerate:
 	$(PELICAN) -r $(INPUTDIR) -o $(OUTPUTDIR) -s $(CONFFILE) $(PELICANOPTS)
 
@@ -151,18 +164,27 @@
 
 install-html:
 	[ -d "$(OUTPUTDIR)" ] && [ -d "$(INSTALLDIR)" ] && \
-	$(SUDO) rsync $(INSTALLFLAGS) --exclude=$(notdir $(OUTPUTDIR_THEME)) \
-	--exclude=$(notdir $(OUTPUTDIR_PHOTOS)) $(OUTPUTDIR)/* $(INSTALLDIR)
+	$(SUDO) rsync $(INSTALLFLAGS) \
+	--exclude=$(notdir $(OUTPUTDIR_THEME)) \
+	--exclude=$(notdir $(OUTPUTDIR_PHOTOS)) \
+	--exclude=$(notdir $(OUTPUTDIR_VIDEOS)) \
+	$(OUTPUTDIR)/* $(INSTALLDIR)
 
 install-theme:
 	[ -d "$(OUTPUTDIR_THEME)" ] && [ -d "$(INSTALLDIR_THEME)" ] && \
 	$(SUDO) rsync $(INSTALLFLAGS) $(OUTPUTDIR_THEME) $(INSTALLDIR_THEME)/
 
 install-photos:
-	[ -d "$(OUTPUTDIR_PHOTOS)" ] && [ -d "$(INSTALLDIR_PHOTOS)" ] && \
-	$(SUDO) rsync $(INSTALLFLAGS) $(OUTPUTDIR_PHOTOS) $(INSTALLDIR_PHOTOS)/
+	[ ! -d "$(OUTPUTDIR_PHOTOS)" ] && { echo "Nothing to do for: install-photos"; \
+	exit 0; } || [ -d "$(INSTALLDIR_PHOTOS)" ] && \
+	$(SUDO) rsync $(INSTALLFLAGS) $(OUTPUTDIR_PHOTOS)/ $(INSTALLDIR_PHOTOS)
 
-install: install-html install-theme install-photos
+install-videos:
+	[ ! -d "$(OUTPUTDIR_VIDEOS)" ] && { echo "Nothing to do for: install-videos"; \
+	exit 0; } || [ -d "$(INSTALLDIR_VIDEOS)" ] && \
+	$(SUDO) rsync $(INSTALLFLAGS) $(OUTPUTDIR_VIDEOS)/ $(INSTALLDIR_VIDEOS)
+
+install: install-html install-theme install-photos install-videos
 
 
 .PHONY: html help clean clean-html clean-theme clean-photos regenerate serve serve-global devserver stopserver publish ssh_upload rsync_upload dropbox_upload ftp_upload s3_upload cf_upload github install install-html install-theme install-photos