#!/usr/bin/env ruby

# List metadata for given image and video files in JSON format.
#
# Usage:
#
#   bin/lsmetadata 1.jpg | jq        # list file
#   bin/lsmetadata | jq              # list all files in current directory
#   bin/lsmetadata images/ | jq      # list directory
#   bin/lsmetadata images/**/* | jq  # list directory recursively
#
#   # Run from Docker without having to install Danbooru
#   docker run -rm -it -v $PWD:/mnt ghcr.io/danbooru/danbooru bin/lsmetadata /mnt/images/**/* | jq

APP_PATH = File.expand_path('../config/application', __dir__)
require_relative "../config/environment"

files = ARGV
files = [Dir.pwd] if files.empty?
files.map! { |file| File.directory?(file) ? Dir[file + "/*"] : file }.flatten!
files.reject! { |file| File.directory?(file) }

files.each do |filename|
  puts MediaFile.open(filename).to_json
end
