Fixes in CLI and added onloyHEVC option

This commit is contained in:
Kenneth Jao 2024-08-09 16:59:54 -04:00
parent 3306a9f1ab
commit 41cff42d3a
2 changed files with 36 additions and 10 deletions

22
cli.go
View File

@ -1,6 +1,7 @@
package main package main
import ( import (
"bufio"
"fmt" "fmt"
"net" "net"
"os" "os"
@ -85,8 +86,12 @@ func (m *SubscriptionManager) Add() {
fmt.Scan(&add) fmt.Scan(&add)
add = strings.ToLower(add) add = strings.ToLower(add)
if add == "m" { if add == "m" {
var err error
fmt.Print("Name: ") fmt.Print("Name: ")
fmt.Scan(&name) in := bufio.NewReader(os.Stdin)
name, err = in.ReadString('\n')
name = name[:len(name)-1]
e.Panic(err)
newSubs = append(newSubs, name) newSubs = append(newSubs, name)
} else { } else {
addSplit := strings.Split(add, ",") addSplit := strings.Split(add, ",")
@ -113,8 +118,18 @@ func (m *SubscriptionManager) Add() {
break break
} }
var hevc string
fmt.Print("Only HEVC? (Y/n): ")
fmt.Scan(&hevc)
hevc = strings.ToLower(hevc)
var data []byte
if hevc == "n" {
data = []byte{'A', '0'}
} else {
data = []byte{'A', '1'}
}
// Send addition update to socket // Send addition update to socket
data := []byte{'A'}
data = append(data, []byte(strings.Join(newSubs, "\n"))...) data = append(data, []byte(strings.Join(newSubs, "\n"))...)
conn, err := net.Dial("unix", SocketPath) conn, err := net.Dial("unix", SocketPath)
e.ExitIf(err, "Unable to open socket. Is the daemon running?") e.ExitIf(err, "Unable to open socket. Is the daemon running?")
@ -183,13 +198,10 @@ func userCLI() {
switch action { switch action {
case "v": case "v":
manager.View() manager.View()
break
case "a": case "a":
manager.Add() manager.Add()
break
case "r": case "r":
manager.Remove() manager.Remove()
break
case "q": case "q":
os.Exit(1) os.Exit(1)
default: default:

24
main.go
View File

@ -179,7 +179,7 @@ func GetRSS(rssURL string) ([]Anime, error) {
}).End() }).End()
} }
func GetAllAvailable(name string) ([]Anime, error) { func GetAllAvailable(name string, onlyHEVC bool) ([]Anime, error) {
var animes []Anime var animes []Anime
var res *http.Response var res *http.Response
var doc *goquery.Document var doc *goquery.Document
@ -188,7 +188,12 @@ func GetAllAvailable(name string) ([]Anime, error) {
return animes, e.If(err).ThenIf(func() error { return animes, e.If(err).ThenIf(func() error {
q := req.URL.Query() q := req.URL.Query()
query := "[Erai-raws] " + name + " [HEVC]" var query string
if onlyHEVC {
query = "[Erai-raws] " + name + " [HEVC]"
} else {
query = "[Erai-raws] " + name + " [1080p]"
}
query = strings.Replace(query, ":", " ", -1) query = strings.Replace(query, ":", " ", -1)
query = strings.Replace(query, ".", " ", -1) query = strings.Replace(query, ".", " ", -1)
q.Add("q", query) q.Add("q", query)
@ -209,9 +214,15 @@ func GetAllAvailable(name string) ([]Anime, error) {
cols = cols.Next() // Filename cols = cols.Next() // Filename
title := cols.Text() title := cols.Text()
if !strings.Contains(title, "[HEVC]") || !strings.Contains(title, "[ENG]") { if !strings.Contains(title, "[ENG]") {
return return
} }
isHEVC := strings.Contains(title, "[HEVC]")
if onlyHEVC && !isHEVC {
return
}
title = strings.Split(title, "[Erai-raws] ")[1] title = strings.Split(title, "[Erai-raws] ")[1]
if strings.Contains(title, "(AAC 2.0)") { if strings.Contains(title, "(AAC 2.0)") {
title = strings.Split(title, " (AAC 2.0)")[0] title = strings.Split(title, " (AAC 2.0)")[0]
@ -380,11 +391,14 @@ func (d *Daemon) ReadSocket(conn net.Conn) {
command := rawData[0] command := rawData[0]
data := string(rawData[1:len(rawData)]) data := string(rawData[1:len(rawData)])
e.Log("Socket Command: " + string(command)) e.Log("Socket Command: " + string(command))
newSubs := strings.Split(data, "\n")
var write bool var write bool
switch command { switch command {
case 'A': case 'A':
onlyHEVC, _ := strconv.ParseBool(string(data[0]))
data = data[1:]
newSubs := strings.Split(data, "\n")
// Add each subscription // Add each subscription
for _, sub := range newSubs { for _, sub := range newSubs {
var s struct{} var s struct{}
@ -394,7 +408,7 @@ func (d *Daemon) ReadSocket(conn net.Conn) {
for _, sub := range newSubs { for _, sub := range newSubs {
// For each new subscription, get all available animes. // For each new subscription, get all available animes.
animes, err := GetAllAvailable(sub) animes, err := GetAllAvailable(sub, onlyHEVC)
if e.LogIf(err, d.LogOptions...) { if e.LogIf(err, d.LogOptions...) {
continue continue
} }