go-nyaa
go-nyaa copied to clipboard
🐈📦 nyaa.si client library for Go
🐈📦 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 📒
- Search Example
-
Search Options
- Provider
- Query
-
Category
- nyaa
- sukebei
- SortBy
- Filter
- TorrentComments
- TorrentDescription
- TorrentFiles
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
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