fix magnet urls

This commit is contained in:
partisan 2024-05-24 08:32:32 +02:00
parent 4ccb9a51d4
commit bc6046db03
3 changed files with 41 additions and 18 deletions

View file

@ -77,18 +77,22 @@ func (tg *TorrentGalaxy) Search(query string, category string) ([]TorrentResult,
var results []TorrentResult var results []TorrentResult
doc.Find("div.tgxtablerow").Each(func(i int, s *goquery.Selection) { 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()) title := strings.TrimSpace(titleDiv.Text())
magnetLink, exists := s.Find("a[href^='magnet']").Attr("href") 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 { if !exists {
log.Printf("No magnet link found for title: %s", title) log.Printf("No magnet link found for title: %s", title)
return return
} }
byteSize := parseSize(s.Find("span.badge-secondary").Text()) byteSize := parseSize(s.Find("span.badge-secondary").Text())
viewCount := parseInt(s.Find("font[color='orange']").Text()) viewCount := parseInt(s.Find("span.badge-warning font[color='orange']").Text())
seeder := parseInt(s.Find("font[color='green']").Text()) seeder := parseInt(s.Find("span[title='Seeders/Leechers'] font[color='green']").Text())
leecher := parseInt(s.Find("font[color='#ff0000']").Text()) leecher := parseInt(s.Find("span[title='Seeders/Leechers'] font[color='#ff0000']").Text())
result := TorrentResult{ result := TorrentResult{
URL: fmt.Sprintf("https://%s", TORRENTGALAXY_DOMAIN), URL: fmt.Sprintf("https://%s", TORRENTGALAXY_DOMAIN),
@ -155,6 +159,7 @@ func parseSize(sizeStr string) int64 {
return int64(size * float64(multiplier)) 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 { func applyTrackers(magnetLink string) string {
if magnetLink == "" { if magnetLink == "" {
return "" return ""

View file

@ -5,7 +5,9 @@ import (
"html/template" "html/template"
"log" "log"
"net/http" "net/http"
"net/url"
"sort" "sort"
"strings"
"time" "time"
) )
@ -63,10 +65,13 @@ func handleFileSearch(w http.ResponseWriter, query, safe, lang string, page int)
if len(res) > 0 { if len(res) > 0 {
allErrors = false 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{ results = []TorrentResult{
{Error: "Results are currently unavailable, sorry. Please try again later."}, {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, 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 { if err := tmpl.Execute(w, data); err != nil {
log.Printf("Failed to render template: %v", err) log.Printf("Failed to render template: %v", err)
http.Error(w, "Failed to render template", http.StatusInternalServerError) 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 { func subtract(a, b int) int {
return a - b return a - b
} }

View file

@ -71,21 +71,20 @@
</select> </select>
<button type="submit" class="torrent-sort-save">Submit</button> <button type="submit" class="torrent-sort-save">Submit</button>
</form> </form>
<div class="clean">
{{ range .Results }} {{ range .Results }}
<div class="clean">
<div class="results"> <div class="results">
{{ if .Error }} {{ if .Error }}
<div class="error">{{ .Error }}</div> <div class="error">{{ .Error }}</div>
{{ else }} {{ else }}
<a id="link" href="{{ .Magnet }}">{{ .URL }}</a> <a id="link" href="{{ .URL }}">{{ .URL }}</a>
<a class="torrent" href="{{ .Magnet }}"><h3>{{ .Title }}</h3></a> <a class="torrent" href="magnet:{{ .Magnet }}"><h3>{{ .Title }}</h3></a>
<p class="stats">{{ if .Views }}{{ .Views }} views • {{ end }}{{ .Size }}</p> <p class="stats">{{ if .Views }}{{ .Views }} views • {{ end }}{{ .Size }}</p>
<p class="publish__info"> Seeders: <span class="seeders">{{ .Seeders }}</span> | Leechers: <span class="leechers">{{ .Leechers }}</span></p> <p class="publish__info"> Seeders: <span class="seeders">{{ .Seeders }}</span> | Leechers: <span class="leechers">{{ .Leechers }}</span></p>
{{ end }} {{ end }}
</div> </div>
{{ end }}
</div> </div>
{{ end }}
<div class="prev-next prev-img"> <div class="prev-next prev-img">
<form action="/search" method="get"> <form action="/search" method="get">
<input type="hidden" name="q" value="{{ .Query }}"> <input type="hidden" name="q" value="{{ .Query }}">