mkm3u: Maintain a cache of durations because they take ages to look up.
[epls] / Makefile
index 4cf4bb6..33136ba 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -2,6 +2,7 @@
 
 all:
 clean::; rm -f $(CLEANFILES)
+realclean::; rm -f $(REALCLEANFILES)
 force:
 .PHONY: all clean
 .SECONDEXPANSION: # not sorry
@@ -17,6 +18,10 @@ v-tag.0                       = @$(call v-print.0,$1,$@);
 
 TARGETS                         =
 CLEANFILES             += $(TARGETS)
+REALCLEANFILES         += $(CLEANFILES)
+
+MKM3UFLAGS              = -dmkm3u.cache
+REALCLEANFILES         += mkm3u.cache
 
 define %declare-playlist
 PLAYLISTS              += $1
@@ -175,8 +180,17 @@ $(call declare-playlist, drwho-silurians, D/Doctor Who/S07E02 BBB. Doctor Who an
 M3US                    = $(addsuffix .m3u8,$(PLAYLISTS))
 TARGETS                        += $(M3US)
 
-$(M3US): %.m3u8: $$($$*_EPLS) mkm3u
-       $(call v-tag,MKM3U)./mkm3u $($*_MKM3UFLAGS) "$<" >"$@.new" && mv "$@.new" "$@"
+CLEANFILES             += mkm3u.cache-stamp
+mkm3u.cache-stamp:
+       if [ ! -f mkm3u.cache ]; then \
+         ./mkm3u -i -dmkm3u.cache.new && mv mkm3u.cache.new mkm3u.cache; \
+       fi
+       touch $@
+
+CLEANFILES             += *.m3u8.new
+$(M3US): %.m3u8: $$($$*_EPLS) mkm3u mkm3u.cache-stamp
+       $(call v-tag,MKM3U)./mkm3u $(MKM3UFLAGS) $($*_MKM3UFLAGS) \
+               "$<" >"$@.new" && mv "$@.new" "$@"
 
 CHECKS                  = $(foreach p,$(PLAYLISTS), check/$p)
 check: $(CHECKS)