--- id: solidtorrents name: Solid Torrents description: "Solid Torrents is a Public torrent meta-search engine" language: en-US type: public encoding: UTF-8 requestDelay: 2 links: - https://solidtorrents.to/ legacylinks: - https://solidtorrents.net/ - https://solidtorrents.nocensor.click/ - https://solidtorrents.eu/ - https://solidtorrents.nocensor.cloud/ caps: categories: AudioBook: Audio/Audiobook eBook: Books/EBook "Ebook/Course": Books/EBook Games: PC/Games "Games/PC": PC/Games Movies: Movies Music: Audio "Music/Album": Audio "Music/mp3": Audio/MP3 "Music/Lossless": Audio/Lossless "Music/Video": Audio/Video Other: Other "Other/Android": PC/Mobile-Android "Other/Archive": Other "Other/Audio": Audio "Other/Database": PC "Other/DiskImage": PC/ISO "Other/Document": Books/Comics "Other/Image": Other/Misc "Other/Program": PC/0day "Other/Sourcecode": PC "Other/Source Code": PC "Other/Video": TV Softwares: PC/0day "Softwares/Windows": PC/0day TV: TV Unknown: Other XXX: XXX modes: search: [q] tv-search: [q, season, ep] movie-search: [q] music-search: [q] book-search: [q] settings: - name: prefer_magnet_links type: checkbox label: Prefer Magnet Links default: false - name: sort type: select label: Sort requested from site default: date options: date: created seeders: seeders size: size - name: type type: select label: Order requested from site default: desc options: desc: desc asc: asc search: paths: # https://solidtorrents.net/search?q=&sort=date&order=desc - path: search inputs: q: "{{ .Keywords }}" sort: "{{ .Config.sort }}" order: "{{ .Config.type }}" limit: 100 page: 1 rows: selector: li.search-result:has(a[class="dl-torrent"]) fields: category: selector: a.category title: selector: h5 details: selector: h5 a attribute: href download_optional: selector: a[class="dl-torrent"] attribute: href optional: true download: text: "{{ if .Config.prefer_magnet_links }}{{ else }}{{ .Result.download_optional }}{{ end }}" optional: true magnet: selector: a[href^="magnet:?xt"] attribute: href infohash: selector: a[href^="magnet:?xt"] attribute: href filters: - name: regexp args: ([A-F|a-f|0-9]{40}) grabs_dot: selector: div.stats div:has(img[alt="Download"]):contains(".") optional: true filters: - name: replace args: [".", ""] - name: replace args: ["K", "00"] - name: replace args: ["M", "00000"] grabs_nodot: selector: div.stats div:has(img[alt="Download"]):not(:contains(".")) optional: true filters: - name: replace args: ["K", "000"] - name: replace args: ["M", "000000"] grabs: text: "{{ if or .Result.grabs_dot .Result.grabs_nodot }}{{ or .Result.grabs_dot .Result.grabs_nodot }}{{ else }}0{{ end }}" size: selector: div.stats div:has(img[alt="Size"]) seeders_dot: selector: div.stats div:has(img[alt="Seeder"]):contains(".") optional: true filters: - name: replace args: [".", ""] - name: replace args: ["K", "00"] - name: replace args: ["M", "00000"] seeders_nodot: selector: div.stats div:has(img[alt="Seeder"]):not(:contains(".")) optional: true filters: - name: replace args: ["K", "000"] - name: replace args: ["M", "000000"] seeders: text: "{{ if or .Result.seeders_dot .Result.seeders_nodot }}{{ or .Result.seeders_dot .Result.seeders_nodot }}{{ else }}0{{ end }}" leechers_dot: selector: div.stats div:has(img[alt="Leecher"]):contains(".") optional: true filters: - name: replace args: [".", ""] - name: replace args: ["K", "00"] - name: replace args: ["M", "00000"] leechers_nodot: selector: div.stats div:has(img[alt="Leecher"]):not(:contains(".")) optional: true filters: - name: replace args: ["K", "000"] - name: replace args: ["M", "000000"] leechers: text: "{{ if or .Result.leechers_dot .Result.leechers_nodot }}{{ or .Result.leechers_dot .Result.leechers_nodot }}{{ else }}0{{ end }}" date: selector: div.stats div:has(img[alt="Date"]) filters: - name: dateparse args: "MMM d, yyyy" downloadvolumefactor: text: 0 uploadvolumefactor: text: 1 # engine n/a