From abc86a0460bea99e614aaf6feb37a1d6dae74757 Mon Sep 17 00:00:00 2001 From: Mukhtar Akere Date: Wed, 18 Dec 2024 16:51:00 +0100 Subject: [PATCH] Changelog 0.3.1 --- .air.toml | 2 +- .github/workflows/docker.yml | 15 +++------------ CHANGELOG.md | 7 ++++++- README.md | 20 +++++++++++++++++++- common/request.go | 4 +++- doc/ui.png | Bin 0 -> 127104 bytes pkg/debrid/debrid.go | 21 +++++++++++++-------- pkg/debrid/debrid_link.go | 10 +++++++--- pkg/debrid/realdebrid.go | 4 +--- pkg/debrid/torrent.go | 4 ++++ pkg/qbit/server/torrent_handlers.go | 8 +------- pkg/qbit/shared/torrent.go | 15 +++++++-------- 12 files changed, 65 insertions(+), 45 deletions(-) create mode 100644 doc/ui.png diff --git a/.air.toml b/.air.toml index 0ff91a4..d07453e 100644 --- a/.air.toml +++ b/.air.toml @@ -14,7 +14,7 @@ tmp_dir = "tmp" follow_symlink = false full_bin = "" include_dir = [] - include_ext = ["go", "tpl", "tmpl", "html"] + include_ext = ["go", "tpl", "tmpl", "html", ".json"] include_file = [] kill_delay = "0s" log = "build-errors.log" diff --git a/.github/workflows/docker.yml b/.github/workflows/docker.yml index 59eb50d..8ba5de9 100644 --- a/.github/workflows/docker.yml +++ b/.github/workflows/docker.yml @@ -40,8 +40,8 @@ jobs: push: true tags: cy01/blackhole:beta - - name: Build and push for main branch with version - if: github.ref == 'refs/heads/main' && steps.get_version.outputs.VERSION != '' + - name: Build and push for main branch + if: github.ref == 'refs/heads/main' uses: docker/build-push-action@v5 with: context: . @@ -49,13 +49,4 @@ jobs: push: true tags: | cy01/blackhole:latest - cy01/blackhole:${{ steps.get_version.outputs.VERSION }} - - - name: Build and push for main branch without version - if: github.ref == 'refs/heads/main' && steps.get_version.outputs.VERSION == '' - uses: docker/build-push-action@v5 - with: - context: . - platforms: linux/amd64,linux/arm64,linux/arm/v7 - push: true - tags: cy01/blackhole:latest \ No newline at end of file + cy01/blackhole:${{ steps.get_version.outputs.VERSION }} \ No newline at end of file diff --git a/CHANGELOG.md b/CHANGELOG.md index 4ba2e18..5754c17 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -91,4 +91,9 @@ - Refraction of the code - -Fix Torbox bug - Update CI/CD -- Update Readme \ No newline at end of file +- Update Readme + +#### 0.3.1 + +- Add DebridLink Support +- Refactor error handling \ No newline at end of file diff --git a/README.md b/README.md index af96fee..aaf6224 100644 --- a/README.md +++ b/README.md @@ -9,13 +9,16 @@ This is a Golang implementation go Torrent QbitTorrent with a **Real Debrid & To - Proxy support for the Arrs - Real Debrid Support - Torbox Support +- Debrid Link Support - Multi-Debrid Providers support +- UI for adding torrents directly to *arrs The proxy is useful in filtering out un-cached Real Debrid torrents ### Supported Debrid Providers - Real Debrid - Torbox +- Debrid Link ### Changelog @@ -66,7 +69,7 @@ Download the binary from the releases page and run it with the config file. "name": "torbox", "host": "https://api.torbox.app/v1", "api_key": "torbox_api_key", - "folder": "data/realdebrid/torrents/", + "folder": "data/torbox/torrents/", "rate_limit": "250/minute", "download_uncached": false, "check_cached": true @@ -79,6 +82,15 @@ Download the binary from the releases page and run it with the config file. "rate_limit": "250/minute", "download_uncached": false, "check_cached": false + }, + { + "name": "debridlink", + "host": "https://debrid-link.com/api/v2", + "api_key": "debridlink_key", + "folder": "data/debridlink/torrents/", + "rate_limit": "250/minute", + "download_uncached": false, + "check_cached": false } ], "proxy": { @@ -163,6 +175,12 @@ Setting Up Qbittorrent in Arr - Test - Save +### UI for adding torrents + +![UI](./doc/ui.png) + +The UI is a simple web interface that allows you to add torrents directly to the Arrs(Sonarr, Radarr, etc) + ### TODO - [ ] A proper name!!!! - [ ] Debrid diff --git a/common/request.go b/common/request.go index dce171c..a3b8cf9 100644 --- a/common/request.go +++ b/common/request.go @@ -75,7 +75,9 @@ func (c *RLHTTPClient) MakeRequest(req *http.Request) ([]byte, error) { b, _ := io.ReadAll(res.Body) statusOk := strconv.Itoa(res.StatusCode)[0] == '2' if !statusOk { - return nil, fmt.Errorf("unexpected status code: %d", res.StatusCode) + // Add status code error to the body + b = append(b, []byte(fmt.Sprintf("\nstatus code: %d", res.StatusCode))...) + return nil, fmt.Errorf(string(b)) } defer func(Body io.ReadCloser) { err := Body.Close() diff --git a/doc/ui.png b/doc/ui.png new file mode 100644 index 0000000000000000000000000000000000000000..85c722b3e6175148429873dcdce69e2d5c7ed47c GIT binary patch literal 127104 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¬L=8|Q48|KhG)zK*fIR1rU|bKl$q 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 literal 0 HcmV?d00001 diff --git a/pkg/debrid/debrid.go b/pkg/debrid/debrid.go index 3af5176..2672a13 100644 --- a/pkg/debrid/debrid.go +++ b/pkg/debrid/debrid.go @@ -147,6 +147,8 @@ func ProcessTorrent(d *DebridService, magnet *common.Magnet, a *arr.Arr, isSymli Size: magnet.Size, } + errs := make([]error, 0) + for index, db := range d.debrids { log.Println("Processing debrid: ", db.GetName()) logger := db.GetLogger() @@ -162,18 +164,21 @@ func ProcessTorrent(d *DebridService, magnet *common.Magnet, a *arr.Arr, isSymli } dbt, err := db.SubmitMagnet(debridTorrent) - if err != nil || dbt.Id == "" { - if dbt != nil { - dbt.Delete() - } - logger.Printf("Error submitting magnet: %s", err) + if dbt != nil { + dbt.Debrid = db + dbt.Arr = a + } + if err != nil || dbt == nil || dbt.Id == "" { + errs = append(errs, err) continue } logger.Printf("Torrent: %s submitted to %s", dbt.Name, db.GetName()) d.lastUsed = index - dbt.Debrid = db - dbt.Arr = a return db.CheckStatus(dbt, isSymlink) } - return nil, fmt.Errorf("failed to process torrent") + err := fmt.Errorf("failed to process torrent") + for _, e := range errs { + err = fmt.Errorf("%w\n%w", err, e) + } + return nil, err } diff --git a/pkg/debrid/debrid_link.go b/pkg/debrid/debrid_link.go index 6092d27..843873a 100644 --- a/pkg/debrid/debrid_link.go +++ b/pkg/debrid/debrid_link.go @@ -89,7 +89,7 @@ func (r *DebridLink) IsAvailable(infohashes []string) map[string]bool { func (r *DebridLink) GetTorrent(id string) (*Torrent, error) { torrent := &Torrent{} - url := fmt.Sprintf("%s/seedbox/list/?ids=%s", r.Host, id) + url := fmt.Sprintf("%s/seedbox/list?ids=%s", r.Host, id) req, _ := http.NewRequest(http.MethodGet, url, nil) resp, err := r.client.MakeRequest(req) if err != nil { @@ -113,6 +113,9 @@ func (r *DebridLink) GetTorrent(id string) (*Torrent, error) { } data := dt[0] status := "downloading" + if data.Status == 100 { + status = "downloaded" + } name := common.RemoveInvalidChars(data.Name) torrent.Id = data.ID torrent.Name = name @@ -185,8 +188,8 @@ func (r *DebridLink) SubmitMagnet(torrent *Torrent) (*Torrent, error) { func (r *DebridLink) CheckStatus(torrent *Torrent, isSymlink bool) (*Torrent, error) { for { - torrent, err := r.GetTorrent(torrent.Id) - + t, err := r.GetTorrent(torrent.Id) + torrent = t if err != nil || torrent == nil { return torrent, err } @@ -248,6 +251,7 @@ func NewDebridLink(dc common.DebridConfig, cache *common.Cache) *DebridLink { rl := common.ParseRateLimit(dc.RateLimit) headers := map[string]string{ "Authorization": fmt.Sprintf("Bearer %s", dc.APIKey), + "Content-Type": "application/json", } client := common.NewRLHTTPClient(rl, headers) logger := common.NewLogger(dc.Name, os.Stdout) diff --git a/pkg/debrid/realdebrid.go b/pkg/debrid/realdebrid.go index 706ac39..0dab3e4 100644 --- a/pkg/debrid/realdebrid.go +++ b/pkg/debrid/realdebrid.go @@ -180,12 +180,11 @@ func (r *RealDebrid) CheckStatus(torrent *Torrent, isSymlink bool) (*Torrent, er torrent.Status = status torrent.Debrid = r if status == "error" || status == "dead" || status == "magnet_error" { - return torrent, fmt.Errorf("torrent: %s has error", torrent.Name) + return torrent, fmt.Errorf("torrent: %s has error: %s", torrent.Name, status) } else if status == "waiting_files_selection" { files := GetTorrentFiles(data) torrent.Files = files if len(files) == 0 { - go torrent.Delete() return torrent, fmt.Errorf("no video files found") } filesId := make([]string, 0) @@ -214,7 +213,6 @@ func (r *RealDebrid) CheckStatus(torrent *Torrent, isSymlink bool) (*Torrent, er break } else if status == "downloading" { if !r.DownloadUncached { - go torrent.Delete() return torrent, fmt.Errorf("torrent: %s not cached", torrent.Name) } // Break out of the loop if the torrent is downloading. diff --git a/pkg/debrid/torrent.go b/pkg/debrid/torrent.go index 89315b7..bd28b6f 100644 --- a/pkg/debrid/torrent.go +++ b/pkg/debrid/torrent.go @@ -74,7 +74,11 @@ func (t *Torrent) GetMountFolder(rClonePath string) string { } func (t *Torrent) Delete() { + if t.Debrid == nil { + return + } t.Debrid.DeleteTorrent(t) + } type TorrentFile struct { diff --git a/pkg/qbit/server/torrent_handlers.go b/pkg/qbit/server/torrent_handlers.go index b724d44..5f831e1 100644 --- a/pkg/qbit/server/torrent_handlers.go +++ b/pkg/qbit/server/torrent_handlers.go @@ -50,7 +50,6 @@ func (s *Server) handleTorrentsAdd(w http.ResponseWriter, r *http.Request) { } ctx = context.WithValue(ctx, "isSymlink", isSymlink) - for _, url := range urlList { if err := s.qbit.AddMagnet(ctx, url, category); err != nil { s.logger.Printf("Error adding magnet: %v\n", err) @@ -59,13 +58,8 @@ func (s *Server) handleTorrentsAdd(w http.ResponseWriter, r *http.Request) { } } - if contentType == "multipart/form-data" { + if contentType == "multipart/form-data" && len(r.MultipartForm.File["torrents"]) > 0 { files := r.MultipartForm.File["torrents"] - if len(files) == 0 { - s.logger.Printf("No files provided\n") - http.Error(w, "No files provided", http.StatusBadRequest) - return - } for _, fileHeader := range files { if err := s.qbit.AddTorrent(ctx, fileHeader, category); err != nil { s.logger.Printf("Error adding torrent: %v\n", err) diff --git a/pkg/qbit/shared/torrent.go b/pkg/qbit/shared/torrent.go index 5e6497b..7ec61bc 100644 --- a/pkg/qbit/shared/torrent.go +++ b/pkg/qbit/shared/torrent.go @@ -21,13 +21,11 @@ import ( func (q *QBit) AddMagnet(ctx context.Context, url, category string) error { magnet, err := common.GetMagnetFromUrl(url) if err != nil { - q.logger.Printf("Error parsing magnet link: %v\n", err) - return err + return fmt.Errorf("error parsing magnet link: %w", err) } err = q.Process(ctx, magnet, category) if err != nil { - q.logger.Println("Failed to process magnet:", err) - return err + return fmt.Errorf("failed to process torrent: %w", err) } return nil } @@ -38,13 +36,11 @@ func (q *QBit) AddTorrent(ctx context.Context, fileHeader *multipart.FileHeader, var reader io.Reader = file magnet, err := common.GetMagnetFromFile(reader, fileHeader.Filename) if err != nil { - q.logger.Printf("Error reading file: %s", fileHeader.Filename) - return err + return fmt.Errorf("error reading file: %s \n %w", fileHeader.Filename, err) } err = q.Process(ctx, magnet, category) if err != nil { - q.logger.Println("Failed to process torrent:", err) - return err + return fmt.Errorf("failed to process torrent: %w", err) } return nil } @@ -58,6 +54,9 @@ func (q *QBit) Process(ctx context.Context, magnet *common.Magnet, category stri isSymlink := ctx.Value("isSymlink").(bool) debridTorrent, err := debrid.ProcessTorrent(q.Debrid, magnet, a, isSymlink) if err != nil || debridTorrent == nil { + if debridTorrent != nil { + go debridTorrent.Delete() + } if err == nil { err = fmt.Errorf("failed to process torrent") }