├── .clang-format ├── .dockerignore ├── .gitignore ├── .travis.yml ├── Dockerfile ├── LICENSE ├── Makefile ├── README.md ├── archive_test.go ├── archives.go ├── cover_art.c ├── cover_art.go ├── cover_art.h ├── cover_art_test.go ├── errors.go ├── ffmpeg.c ├── ffmpeg.go ├── ffmpeg.h ├── ffmpeg_test.go ├── go.mod ├── go.sum ├── main.go ├── main_test.go ├── meta.c ├── meta.go ├── meta.h ├── meta_test.go ├── mimes.go ├── sanitize_go_1_13.go ├── sanitize_legacy.go ├── testdata ├── alpha.webm ├── exact_thumb_size.jpg ├── invalid_data.jpg ├── jannu_180.jpg ├── jannu_270.jpg ├── jannu_270_h_mirrored.jpg ├── jannu_90.jpg ├── jannu_90_h_mirrored.jpg ├── jannu_baseline.jpg ├── jannu_h_mirrored.jpg ├── jannu_src.png ├── jannu_v_mirrored.jpg ├── meta_segfault.mp4 ├── no_cover.flac ├── no_cover.mp3 ├── no_cover.mp4 ├── no_cover.ogg ├── no_magic.mp3 ├── no_sound.avi ├── no_sound.flv ├── no_sound.mkv ├── no_sound.mov ├── no_sound.mp4 ├── no_sound.ogg ├── no_sound.webm ├── no_sound.wmv ├── no_sound_180.mp4 ├── no_sound_270.mp4 ├── no_sound_90.mp4 ├── non_square.png ├── odd_dimensions.webm ├── rare_brand.mp4 ├── sample.gif ├── sample.jpg ├── sample.png ├── sample.rar ├── sample.txt ├── sample.webp ├── sample.zip ├── segfault.png ├── start_black.webm ├── title.mp3 ├── title.webm ├── too small.png ├── too tall.jpg ├── too wide.jpg ├── with_cover.flac ├── with_cover.mp3 ├── with_sound.avi ├── with_sound.mkv ├── with_sound.mov ├── with_sound.mp4 ├── with_sound.ogg ├── with_sound.webm ├── with_sound_90.mp4 ├── with_sound_hevc.mp4 └── with_sound_vp9.webm ├── thumbnailer.c ├── thumbnailer.go ├── thumbnailer.h ├── thumbnailer_test.go └── util.go /.clang-format: -------------------------------------------------------------------------------- 1 | BasedOnStyle: Webkit 2 | ColumnLimit: 80 3 | -------------------------------------------------------------------------------- /.dockerignore: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bakape/thumbnailer/HEAD/.dockerignore -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bakape/thumbnailer/HEAD/.gitignore -------------------------------------------------------------------------------- /.travis.yml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bakape/thumbnailer/HEAD/.travis.yml -------------------------------------------------------------------------------- /Dockerfile: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bakape/thumbnailer/HEAD/Dockerfile -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bakape/thumbnailer/HEAD/LICENSE -------------------------------------------------------------------------------- /Makefile: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bakape/thumbnailer/HEAD/Makefile -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bakape/thumbnailer/HEAD/README.md -------------------------------------------------------------------------------- /archive_test.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bakape/thumbnailer/HEAD/archive_test.go -------------------------------------------------------------------------------- /archives.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bakape/thumbnailer/HEAD/archives.go -------------------------------------------------------------------------------- /cover_art.c: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bakape/thumbnailer/HEAD/cover_art.c -------------------------------------------------------------------------------- /cover_art.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bakape/thumbnailer/HEAD/cover_art.go -------------------------------------------------------------------------------- /cover_art.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bakape/thumbnailer/HEAD/cover_art.h -------------------------------------------------------------------------------- /cover_art_test.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bakape/thumbnailer/HEAD/cover_art_test.go -------------------------------------------------------------------------------- /errors.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bakape/thumbnailer/HEAD/errors.go -------------------------------------------------------------------------------- /ffmpeg.c: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bakape/thumbnailer/HEAD/ffmpeg.c -------------------------------------------------------------------------------- /ffmpeg.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bakape/thumbnailer/HEAD/ffmpeg.go -------------------------------------------------------------------------------- /ffmpeg.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bakape/thumbnailer/HEAD/ffmpeg.h -------------------------------------------------------------------------------- /ffmpeg_test.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bakape/thumbnailer/HEAD/ffmpeg_test.go -------------------------------------------------------------------------------- /go.mod: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bakape/thumbnailer/HEAD/go.mod -------------------------------------------------------------------------------- /go.sum: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bakape/thumbnailer/HEAD/go.sum -------------------------------------------------------------------------------- /main.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bakape/thumbnailer/HEAD/main.go -------------------------------------------------------------------------------- /main_test.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bakape/thumbnailer/HEAD/main_test.go -------------------------------------------------------------------------------- /meta.c: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bakape/thumbnailer/HEAD/meta.c -------------------------------------------------------------------------------- /meta.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bakape/thumbnailer/HEAD/meta.go -------------------------------------------------------------------------------- /meta.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bakape/thumbnailer/HEAD/meta.h -------------------------------------------------------------------------------- /meta_test.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bakape/thumbnailer/HEAD/meta_test.go -------------------------------------------------------------------------------- /mimes.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bakape/thumbnailer/HEAD/mimes.go -------------------------------------------------------------------------------- /sanitize_go_1_13.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bakape/thumbnailer/HEAD/sanitize_go_1_13.go -------------------------------------------------------------------------------- /sanitize_legacy.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bakape/thumbnailer/HEAD/sanitize_legacy.go -------------------------------------------------------------------------------- /testdata/alpha.webm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bakape/thumbnailer/HEAD/testdata/alpha.webm -------------------------------------------------------------------------------- /testdata/exact_thumb_size.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bakape/thumbnailer/HEAD/testdata/exact_thumb_size.jpg -------------------------------------------------------------------------------- /testdata/invalid_data.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bakape/thumbnailer/HEAD/testdata/invalid_data.jpg -------------------------------------------------------------------------------- /testdata/jannu_180.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bakape/thumbnailer/HEAD/testdata/jannu_180.jpg -------------------------------------------------------------------------------- /testdata/jannu_270.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bakape/thumbnailer/HEAD/testdata/jannu_270.jpg -------------------------------------------------------------------------------- /testdata/jannu_270_h_mirrored.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bakape/thumbnailer/HEAD/testdata/jannu_270_h_mirrored.jpg -------------------------------------------------------------------------------- /testdata/jannu_90.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bakape/thumbnailer/HEAD/testdata/jannu_90.jpg -------------------------------------------------------------------------------- /testdata/jannu_90_h_mirrored.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bakape/thumbnailer/HEAD/testdata/jannu_90_h_mirrored.jpg -------------------------------------------------------------------------------- /testdata/jannu_baseline.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bakape/thumbnailer/HEAD/testdata/jannu_baseline.jpg -------------------------------------------------------------------------------- /testdata/jannu_h_mirrored.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bakape/thumbnailer/HEAD/testdata/jannu_h_mirrored.jpg -------------------------------------------------------------------------------- /testdata/jannu_src.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bakape/thumbnailer/HEAD/testdata/jannu_src.png -------------------------------------------------------------------------------- /testdata/jannu_v_mirrored.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bakape/thumbnailer/HEAD/testdata/jannu_v_mirrored.jpg -------------------------------------------------------------------------------- /testdata/meta_segfault.mp4: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bakape/thumbnailer/HEAD/testdata/meta_segfault.mp4 -------------------------------------------------------------------------------- /testdata/no_cover.flac: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bakape/thumbnailer/HEAD/testdata/no_cover.flac -------------------------------------------------------------------------------- /testdata/no_cover.mp3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bakape/thumbnailer/HEAD/testdata/no_cover.mp3 -------------------------------------------------------------------------------- /testdata/no_cover.mp4: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bakape/thumbnailer/HEAD/testdata/no_cover.mp4 -------------------------------------------------------------------------------- /testdata/no_cover.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bakape/thumbnailer/HEAD/testdata/no_cover.ogg -------------------------------------------------------------------------------- /testdata/no_magic.mp3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bakape/thumbnailer/HEAD/testdata/no_magic.mp3 -------------------------------------------------------------------------------- /testdata/no_sound.avi: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bakape/thumbnailer/HEAD/testdata/no_sound.avi -------------------------------------------------------------------------------- /testdata/no_sound.flv: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bakape/thumbnailer/HEAD/testdata/no_sound.flv -------------------------------------------------------------------------------- /testdata/no_sound.mkv: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bakape/thumbnailer/HEAD/testdata/no_sound.mkv -------------------------------------------------------------------------------- /testdata/no_sound.mov: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bakape/thumbnailer/HEAD/testdata/no_sound.mov -------------------------------------------------------------------------------- /testdata/no_sound.mp4: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bakape/thumbnailer/HEAD/testdata/no_sound.mp4 -------------------------------------------------------------------------------- /testdata/no_sound.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bakape/thumbnailer/HEAD/testdata/no_sound.ogg -------------------------------------------------------------------------------- /testdata/no_sound.webm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bakape/thumbnailer/HEAD/testdata/no_sound.webm -------------------------------------------------------------------------------- /testdata/no_sound.wmv: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bakape/thumbnailer/HEAD/testdata/no_sound.wmv -------------------------------------------------------------------------------- /testdata/no_sound_180.mp4: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bakape/thumbnailer/HEAD/testdata/no_sound_180.mp4 -------------------------------------------------------------------------------- /testdata/no_sound_270.mp4: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bakape/thumbnailer/HEAD/testdata/no_sound_270.mp4 -------------------------------------------------------------------------------- /testdata/no_sound_90.mp4: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bakape/thumbnailer/HEAD/testdata/no_sound_90.mp4 -------------------------------------------------------------------------------- /testdata/non_square.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bakape/thumbnailer/HEAD/testdata/non_square.png -------------------------------------------------------------------------------- /testdata/odd_dimensions.webm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bakape/thumbnailer/HEAD/testdata/odd_dimensions.webm -------------------------------------------------------------------------------- /testdata/rare_brand.mp4: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bakape/thumbnailer/HEAD/testdata/rare_brand.mp4 -------------------------------------------------------------------------------- /testdata/sample.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bakape/thumbnailer/HEAD/testdata/sample.gif -------------------------------------------------------------------------------- /testdata/sample.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bakape/thumbnailer/HEAD/testdata/sample.jpg -------------------------------------------------------------------------------- /testdata/sample.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bakape/thumbnailer/HEAD/testdata/sample.png -------------------------------------------------------------------------------- /testdata/sample.rar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bakape/thumbnailer/HEAD/testdata/sample.rar -------------------------------------------------------------------------------- /testdata/sample.txt: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /testdata/sample.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bakape/thumbnailer/HEAD/testdata/sample.webp -------------------------------------------------------------------------------- /testdata/sample.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bakape/thumbnailer/HEAD/testdata/sample.zip -------------------------------------------------------------------------------- /testdata/segfault.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bakape/thumbnailer/HEAD/testdata/segfault.png -------------------------------------------------------------------------------- /testdata/start_black.webm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bakape/thumbnailer/HEAD/testdata/start_black.webm -------------------------------------------------------------------------------- /testdata/title.mp3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bakape/thumbnailer/HEAD/testdata/title.mp3 -------------------------------------------------------------------------------- /testdata/title.webm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bakape/thumbnailer/HEAD/testdata/title.webm -------------------------------------------------------------------------------- /testdata/too small.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bakape/thumbnailer/HEAD/testdata/too small.png -------------------------------------------------------------------------------- /testdata/too tall.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bakape/thumbnailer/HEAD/testdata/too tall.jpg -------------------------------------------------------------------------------- /testdata/too wide.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bakape/thumbnailer/HEAD/testdata/too wide.jpg -------------------------------------------------------------------------------- /testdata/with_cover.flac: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bakape/thumbnailer/HEAD/testdata/with_cover.flac -------------------------------------------------------------------------------- /testdata/with_cover.mp3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bakape/thumbnailer/HEAD/testdata/with_cover.mp3 -------------------------------------------------------------------------------- /testdata/with_sound.avi: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bakape/thumbnailer/HEAD/testdata/with_sound.avi -------------------------------------------------------------------------------- /testdata/with_sound.mkv: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bakape/thumbnailer/HEAD/testdata/with_sound.mkv -------------------------------------------------------------------------------- /testdata/with_sound.mov: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bakape/thumbnailer/HEAD/testdata/with_sound.mov -------------------------------------------------------------------------------- /testdata/with_sound.mp4: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bakape/thumbnailer/HEAD/testdata/with_sound.mp4 -------------------------------------------------------------------------------- /testdata/with_sound.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bakape/thumbnailer/HEAD/testdata/with_sound.ogg -------------------------------------------------------------------------------- /testdata/with_sound.webm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bakape/thumbnailer/HEAD/testdata/with_sound.webm -------------------------------------------------------------------------------- /testdata/with_sound_90.mp4: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bakape/thumbnailer/HEAD/testdata/with_sound_90.mp4 -------------------------------------------------------------------------------- /testdata/with_sound_hevc.mp4: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bakape/thumbnailer/HEAD/testdata/with_sound_hevc.mp4 -------------------------------------------------------------------------------- /testdata/with_sound_vp9.webm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bakape/thumbnailer/HEAD/testdata/with_sound_vp9.webm -------------------------------------------------------------------------------- /thumbnailer.c: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bakape/thumbnailer/HEAD/thumbnailer.c -------------------------------------------------------------------------------- /thumbnailer.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bakape/thumbnailer/HEAD/thumbnailer.go -------------------------------------------------------------------------------- /thumbnailer.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bakape/thumbnailer/HEAD/thumbnailer.h -------------------------------------------------------------------------------- /thumbnailer_test.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bakape/thumbnailer/HEAD/thumbnailer_test.go -------------------------------------------------------------------------------- /util.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bakape/thumbnailer/HEAD/util.go --------------------------------------------------------------------------------