Add meta command

This commit is contained in:
Milan Nikolic
2023-03-08 05:42:49 +01:00
parent f1804ce13c
commit d4abc99239
3 changed files with 60 additions and 2 deletions

View File

@@ -149,6 +149,12 @@ This is what it looks like in the PCManFM file manager:
            Process subdirectories recursively (default "false")             Process subdirectories recursively (default "false")
        --quiet         --quiet
            Hide console output (default "false")             Hide console output (default "false")
meta
CBZ metadata
--cover
Print cover name (default "false")
``` ```
### Examples ### Examples

View File

@@ -93,6 +93,8 @@ type Options struct {
Cover bool Cover bool
// Extract cover thumbnail (freedesktop spec.) // Extract cover thumbnail (freedesktop spec.)
Thumbnail bool Thumbnail bool
// CBZ metadata
Meta bool
// Output file // Output file
Outfile string Outfile string
// Output directory // Output directory
@@ -1225,6 +1227,30 @@ func (c *Convertor) Thumbnail(fileName string, info os.FileInfo) error {
return mw.WriteImage(fName) return mw.WriteImage(fName)
} }
// Meta manipulates with CBZ metadata.
func (c *Convertor) Meta(fileName string, info os.FileInfo) (any, error) {
c.CurrFile++
if c.Opts.Cover {
var images []string
contents, err := c.listArchive(fileName)
if err != nil {
return nil, err
}
for _, ct := range contents {
if c.isImage(ct) {
images = append(images, ct)
}
}
return c.coverName(images), nil
}
return nil, nil
}
// Convert converts comic book. // Convert converts comic book.
func (c *Convertor) Convert(filename string, info os.FileInfo) error { func (c *Convertor) Convert(filename string, info os.FileInfo) error {
c.CurrFile++ c.CurrFile++

View File

@@ -47,7 +47,7 @@ func main() {
} }
var bar *progressbar.ProgressBar var bar *progressbar.ProgressBar
if opts.Cover || opts.Thumbnail { if opts.Cover || opts.Thumbnail || opts.Meta {
if !opts.Quiet { if !opts.Quiet {
bar = progressbar.NewOptions(conv.Nfiles, bar = progressbar.NewOptions(conv.Nfiles,
progressbar.OptionShowCount(), progressbar.OptionShowCount(),
@@ -89,7 +89,19 @@ func main() {
os.Exit(1) os.Exit(1)
} }
if opts.Meta {
ret, err := conv.Meta(file, stat)
if err != nil {
fmt.Println(err)
os.Exit(1)
}
if opts.Cover { if opts.Cover {
fmt.Println(ret)
}
continue
} else if opts.Cover {
err = conv.Cover(file, stat) err = conv.Cover(file, stat)
if err != nil { if err != nil {
fmt.Println(err) fmt.Println(err)
@@ -172,6 +184,10 @@ func parseFlags() (cbconvert.Options, []string) {
thumbnail.BoolVar(&opts.Recursive, "recursive", false, "Process subdirectories recursively") thumbnail.BoolVar(&opts.Recursive, "recursive", false, "Process subdirectories recursively")
thumbnail.BoolVar(&opts.Quiet, "quiet", false, "Hide console output") thumbnail.BoolVar(&opts.Quiet, "quiet", false, "Hide console output")
meta := flag.NewFlagSet("meta", flag.ExitOnError)
meta.SortFlags = false
meta.BoolVar(&opts.Cover, "cover", false, "Print cover name")
convert.Usage = func() { convert.Usage = func() {
_, _ = fmt.Fprintf(os.Stderr, "Usage: %s <command> [<flags>] [file1 dir1 ... fileOrDirN]\n\n", filepath.Base(os.Args[0])) _, _ = fmt.Fprintf(os.Stderr, "Usage: %s <command> [<flags>] [file1 dir1 ... fileOrDirN]\n\n", filepath.Base(os.Args[0]))
_, _ = fmt.Fprintf(os.Stderr, "\nCommands:\n") _, _ = fmt.Fprintf(os.Stderr, "\nCommands:\n")
@@ -193,6 +209,12 @@ func parseFlags() (cbconvert.Options, []string) {
_, _ = fmt.Fprintf(os.Stderr, "\n \t") _, _ = fmt.Fprintf(os.Stderr, "\n \t")
_, _ = fmt.Fprintf(os.Stderr, "%v (default %q)\n", f.Usage, f.DefValue) _, _ = fmt.Fprintf(os.Stderr, "%v (default %q)\n", f.Usage, f.DefValue)
}) })
_, _ = fmt.Fprintf(os.Stderr, "\n meta\n \tCBZ metadata\n\n")
meta.VisitAll(func(f *flag.Flag) {
_, _ = fmt.Fprintf(os.Stderr, " --%s", f.Name)
_, _ = fmt.Fprintf(os.Stderr, "\n \t")
_, _ = fmt.Fprintf(os.Stderr, "%v (default %q)\n", f.Usage, f.DefValue)
})
_, _ = fmt.Fprintf(os.Stderr, "\n") _, _ = fmt.Fprintf(os.Stderr, "\n")
} }
@@ -214,6 +236,10 @@ func parseFlags() (cbconvert.Options, []string) {
opts.Thumbnail = true opts.Thumbnail = true
_ = thumbnail.Parse(os.Args[2:]) _ = thumbnail.Parse(os.Args[2:])
args = thumbnail.Args() args = thumbnail.Args()
case "meta":
opts.Meta = true
_ = meta.Parse(os.Args[2:])
args = meta.Args()
default: default:
_ = convert.Parse(os.Args[1:]) _ = convert.Parse(os.Args[1:])
args = convert.Args() args = convert.Args()