aboutsummaryrefslogtreecommitdiff
path: root/metube.go
diff options
context:
space:
mode:
authorJulian Hurst <julian.hurst92@gmail.com>2021-01-10 16:29:56 +0100
committerJulian Hurst <julian.hurst92@gmail.com>2021-01-10 16:29:56 +0100
commitfb1bac137a395686369904a1da341351d88b071b (patch)
treec1f746fc717a70dd1662704def6b17fd6604732b /metube.go
downloadmetube-fb1bac137a395686369904a1da341351d88b071b.tar.gz
Initial commit
Diffstat (limited to 'metube.go')
-rw-r--r--metube.go40
1 files changed, 40 insertions, 0 deletions
diff --git a/metube.go b/metube.go
new file mode 100644
index 0000000..ca270bc
--- /dev/null
+++ b/metube.go
@@ -0,0 +1,40 @@
+package main
+
+import (
+ "flag"
+ "strings"
+ "bufio"
+ "os"
+
+ "git.sr.ht/~ark/ytparser"
+)
+
+const defaultFormat string = "channel: {{.ChannelTitle}}, title: {{.Title}}, url: {{.Url}}"
+
+func readStdin() string {
+ var b strings.Builder
+ scanner := bufio.NewScanner(os.Stdin)
+ for scanner.Scan() {
+ b.WriteString(scanner.Text())
+ }
+ if err := scanner.Err(); err != nil {
+ panic(err)
+ }
+ return b.String()
+}
+
+func main() {
+ format := flag.String("f", defaultFormat, "The format to print items in. Follows go template syntax. See metube(5) for more info.")
+ page := flag.Int("p", 0, "The page to get")
+ lang := flag.String("l", "en", "The language to search in (follows youtube's language codes: en, fr, de, jp...)")
+ order := flag.String("o", "relevance", "The criterion to use for the search order (relevance, date, views, rating)")
+ flag.Parse()
+ if *format == "-" {
+ *format = readStdin()
+ }
+ items, err := ytparser.Search(strings.Join(flag.Args(), " "), *page, *lang, *order)
+ if err != nil {
+ panic(err)
+ }
+ ytparser.PrintItems(items, *format)
+}