Skip to content

Commit 067d761

Browse files
committed
Implemented nyaa result classes
1 parent 1df4a94 commit 067d761

File tree

2 files changed

+54
-18
lines changed

2 files changed

+54
-18
lines changed

nyaa_cui.go

Lines changed: 29 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ import (
99
"regexp"
1010

1111
"github.com/aqatl/mal/dialog"
12-
"github.com/aqatl/mal/nyaa_scraper"
12+
ns "github.com/aqatl/mal/nyaa_scraper"
1313
"github.com/fatih/color"
1414
"github.com/jroimartin/gocui"
1515
"github.com/urfave/cli"
@@ -75,8 +75,8 @@ func startNyaaCui(cfg *Config, searchTerm, displayedInfo string) error {
7575

7676
SearchTerm: searchTerm,
7777
DisplayedInfo: displayedInfo,
78-
Category: nyaa_scraper.AnimeEnglishTranslated,
79-
Filter: nyaa_scraper.TrustedOnly,
78+
Category: ns.AnimeEnglishTranslated,
79+
Filter: ns.TrustedOnly,
8080
}
8181
gui.SetManager(nc)
8282
nc.setGuiKeyBindings(gui)
@@ -109,10 +109,10 @@ type nyaaCui struct {
109109

110110
SearchTerm string
111111
DisplayedInfo string
112-
Category nyaa_scraper.NyaaCategory
113-
Filter nyaa_scraper.NyaaFilter
112+
Category ns.NyaaCategory
113+
Filter ns.NyaaFilter
114114

115-
Results []nyaa_scraper.NyaaEntry
115+
Results []ns.NyaaEntry
116116
MaxResults int
117117
MaxPages int
118118
LoadedPages int
@@ -128,6 +128,10 @@ var cyan = color.New(color.FgCyan).SprintFunc()
128128
var blue = color.New(color.FgBlue).SprintFunc()
129129
var green = color.New(color.FgGreen).SprintFunc()
130130

131+
var boldRed = color.New(color.FgRed).Add(color.Bold).SprintFunc()
132+
var boldGreen = color.New(color.FgGreen).Add(color.Bold).SprintFunc()
133+
var boldYellow = color.New(color.FgYellow).Add(color.Bold).SprintFunc()
134+
131135
func (nc *nyaaCui) Layout(gui *gocui.Gui) error {
132136
w, h := gui.Size()
133137

@@ -153,8 +157,19 @@ func (nc *nyaaCui) Layout(gui *gocui.Gui) error {
153157
if nc.TitleFilter != nil && !nc.TitleFilter.MatchString(result.Title) {
154158
continue
155159
}
160+
161+
title := result.Title
162+
switch result.Class {
163+
case ns.Default:
164+
title = boldYellow(title)
165+
case ns.Trusted:
166+
title = boldGreen(title)
167+
case ns.Danger:
168+
title = boldRed(title)
169+
}
170+
156171
fmt.Fprintln(v,
157-
result.Title,
172+
title,
158173
red(result.Size),
159174
cyan(result.DateAdded.Format("15:04 02-01-2006")),
160175
green(result.Seeders),
@@ -243,10 +258,10 @@ func (nc *nyaaCui) GetEditor() func(v *gocui.View, key gocui.Key, ch rune, mod g
243258
}
244259

245260
func (nc *nyaaCui) Reload() {
246-
var resultPage nyaa_scraper.NyaaResultPage
261+
var resultPage ns.NyaaResultPage
247262
var searchErr error
248263
f := func() {
249-
resultPage, searchErr = nyaa_scraper.Search(nc.SearchTerm, nc.Category, nc.Filter)
264+
resultPage, searchErr = ns.Search(nc.SearchTerm, nc.Category, nc.Filter)
250265
}
251266
jobDone, err := dialog.StuffLoader(dialog.FitMessage(nc.Gui, "Loading "+nc.SearchTerm), f)
252267
if err != nil {
@@ -306,7 +321,7 @@ func (nc *nyaaCui) LoadNextPage() {
306321
}
307322
nc.LoadedPages++
308323
go func() {
309-
resultPage, _ := nyaa_scraper.SearchSpecificPage(
324+
resultPage, _ := ns.SearchSpecificPage(
310325
nc.SearchTerm,
311326
nc.Category,
312327
nc.Filter,
@@ -330,30 +345,30 @@ func (nc *nyaaCui) LoadNextPage() {
330345
}
331346

332347
func (nc *nyaaCui) ChangeCategory() {
333-
selIdxChan, cleanUp, err := dialog.ListSelect(nc.Gui, "Select category", nyaa_scraper.Categories)
348+
selIdxChan, cleanUp, err := dialog.ListSelect(nc.Gui, "Select category", ns.Categories)
334349
if err != nil {
335350
gocuiReturnError(nc.Gui, err)
336351
}
337352
go func() {
338353
idx, ok := <-selIdxChan
339354
nc.Gui.Update(cleanUp)
340355
if ok {
341-
nc.Category = nyaa_scraper.Categories[idx]
356+
nc.Category = ns.Categories[idx]
342357
nc.Reload()
343358
}
344359
}()
345360
}
346361

347362
func (nc *nyaaCui) ChangeFilter() {
348-
selIdxChan, cleanUp, err := dialog.ListSelect(nc.Gui, "Select filter", nyaa_scraper.Filters)
363+
selIdxChan, cleanUp, err := dialog.ListSelect(nc.Gui, "Select filter", ns.Filters)
349364
if err != nil {
350365
gocuiReturnError(nc.Gui, err)
351366
}
352367
go func() {
353368
idx, ok := <-selIdxChan
354369
nc.Gui.Update(cleanUp)
355370
if ok {
356-
nc.Filter = nyaa_scraper.Filters[idx]
371+
nc.Filter = ns.Filters[idx]
357372
nc.Reload()
358373
}
359374
}()

nyaa_scraper/nyaa.go

Lines changed: 25 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -98,12 +98,12 @@ func GetNyaaCategory(major, minor int) NyaaCategory {
9898

9999
type NyaaFilter struct {
100100
Name string
101-
Val uint8
101+
Val uint8
102102
}
103103

104104
var (
105-
NoFilter = NyaaFilter{"No filter", 0}
106-
NoRemakes = NyaaFilter{"No remakes", 1}
105+
NoFilter = NyaaFilter{"No filter", 0}
106+
NoRemakes = NyaaFilter{"No remakes", 1}
107107
TrustedOnly = NyaaFilter{"Trusted only", 2}
108108
)
109109

@@ -121,8 +121,28 @@ var Filters = []NyaaFilter{
121121
TrustedOnly,
122122
}
123123

124+
type NyaaClass uint8
125+
126+
const (
127+
Default NyaaClass = iota
128+
Trusted
129+
Danger
130+
)
131+
132+
func ParseNyaaClass(str string) NyaaClass {
133+
switch strings.ToLower(str) {
134+
case "success":
135+
return Trusted
136+
case "danger":
137+
return Danger
138+
default:
139+
return Default
140+
}
141+
}
142+
124143
type NyaaEntry struct {
125144
Category NyaaCategory
145+
Class NyaaClass
126146
Title string
127147
TorrentLink string
128148
MagnetLink string
@@ -188,10 +208,11 @@ func SearchSpecificPage(query string, category NyaaCategory, filter NyaaFilter,
188208
return resultPage, nil
189209
}
190210

191-
//TODO parsing green/neutral/red highlighted rows
192211
func parseNyaaEntry(sel *goquery.Selection) *NyaaEntry {
193212
entry := NyaaEntry{}
194213

214+
entry.Class = ParseNyaaClass(sel.AttrOr("class", "default"))
215+
195216
currChild := sel.Children().First()
196217
category := currChild.Find("a").AttrOr("href", "")
197218
major, _ := strconv.Atoi(category[4:5])

0 commit comments

Comments
 (0)