Updated name extraction with Erai-raws change
This commit is contained in:
parent
7beae1b849
commit
6259266f04
423
cli.go
Normal file → Executable file
423
cli.go
Normal file → Executable file
@ -1,211 +1,212 @@
|
|||||||
package main
|
package main
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"bufio"
|
"bufio"
|
||||||
"fmt"
|
"fmt"
|
||||||
"net"
|
"net"
|
||||||
"os"
|
"os"
|
||||||
"strconv"
|
"strconv"
|
||||||
"strings"
|
"strings"
|
||||||
|
|
||||||
e "git.kjao.me/kjao/anitoru/err"
|
e "git.kjao.me/kjao/anitoru/err"
|
||||||
)
|
)
|
||||||
|
|
||||||
type SubscriptionManager struct {
|
type SubscriptionManager struct {
|
||||||
Subscriptions []string
|
Subscriptions []string
|
||||||
}
|
}
|
||||||
|
|
||||||
func NewSubscriptionManager() *SubscriptionManager {
|
func NewSubscriptionManager() *SubscriptionManager {
|
||||||
var m SubscriptionManager
|
var m SubscriptionManager
|
||||||
m.Get()
|
m.Get()
|
||||||
return &m
|
return &m
|
||||||
}
|
}
|
||||||
|
|
||||||
func (m *SubscriptionManager) UpdateSubs(conn net.Conn) {
|
func (m *SubscriptionManager) UpdateSubs(conn net.Conn) {
|
||||||
rawData, err := ReadData(conn)
|
rawData, err := ReadData(conn)
|
||||||
e.ExitIf(err, "Unable to read from socket.")
|
e.ExitIf(err, "Unable to read from socket.")
|
||||||
m.Subscriptions = strings.Split(string(rawData), "\n")
|
m.Subscriptions = strings.Split(string(rawData), "\n")
|
||||||
if m.Subscriptions[0] == "" {
|
if m.Subscriptions[0] == "" {
|
||||||
m.Subscriptions = []string{}
|
m.Subscriptions = []string{}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func (m *SubscriptionManager) Get() {
|
func (m *SubscriptionManager) Get() {
|
||||||
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?")
|
||||||
|
|
||||||
err = SendData(conn, []byte{'V'})
|
err = SendData(conn, []byte{'V'})
|
||||||
e.ExitIf(err, "Unable to write to socket.")
|
e.ExitIf(err, "Unable to write to socket.")
|
||||||
m.UpdateSubs(conn)
|
m.UpdateSubs(conn)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (m *SubscriptionManager) View() {
|
func (m *SubscriptionManager) View() {
|
||||||
fmt.Println()
|
fmt.Println()
|
||||||
fmt.Println("Current subscriptions:")
|
fmt.Println("Current subscriptions:")
|
||||||
for i, sub := range m.Subscriptions {
|
for i, sub := range m.Subscriptions {
|
||||||
fmt.Println(fmt.Sprintf("\t[%02d] %v", i+1, sub))
|
fmt.Println(fmt.Sprintf("\t[%02d] %v", i+1, sub))
|
||||||
}
|
}
|
||||||
if len(m.Subscriptions) == 0 {
|
if len(m.Subscriptions) == 0 {
|
||||||
fmt.Println("\t...Empty\n")
|
fmt.Println("\t...Empty\n")
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
fmt.Println()
|
fmt.Println()
|
||||||
}
|
}
|
||||||
|
|
||||||
func (m *SubscriptionManager) Add() {
|
func (m *SubscriptionManager) Add() {
|
||||||
fmt.Println()
|
fmt.Println()
|
||||||
|
|
||||||
// Get available subscriptions.
|
// Get available subscriptions.
|
||||||
fmt.Println("Available subscriptions:")
|
fmt.Println("Available subscriptions:")
|
||||||
titles, err := GetReleaseSchedule()
|
titles, err := GetReleaseSchedule()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
fmt.Println("Unable to get release schedule.")
|
fmt.Println("Unable to get release schedule.")
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
subMap := GetSubMap(&m.Subscriptions)
|
subMap := GetSubMap(&m.Subscriptions)
|
||||||
|
|
||||||
var available []string
|
var available []string
|
||||||
i := 0
|
i := 0
|
||||||
for _, title := range titles {
|
for _, title := range titles {
|
||||||
_, exists := subMap[title]
|
title = strings.Split(title, " | ")[0]
|
||||||
if !exists {
|
_, exists := subMap[title]
|
||||||
i++
|
if !exists {
|
||||||
available = append(available, title)
|
i++
|
||||||
fmt.Println(fmt.Sprintf("\t[%02d] %v", i, title))
|
available = append(available, title)
|
||||||
}
|
fmt.Println(fmt.Sprintf("\t[%02d] %v", i, title))
|
||||||
}
|
}
|
||||||
fmt.Println()
|
}
|
||||||
|
fmt.Println()
|
||||||
// Get comma-separated list of additions.
|
|
||||||
newSubs := []string{}
|
// Get comma-separated list of additions.
|
||||||
var add string
|
newSubs := []string{}
|
||||||
var name string
|
var add string
|
||||||
for {
|
var name string
|
||||||
fmt.Print("Add subscriptions. (M for manual): ")
|
for {
|
||||||
fmt.Scan(&add)
|
fmt.Print("Add subscriptions. (M for manual): ")
|
||||||
add = strings.ToLower(add)
|
fmt.Scan(&add)
|
||||||
if add == "m" {
|
add = strings.ToLower(add)
|
||||||
var err error
|
if add == "m" {
|
||||||
fmt.Print("Name: ")
|
var err error
|
||||||
in := bufio.NewReader(os.Stdin)
|
fmt.Print("Name: ")
|
||||||
name, err = in.ReadString('\n')
|
in := bufio.NewReader(os.Stdin)
|
||||||
name = name[:len(name)-1]
|
name, err = in.ReadString('\n')
|
||||||
e.Panic(err)
|
name = name[:len(name)-1]
|
||||||
newSubs = append(newSubs, name)
|
e.Panic(err)
|
||||||
} else {
|
newSubs = append(newSubs, name)
|
||||||
addSplit := strings.Split(add, ",")
|
} else {
|
||||||
retry := false
|
addSplit := strings.Split(add, ",")
|
||||||
for _, indexString := range addSplit {
|
retry := false
|
||||||
index, err := strconv.Atoi(indexString)
|
for _, indexString := range addSplit {
|
||||||
if err != nil {
|
index, err := strconv.Atoi(indexString)
|
||||||
fmt.Println("Error in indices. Try again.")
|
if err != nil {
|
||||||
retry = true
|
fmt.Println("Error in indices. Try again.")
|
||||||
break
|
retry = true
|
||||||
}
|
break
|
||||||
if index <= 0 || index > len(available) {
|
}
|
||||||
fmt.Fprintln(os.Stdout, "Error in indices. %v is invalid. Try again", index)
|
if index <= 0 || index > len(available) {
|
||||||
retry = true
|
fmt.Fprintln(os.Stdout, "Error in indices. %v is invalid. Try again", index)
|
||||||
break
|
retry = true
|
||||||
}
|
break
|
||||||
|
}
|
||||||
newSubs = append(newSubs, available[index-1])
|
|
||||||
}
|
newSubs = append(newSubs, available[index-1])
|
||||||
if retry {
|
}
|
||||||
continue
|
if retry {
|
||||||
}
|
continue
|
||||||
}
|
}
|
||||||
break
|
}
|
||||||
}
|
break
|
||||||
|
}
|
||||||
var hevc string
|
|
||||||
fmt.Print("Only HEVC? (Y/n): ")
|
var hevc string
|
||||||
fmt.Scan(&hevc)
|
fmt.Print("Only HEVC? (Y/n): ")
|
||||||
hevc = strings.ToLower(hevc)
|
fmt.Scan(&hevc)
|
||||||
var data []byte
|
hevc = strings.ToLower(hevc)
|
||||||
if hevc == "n" {
|
var data []byte
|
||||||
data = []byte{'A', '0'}
|
if hevc == "n" {
|
||||||
} else {
|
data = []byte{'A', '0'}
|
||||||
data = []byte{'A', '1'}
|
} else {
|
||||||
}
|
data = []byte{'A', '1'}
|
||||||
|
}
|
||||||
// Send addition update to socket
|
|
||||||
data = append(data, []byte(strings.Join(newSubs, "\n"))...)
|
// Send addition update to socket
|
||||||
conn, err := net.Dial("unix", SocketPath)
|
data = append(data, []byte(strings.Join(newSubs, "\n"))...)
|
||||||
e.ExitIf(err, "Unable to open socket. Is the daemon running?")
|
conn, err := net.Dial("unix", SocketPath)
|
||||||
|
e.ExitIf(err, "Unable to open socket. Is the daemon running?")
|
||||||
err = SendData(conn, data)
|
|
||||||
e.ExitIf(err, "Unable to write to socket. Is the daemon running?")
|
err = SendData(conn, data)
|
||||||
m.UpdateSubs(conn)
|
e.ExitIf(err, "Unable to write to socket. Is the daemon running?")
|
||||||
}
|
m.UpdateSubs(conn)
|
||||||
|
}
|
||||||
func (m *SubscriptionManager) Remove() {
|
|
||||||
fmt.Println()
|
func (m *SubscriptionManager) Remove() {
|
||||||
m.View()
|
fmt.Println()
|
||||||
fmt.Println()
|
m.View()
|
||||||
|
fmt.Println()
|
||||||
subMap := GetSubMap(&m.Subscriptions)
|
|
||||||
|
subMap := GetSubMap(&m.Subscriptions)
|
||||||
// Get comma-separated list of removals.
|
|
||||||
var remove string
|
// Get comma-separated list of removals.
|
||||||
removeSubs := []string{}
|
var remove string
|
||||||
for {
|
removeSubs := []string{}
|
||||||
fmt.Print("Remove subscriptions: ")
|
for {
|
||||||
fmt.Scan(&remove)
|
fmt.Print("Remove subscriptions: ")
|
||||||
addSplit := strings.Split(remove, ",")
|
fmt.Scan(&remove)
|
||||||
skip := false
|
addSplit := strings.Split(remove, ",")
|
||||||
for _, indexString := range addSplit {
|
skip := false
|
||||||
index, err := strconv.Atoi(indexString)
|
for _, indexString := range addSplit {
|
||||||
if err != nil {
|
index, err := strconv.Atoi(indexString)
|
||||||
fmt.Println("Error in indices. Try again.")
|
if err != nil {
|
||||||
skip = true
|
fmt.Println("Error in indices. Try again.")
|
||||||
break
|
skip = true
|
||||||
}
|
break
|
||||||
if index <= 0 || index > len(m.Subscriptions) {
|
}
|
||||||
fmt.Fprintln(os.Stdout, "Error in indices. %v is invalid. Try again", index)
|
if index <= 0 || index > len(m.Subscriptions) {
|
||||||
skip = true
|
fmt.Fprintln(os.Stdout, "Error in indices. %v is invalid. Try again", index)
|
||||||
break
|
skip = true
|
||||||
}
|
break
|
||||||
removeSubs = append(removeSubs, (m.Subscriptions)[index-1])
|
}
|
||||||
delete(subMap, (m.Subscriptions)[index-1])
|
removeSubs = append(removeSubs, (m.Subscriptions)[index-1])
|
||||||
}
|
delete(subMap, (m.Subscriptions)[index-1])
|
||||||
if skip {
|
}
|
||||||
continue
|
if skip {
|
||||||
}
|
continue
|
||||||
break
|
}
|
||||||
}
|
break
|
||||||
|
}
|
||||||
// Send removal update to socket
|
|
||||||
data := []byte{'R'}
|
// Send removal update to socket
|
||||||
data = append(data, []byte(strings.Join(removeSubs, "\n"))...)
|
data := []byte{'R'}
|
||||||
conn, err := net.Dial("unix", SocketPath)
|
data = append(data, []byte(strings.Join(removeSubs, "\n"))...)
|
||||||
e.ExitIf(err, "Unable to open socket. Is the daemon running?")
|
conn, err := net.Dial("unix", SocketPath)
|
||||||
|
e.ExitIf(err, "Unable to open socket. Is the daemon running?")
|
||||||
err = SendData(conn, data)
|
|
||||||
e.ExitIf(err, "Unable to write to socket. Is the daemon running?")
|
err = SendData(conn, data)
|
||||||
m.UpdateSubs(conn)
|
e.ExitIf(err, "Unable to write to socket. Is the daemon running?")
|
||||||
m.View()
|
m.UpdateSubs(conn)
|
||||||
}
|
m.View()
|
||||||
|
}
|
||||||
func userCLI() {
|
|
||||||
manager := NewSubscriptionManager()
|
func userCLI() {
|
||||||
|
manager := NewSubscriptionManager()
|
||||||
var action string
|
|
||||||
for {
|
var action string
|
||||||
fmt.Print("View, Add, Remove subscriptions or Quit: ")
|
for {
|
||||||
fmt.Scan(&action)
|
fmt.Print("View, Add, Remove subscriptions or Quit: ")
|
||||||
action = strings.ToLower(action)
|
fmt.Scan(&action)
|
||||||
switch action {
|
action = strings.ToLower(action)
|
||||||
case "v":
|
switch action {
|
||||||
manager.View()
|
case "v":
|
||||||
case "a":
|
manager.View()
|
||||||
manager.Add()
|
case "a":
|
||||||
case "r":
|
manager.Add()
|
||||||
manager.Remove()
|
case "r":
|
||||||
case "q":
|
manager.Remove()
|
||||||
os.Exit(1)
|
case "q":
|
||||||
default:
|
os.Exit(1)
|
||||||
fmt.Println("Invalid command, try again.")
|
default:
|
||||||
}
|
fmt.Println("Invalid command, try again.")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user