From a76adfdd293ca6d67a6adc4032d5d1e145467ce0 Mon Sep 17 00:00:00 2001 From: Simon Ding Date: Mon, 8 Jul 2024 09:39:22 +0800 Subject: [PATCH] update --- db/db.go | 26 ++++++++++++++++--- server/resources.go | 22 +++++++++++++--- server/server.go | 2 ++ ui/lib/weclome.dart | 62 ++++++++++++++++++++++----------------------- 4 files changed, 73 insertions(+), 39 deletions(-) diff --git a/db/db.go b/db/db.go index 9e35a3e..1139e2d 100644 --- a/db/db.go +++ b/db/db.go @@ -135,9 +135,15 @@ func (c *Client) SaveTorznabInfo(name string, setting TorznabSetting) error { return nil } -func (c *Client) GetAllTorznabInfo() map[string]TorznabSetting { +type TorznabInfo struct { + Name string `json:"name"` + TorznabSetting +} + +func (c *Client) GetAllTorznabInfo() []*TorznabInfo { res := c.ent.Indexers.Query().Where(indexers.Implementation(IndexerTorznabImpl)).AllX(context.TODO()) - var m = make(map[string]TorznabSetting, len(res)) + + var l = make([]*TorznabInfo, 0, len(res)) for _, r := range res { var ss TorznabSetting err := json.Unmarshal([]byte(r.Settings), &ss) @@ -145,9 +151,12 @@ func (c *Client) GetAllTorznabInfo() map[string]TorznabSetting { log.Errorf("unmarshal torznab %s error: %v", r.Name, err) continue } - m[r.Name] = ss + l = append(l, &TorznabInfo{ + Name: r.Name, + TorznabSetting: ss, + }) } - return m + return l } func (c *Client) SaveTransmission(name, url, user, password string) error { @@ -165,3 +174,12 @@ func (c *Client) GetTransmission() *ent.DownloadClients { } return dc } + +func (c *Client) GetAllDonloadClients() []*ent.DownloadClients { + cc, err := c.ent.DownloadClients.Query().All(context.TODO()) + if err != nil { + log.Errorf("no download client") + return nil + } + return cc +} diff --git a/server/resources.go b/server/resources.go index 6916a29..3d52efa 100644 --- a/server/resources.go +++ b/server/resources.go @@ -16,10 +16,10 @@ func (s *Server) searchTvWithTorznab(name string, season, episode int) []torznab var res []torznab.Result allTorznab := s.db.GetAllTorznabInfo() - for name, setting := range allTorznab { - resp, err := torznab.Search(setting.URL, setting.ApiKey, q) + for _, tor := range allTorznab { + resp, err := torznab.Search(tor.URL, tor.ApiKey, q) if err != nil { - log.Errorf("search %s error: %v", name, err) + log.Errorf("search %s error: %v", tor.Name, err) continue } res = append(res, resp...) @@ -48,6 +48,14 @@ func (s *Server) AddTorznabInfo(c *gin.Context) (interface{}, error) { return nil, nil } +func (s *Server) GetAllIndexers(c *gin.Context) (interface{}, error) { + indexers := s.db.GetAllTorznabInfo() + if len(indexers) == 0 { + return nil, fmt.Errorf("no indexer found") + } + return indexers, nil +} + type searchAndDownloadIn struct { ID int `json:"id"` Season int `json:"season"` @@ -109,3 +117,11 @@ func (s *Server) AddDownloadClient(c *gin.Context) (interface{}, error) { } return nil, nil } + +func (s *Server) GetAllDonloadClients(c *gin.Context) (interface{}, error) { + res := s.db.GetAllDonloadClients() + if len(res) == 0 { + return nil, fmt.Errorf("no download client") + } + return res, nil +} \ No newline at end of file diff --git a/server/server.go b/server/server.go index 93809dc..ab4e487 100644 --- a/server/server.go +++ b/server/server.go @@ -64,12 +64,14 @@ func (s *Server) Serve() error { } indexer := api.Group("/indexer") { + indexer.GET("/", HttpHandler(s.GetAllIndexers)) indexer.POST("/add", HttpHandler(s.AddTorznabInfo)) indexer.POST("/download", HttpHandler(s.SearchAndDownload)) } downloader := api.Group("/downloader") { + downloader.GET("/", HttpHandler(s.GetAllDonloadClients)) downloader.POST("/add", HttpHandler(s.AddDownloadClient)) } diff --git a/ui/lib/weclome.dart b/ui/lib/weclome.dart index 29d72c7..113d518 100644 --- a/ui/lib/weclome.dart +++ b/ui/lib/weclome.dart @@ -29,42 +29,40 @@ class _WeclomePageState extends State { return GridView.builder( itemCount: favList.length, gridDelegate: - const SliverGridDelegateWithFixedCrossAxisCount(crossAxisCount: 4), + const SliverGridDelegateWithFixedCrossAxisCount(crossAxisCount: 6), itemBuilder: (context, i) { var item = TvSeries.fromJson(favList[i]); - return Container( - child: Card( - margin: const EdgeInsets.all(4), - clipBehavior: Clip.hardEdge, - child: InkWell( - //splashColor: Colors.blue.withAlpha(30), - onTap: () { - context.go(TvDetailsPage.toRoute(item.id!)); - //showDialog(context: context, builder: builder) - }, - child: Column( - children: [ - Flexible( - child: SizedBox( - width: 300, - height: 600, - child: Image.network( - APIs.tmdbImgBaseUrl + item.posterPath!, - fit: BoxFit.contain, - ), + return Card( + margin: const EdgeInsets.all(4), + clipBehavior: Clip.hardEdge, + child: InkWell( + //splashColor: Colors.blue.withAlpha(30), + onTap: () { + context.go(TvDetailsPage.toRoute(item.id!)); + //showDialog(context: context, builder: builder) + }, + child: Column( + children: [ + Flexible( + child: SizedBox( + width: 300, + height: 600, + child: Image.network( + APIs.tmdbImgBaseUrl + item.posterPath!, + fit: BoxFit.contain, ), ), - Flexible( - child: Text( - item.name!, - style: const TextStyle( - fontSize: 14, fontWeight: FontWeight.bold), - ), - ) - ], - ), - )), - ); + ), + Flexible( + child: Text( + item.name!, + style: const TextStyle( + fontSize: 14, fontWeight: FontWeight.bold), + ), + ) + ], + ), + )); }); }