ππ¦ go-nyaa
nyaa.si client library for Go
Built on top of:
gofeed - search using RSS
colly - scrap torrent details page
Original idea:
ejnshtein/nyaa-api
Installation π¨
go get github.com/mmcdole/gofeed
go get github.com/gocolly/colly
go get -u github.com/irevenko/go-nyaa
Contributing π€
Contributions, issues and feature requests are welcome! π
Feel free to check open issues.
Docs π
Go reference,
Examples
Search Example
Search
returns []Torrent
import (
"fmt"
"log"
"github.com/irevenko/go-nyaa/nyaa"
)
func main() {
opt := nyaa.SearchOptions{
Provider: "nyaa", // Provider is the only required option
Query: "LN",
Category: "literature",
SortBy: "seeders",
Filter: "trusted-only",
}
torrents, err := nyaa.Search(opt)
if err != nil {
log.Fatal(err)
}
fmt.Println(torrents)
}
Search Options
type SearchOptions struct {
Provider string
Query string
Category string
SortBy string
Filter string
}
Provider
nyaa
- nyaa.si
sukebei
- sukebei.nyaa.si
Query
- your desired search string
Category
nyaa
all
- All Categories
anime
- All Anime
anime-amv
anime-eng
anime-non-eng
anime-raw
audio
- All Audio
audio-lossless
audio-lossy
literature
- All Literature
literature-eng
literature-non-eng
literature-raw
live-action
- All Live Action
live-action-idol-prom
live-action-eng
live-action-non-eng
live-action-raw
pictures
- All Pictures
pictures-graphics
pictures-photos
software
- All Software
software-apps
software-games
sukebei
all
- All Categories
art
- All Art
art-anime
art-doujinshi
art-manga
art-games
art-pictures
real-life
- All Real Life
real-life-photos
real-life-videos
SortBy
comments
downloads
date
seeders
leechers
size
Filter
no-filter
no-remakes
trusted-only
TorrentComments
returns []Comment
import (
"fmt"
"log"
"github.com/irevenko/go-nyaa/nyaa"
)
func main() {
comms, err := nyaa.TorrentComments("https://nyaa.si/view/1366002") // nyaa.si or sukebei.nyaa.si
if err != nil {
log.Fatal(err)
}
for _, v := range comms {
fmt.Println("user: " + v.User)
fmt.Println("at: " + v.Date)
fmt.Println("text: " + v.Text)
fmt.Println()
}
}
TorrentDescription
TorrentDescription
returns string
import (
"fmt"
"log"
"github.com/irevenko/go-nyaa/nyaa"
)
func main() {
desc, err := nyaa.TorrentDescription("https://nyaa.si/view/1366002") // nyaa.si or sukebei.nyaa.si
if err != nil {
log.Fatal(err)
}
fmt.Println(desc)
}
TorrentFiles
TorrentFiles
returns []string
import (
"fmt"
"log"
"github.com/irevenko/go-nyaa/nyaa"
)
func main() {
files, err := nyaa.TorrentFiles("https://nyaa.si/view/1366002") // nyaa.si or sukebei.nyaa.si
if err != nil {
log.Fatal(err)
}
for _, v := range files {
fmt.Println(v)
}
}
Notes
- Pagination does not work with RSS
- Ascending sort does not work with RSS
Quick Start π
git clone https://github.com/irevenko/go-nyaa.git
cd go-nyaa
go get -d ./...
go run _examples/nyaa_search.go
What I Learned π§
- RSS Feed, xml
- Parsing html in Go
License π
(c) 2021 Ilya Revenko. MIT License