Skip to content

Commit 2deca15

Browse files
authored
Merge branch 'main' into feature/setup-versioning
2 parents 972c71c + 52389ac commit 2deca15

File tree

6 files changed

+43
-171
lines changed

6 files changed

+43
-171
lines changed

README.md

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -42,8 +42,6 @@ Flags:
4242
- -h, --help help for search
4343
- -n, --number of results int number of result(s) to be displayed maximum: 25 (default 10)
4444
- -o, --output string Output directory (default "./")
45-
- -s, --site string which website to use [legacy, new] (default "legacy")
46-
4745

4846

4947
### Found an issue?

cmd/search.go

Lines changed: 8 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -27,10 +27,9 @@ func getExtension(s string) string {
2727
}
2828

2929
var (
30-
selectedSite string
31-
selectedFilter string
30+
selectedFilter string
3231
outputDirectory string
33-
numberOfResults = 10
32+
numberOfResults int
3433

3534
searchCmd = &cobra.Command{
3635
Use: "search",
@@ -43,23 +42,18 @@ var (
4342
return
4443
}
4544

46-
var m mirror.Mirror
45+
m := mirror.NewLegacyMirror(libgen.IS)
4746

48-
if selectedSite == "legacy" {
49-
m = mirror.NewLegacyMirror(libgen.IS)
50-
} else if selectedSite == "new" {
51-
m = mirror.NewCurrentMirror(libgen.LC)
52-
} else {
53-
// TODO: Improve this.
54-
fmt.Print("Not an option")
55-
return
56-
}
47+
// Set Defaults
48+
m.SetNumberOfResults(numberOfResults)
5749

5850
var books []book.Book
5951

6052
switch selectedFilter {
6153
case libgen.AUTHOR:
6254
books, _ = m.SearchByAuthor(args[0])
55+
case libgen.ISBN:
56+
books, _ = m.SearchByTitle(args[0])
6357
default:
6458
books, _ = m.SearchByTitle(args[0])
6559
}
@@ -80,6 +74,7 @@ var (
8074
prompt := promptui.Select{
8175
Label: "Select Title",
8276
Items: titles,
77+
Size: 10,
8378
}
8479

8580
resultInt, _, err := prompt.Run()
@@ -95,10 +90,6 @@ var (
9590
)
9691

9792
func init() {
98-
searchCmd.
99-
PersistentFlags().
100-
StringVarP(&selectedSite, "site", "s", "legacy", `which website to use [legacy, new]`)
101-
10293
searchCmd.
10394
PersistentFlags().
10495
StringVarP(&selectedFilter, "filter", "f", "title", `search by [title, author, isbn]`)

internal/libgen/libgen.go

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -6,12 +6,6 @@ const (
66
RS = "rs"
77
IS = "is"
88
ST = "st"
9-
10-
LI = "li"
11-
LC = "lc"
12-
GS = "gs"
13-
TOP = "top"
14-
CLICK = "click"
159
)
1610

1711
type Filter string

internal/mirror/current_mirror.go

Lines changed: 0 additions & 133 deletions
This file was deleted.

internal/mirror/legacy_mirror.go

Lines changed: 34 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -17,26 +17,27 @@ import (
1717

1818
type LegacyMirror struct {
1919
domain libgen.Domain
20-
filter libgen.Filter
2120
config Configuration
2221
}
2322

2423
func NewLegacyMirror(domain libgen.Domain) *LegacyMirror {
2524
return &LegacyMirror{
2625
domain: domain,
2726
// TODO: Make this configurable
28-
filter: libgen.TITLE,
2927
config: Configuration{
30-
numberOfResults: 5,
28+
numberOfResults: 10,
3129
},
3230
}
3331
}
3432

33+
func (m *LegacyMirror) SetNumberOfResults(numberOfResults int) {
34+
m.config.numberOfResults = numberOfResults
35+
}
36+
3537
func (m *LegacyMirror) SearchByTitle(query string) ([]book.Book, error) {
3638
fmt.Println("Searching for: ", console.Higlight(query))
3739
var document *goquery.Document
38-
39-
document, err := m.searchSite(query)
40+
document, err := m.searchSite(query, libgen.TITLE)
4041

4142
if err != nil || document == nil {
4243
fmt.Println(console.Error("Error searching for book: %s", query))
@@ -57,11 +58,34 @@ func (m *LegacyMirror) SearchByTitle(query string) ([]book.Book, error) {
5758
return bookResults, err
5859
}
5960

61+
func (m *LegacyMirror) SearchByISBN(isbn string) ([]book.Book, error) {
62+
fmt.Println("Searching using ISBN: ", console.Higlight(isbn))
63+
var document *goquery.Document
64+
document, err := m.searchSite(isbn, libgen.ISBN)
65+
66+
if err != nil || document == nil {
67+
fmt.Println(console.Error("Error searching for book: %s", isbn))
68+
// TODO: Implement retrying
69+
// fmt.Println(infoColor("Retrying with other site"))
70+
// document, e = searchLibgen(query, siteToUse) // If this also fails then we have a problem
71+
return nil, errors.New("Error searching for book")
72+
}
73+
fmt.Println(console.Success("Search complete, parsing the document..."))
74+
75+
bookResults :=
76+
documentparser.NewLegacyDocumentParser(document).GetBookDataFromDocument()
77+
78+
if len(bookResults) >= m.config.numberOfResults {
79+
bookResults = bookResults[:m.config.numberOfResults]
80+
}
81+
82+
return bookResults, err
83+
}
84+
85+
6086
func (m *LegacyMirror) SearchByAuthor(query string) ([]book.Book, error) {
6187
fmt.Println("Searching by author: ", console.Higlight(query))
62-
63-
m.filter = libgen.AUTHOR
64-
document, err := m.searchSite(query)
88+
document, err := m.searchSite(query, libgen.AUTHOR)
6589

6690
if err != nil || document == nil {
6791
fmt.Println(console.Error("Error searching for book: %s", query))
@@ -80,15 +104,14 @@ func (m *LegacyMirror) SearchByAuthor(query string) ([]book.Book, error) {
80104

81105
// Search the libgen site returns the document
82106
// of the search results page
83-
func (m *LegacyMirror) searchSite(query string) (*goquery.Document, error) {
84-
107+
func (m *LegacyMirror) searchSite(query string, filter libgen.Filter) (*goquery.Document, error) {
85108
baseUrl := fmt.Sprintf("https://libgen.%s/search.php", m.domain)
86109

87110
queryString := fmt.Sprintf(
88111
"%s?req=%s&res=25&view=simple&phrase=1&column=%s",
89112
baseUrl,
90113
url.QueryEscape(query),
91-
m.filter,
114+
filter,
92115
)
93116

94117
fmt.Println(console.Info(queryString))

internal/mirror/mirror.go

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,7 @@ import (
88
type Mirror interface {
99
SearchByTitle(query string) ([]book.Book, error)
1010
SearchByAuthor(author string) ([]book.Book, error)
11-
// SearchByISBN(isbn string) []book.Book
12-
// 1GetDownloadLink(book book.Book) string
11+
SearchByISBN(isbn string) ([]book.Book, error)
1312
DownloadSelection(book book.Book, outputDirectory string)
1413
}
1514

0 commit comments

Comments
 (0)