mirror of
https://github.com/gen2brain/cbconvert
synced 2025-10-14 10:38:51 +02:00
Add meta command
This commit is contained in:
@@ -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
|
||||
|
26
cbconvert.go
26
cbconvert.go
@@ -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++
|
||||
|
@@ -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.Cover {
|
||||
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()
|
||||
|
Reference in New Issue
Block a user