From bc6046db036cf2147cf2fd8d79d2522173e242f0 Mon Sep 17 00:00:00 2001 From: partisan Date: Fri, 24 May 2024 08:32:32 +0200 Subject: [PATCH] fix magnet urls --- files-torrentgalaxy.go | 13 +++++++++---- files.go | 23 +++++++++++++++++++++-- templates/files.html | 23 +++++++++++------------ 3 files changed, 41 insertions(+), 18 deletions(-) diff --git a/files-torrentgalaxy.go b/files-torrentgalaxy.go index 20284e3..1312928 100644 --- a/files-torrentgalaxy.go +++ b/files-torrentgalaxy.go @@ -77,18 +77,22 @@ func (tg *TorrentGalaxy) Search(query string, category string) ([]TorrentResult, var results []TorrentResult doc.Find("div.tgxtablerow").Each(func(i int, s *goquery.Selection) { - titleDiv := s.Find("div#click") + titleDiv := s.Find("div#click > div > a.txlight") title := strings.TrimSpace(titleDiv.Text()) magnetLink, exists := s.Find("a[href^='magnet']").Attr("href") + + fmt.Printf("Found title: %s\n", title) // Debugging statement + fmt.Printf("Found magnet link: %s\n", magnetLink) // Debugging statement + if !exists { log.Printf("No magnet link found for title: %s", title) return } byteSize := parseSize(s.Find("span.badge-secondary").Text()) - viewCount := parseInt(s.Find("font[color='orange']").Text()) - seeder := parseInt(s.Find("font[color='green']").Text()) - leecher := parseInt(s.Find("font[color='#ff0000']").Text()) + viewCount := parseInt(s.Find("span.badge-warning font[color='orange']").Text()) + seeder := parseInt(s.Find("span[title='Seeders/Leechers'] font[color='green']").Text()) + leecher := parseInt(s.Find("span[title='Seeders/Leechers'] font[color='#ff0000']").Text()) result := TorrentResult{ URL: fmt.Sprintf("https://%s", TORRENTGALAXY_DOMAIN), @@ -155,6 +159,7 @@ func parseSize(sizeStr string) int64 { return int64(size * float64(multiplier)) } +//apparently this is needed so it can announce that magnet link is being used and people start seeding it, but I dont like the fact that I add trackers purusefully func applyTrackers(magnetLink string) string { if magnetLink == "" { return "" diff --git a/files.go b/files.go index dc7baf7..afa3f13 100644 --- a/files.go +++ b/files.go @@ -5,7 +5,9 @@ import ( "html/template" "log" "net/http" + "net/url" "sort" + "strings" "time" ) @@ -63,10 +65,13 @@ func handleFileSearch(w http.ResponseWriter, query, safe, lang string, page int) if len(res) > 0 { allErrors = false } - results = append(results, res...) + for _, r := range res { + r.Magnet = url.QueryEscape(removeMagnetLink(r.Magnet)) // Remove "magnet:" and encode url + results = append(results, r) + } } - if allErrors { + if allErrors || len(results) == 0 || results[len(results)-1].Title == "" || results[len(results)-1].Title == " " { results = []TorrentResult{ {Error: "Results are currently unavailable, sorry. Please try again later."}, } @@ -108,12 +113,26 @@ func handleFileSearch(w http.ResponseWriter, query, safe, lang string, page int) Settings: settings, } + // Debugging: Print results before rendering template + for _, result := range results { + fmt.Printf("Title: %s, Magnet: %s\n", result.Title, result.Magnet) + } + if err := tmpl.Execute(w, data); err != nil { log.Printf("Failed to render template: %v", err) http.Error(w, "Failed to render template", http.StatusInternalServerError) } } +//this is so fucking stupid, but it does not work otherwise +func removeMagnetLink(magnet string) string { + // Remove the magnet: prefix if it exists + if strings.HasPrefix(magnet, "magnet:?") { + magnet = strings.TrimPrefix(magnet, "magnet:?") + } + return magnet +} + func subtract(a, b int) int { return a - b } diff --git a/templates/files.html b/templates/files.html index ebea712..863b8b7 100644 --- a/templates/files.html +++ b/templates/files.html @@ -71,21 +71,20 @@ + {{ range .Results }}
- {{ range .Results }} -
- {{ if .Error }} -
{{ .Error }}
- {{ else }} - {{ .URL }} -

{{ .Title }}

-

{{ if .Views }}{{ .Views }} views • {{ end }}{{ .Size }}

-

Seeders: {{ .Seeders }} | Leechers: {{ .Leechers }}

- {{ end }} -
+
+ {{ if .Error }} +
{{ .Error }}
+ {{ else }} + {{ .URL }} +

{{ .Title }}

+

{{ if .Views }}{{ .Views }} views • {{ end }}{{ .Size }}

+

Seeders: {{ .Seeders }} | Leechers: {{ .Leechers }}

{{ end }} -
+
+ {{ end }}