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")
        --quiet
            Hide console output (default "false")
meta
CBZ metadata
--cover
Print cover name (default "false")
```
### Examples

View File

@@ -93,6 +93,8 @@ type Options struct {
Cover bool
// Extract cover thumbnail (freedesktop spec.)
Thumbnail bool
// CBZ metadata
Meta bool
// Output file
Outfile string
// Output directory
@@ -1225,6 +1227,30 @@ func (c *Convertor) Thumbnail(fileName string, info os.FileInfo) error {
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.
func (c *Convertor) Convert(filename string, info os.FileInfo) error {
c.CurrFile++

View File

@@ -47,7 +47,7 @@ func main() {
}
var bar *progressbar.ProgressBar
if opts.Cover || opts.Thumbnail {
if opts.Cover || opts.Thumbnail || opts.Meta {
if !opts.Quiet {
bar = progressbar.NewOptions(conv.Nfiles,
progressbar.OptionShowCount(),
@@ -89,7 +89,19 @@ func main() {
os.Exit(1)
}
if opts.Meta {
ret, err := conv.Meta(file, stat)
if err != nil {
fmt.Println(err)
os.Exit(1)
}
if opts.Cover {
fmt.Println(ret)
}
continue
} else if opts.Cover {
err = conv.Cover(file, stat)
if err != nil {
fmt.Println(err)
@@ -172,6 +184,10 @@ func parseFlags() (cbconvert.Options, []string) {
thumbnail.BoolVar(&opts.Recursive, "recursive", false, "Process subdirectories recursively")
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() {
_, _ = fmt.Fprintf(os.Stderr, "Usage: %s <command> [<flags>] [file1 dir1 ... fileOrDirN]\n\n", filepath.Base(os.Args[0]))
_, _ = 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, "%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")
}
@@ -214,6 +236,10 @@ func parseFlags() (cbconvert.Options, []string) {
opts.Thumbnail = true
_ = thumbnail.Parse(os.Args[2:])
args = thumbnail.Args()
case "meta":
opts.Meta = true
_ = meta.Parse(os.Args[2:])
args = meta.Args()
default:
_ = convert.Parse(os.Args[1:])
args = convert.Args()