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")
|
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
|
||||||
|
26
cbconvert.go
26
cbconvert.go
@@ -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++
|
||||||
|
@@ -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()
|
||||||
|
Reference in New Issue
Block a user