127 lines
2.2 KiB
Go
127 lines
2.2 KiB
Go
package main
|
|
|
|
import (
|
|
"encoding/json"
|
|
"fmt"
|
|
"log"
|
|
"os"
|
|
|
|
_ "github.com/mattn/go-sqlite3"
|
|
"github.com/urfave/cli/v2"
|
|
)
|
|
|
|
var version = "v1.0.0"
|
|
|
|
/*
|
|
TODO
|
|
|
|
- library
|
|
- add
|
|
- list - getBooks
|
|
- platform
|
|
- login
|
|
- logout
|
|
- pull
|
|
- download
|
|
|
|
*/
|
|
|
|
func main() {
|
|
flags := []cli.Flag{
|
|
&cli.StringFlag{
|
|
Name: "db",
|
|
Usage: "database file path",
|
|
Value: "gadl.db",
|
|
},
|
|
&cli.StringFlag{
|
|
Name: "platform",
|
|
Usage: "platform type",
|
|
Value: "google-play-books",
|
|
},
|
|
}
|
|
|
|
app := &cli.App{
|
|
Name: "gadl",
|
|
Usage: "Manga Downloader",
|
|
Version: version,
|
|
Flags: flags,
|
|
Commands: cli.Commands{
|
|
&cli.Command{
|
|
Name: "install",
|
|
Usage: "install system dependencies for browser",
|
|
Flags: flags,
|
|
Action: func(c *cli.Context) error {
|
|
return installBrowser()
|
|
},
|
|
},
|
|
&cli.Command{
|
|
Name: "login",
|
|
Flags: flags,
|
|
Action: func(c *cli.Context) error {
|
|
db := newDatabase(c.String("db"))
|
|
browser := runBrowser(runOptions{db: db, headless: false})
|
|
platform := c.String("platform")
|
|
_, err := browser.loadBrowserContext(platform)
|
|
if err != nil {
|
|
log.Fatal(err)
|
|
}
|
|
|
|
return browser.stop()
|
|
},
|
|
},
|
|
&cli.Command{
|
|
Name: "delete",
|
|
Flags: flags,
|
|
Action: func(c *cli.Context) error {
|
|
db := newDatabase(c.String("db"))
|
|
library := newLibrary(newLibraryOptions{db})
|
|
|
|
for _, id := range c.Args().Slice() {
|
|
if err := library.delete(id); err != nil {
|
|
log.Fatal(err)
|
|
}
|
|
}
|
|
|
|
return nil
|
|
},
|
|
},
|
|
&cli.Command{
|
|
Name: "view",
|
|
Flags: flags,
|
|
Action: func(c *cli.Context) error {
|
|
db := newDatabase(c.String("db"))
|
|
library := newLibrary(newLibraryOptions{db})
|
|
|
|
for _, id := range c.Args().Slice() {
|
|
b, err := library.get(id)
|
|
if err != nil {
|
|
log.Fatal(err)
|
|
}
|
|
|
|
json, err := json.Marshal(&b)
|
|
if err != nil {
|
|
log.Fatal(err)
|
|
}
|
|
|
|
fmt.Println(string(json))
|
|
}
|
|
|
|
return nil
|
|
},
|
|
},
|
|
&cli.Command{
|
|
Name: "download",
|
|
Flags: flags,
|
|
Action: func(c *cli.Context) error {
|
|
newDatabase(c.String("db"))
|
|
|
|
return nil
|
|
},
|
|
},
|
|
},
|
|
}
|
|
|
|
if err := app.Run(os.Args); err != nil {
|
|
log.Fatal(err)
|
|
}
|
|
}
|