From 3f5211e0b17215cc8120fead150e42cf8bc95ea4 Mon Sep 17 00:00:00 2001 From: Denis Lehmann Date: Mon, 15 Mar 2021 00:35:17 +0100 Subject: [PATCH] change Org Mode indentation --- README.org | 320 ++++++++++++++++++++++++++--------------------------- 1 file changed, 160 insertions(+), 160 deletions(-) diff --git a/README.org b/README.org index 43dcf15..b7a462a 100644 --- a/README.org +++ b/README.org @@ -1,210 +1,210 @@ * tyt - :PROPERTIES: - :header-args: :tangle tyt :shebang "#!/bin/sh" - :END: +:PROPERTIES: +:header-args: :tangle tyt :shebang "#!/bin/sh" +:END: - Terminal YouTube (*tyt*) is a small bash script that lets you play YouTube videos by query from the command line. - It is created via literate programming, you can find the code below. +Terminal YouTube (*tyt*) is a small bash script that lets you play YouTube videos by query from the command line. +It is created via literate programming, you can find the code below. ** Script *** Dependencies - The dependencies of the script are: +The dependencies of the script are: - - [[https://stedolan.github.io/jq/][jq]] - - [[https://mpv.io/][mpv]] - - [[https://ytdl-org.github.io/youtube-dl/][youtube-dl]] +- [[https://stedolan.github.io/jq/][jq]] +- [[https://mpv.io/][mpv]] +- [[https://ytdl-org.github.io/youtube-dl/][youtube-dl]] - Please make sure those are available on your system. - If you are using the [[https://nixos.org/][Nix]] package manager, you can run =nix-shell= in the project directory. - This will drop you into a shell with all requirements fulfilled. +Please make sure those are available on your system. +If you are using the [[https://nixos.org/][Nix]] package manager, you can run =nix-shell= in the project directory. +This will drop you into a shell with all requirements fulfilled. - On the start of the script, it is checked if the dependencies are fulfilled. +On the start of the script, it is checked if the dependencies are fulfilled. - #+begin_src sh - if ! command -v mpv &> /dev/null - then - echo -ne "\e[1mmpv\e[0m was not found, please install it" - exit 1 - elif ! command -v youtube-dl &> /dev/null - then - echo -ne "\e[1myoutube-dl\e[0m was not found, please install it" - exit 1 - fi - #+end_src +#+begin_src sh + if ! command -v mpv &> /dev/null + then + echo -ne "\e[1mmpv\e[0m was not found, please install it" + exit 1 + elif ! command -v youtube-dl &> /dev/null + then + echo -ne "\e[1myoutube-dl\e[0m was not found, please install it" + exit 1 + fi +#+end_src *** Usage - This function prints the usage of the script. +This function prints the usage of the script. - #+begin_src sh - function print_usage { - echo "tyt [ (-a* | --alternative) | (-i | --interactive) ] \"QUERY\"" - } - #+end_src +#+begin_src sh + function print_usage { + echo "tyt [ (-a* | --alternative) | (-i | --interactive) ] \"QUERY\"" + } +#+end_src *** Arguments - At first we parse the arguments. - We have the following flags: +At first we parse the arguments. +We have the following flags: - - =a*|alternative= :: Alternative video (optional); You can parse any amount of alternatives (e.g. =-aaa=) - - =i|interactive= :: Interactive mode; Shows the first 10 results and queries for a selection; If this flag is set, =-a= is ignored +- =a*|alternative= :: Alternative video (optional); You can parse any amount of alternatives (e.g. =-aaa=) +- =i|interactive= :: Interactive mode; Shows the first 10 results and queries for a selection; If this flag is set, =-a= is ignored - Additionally we have exacly one mandatory quoted string as query. +Additionally we have exacly one mandatory quoted string as query. - #+begin_src sh - alternative=0 - format="flac" - interactive=false - help=false +#+begin_src sh + alternative=0 + format="flac" + interactive=false + help=false - for arg in "$@" - do - case $arg in - -a*) - alternative="${arg:1}" - alternative="${#alternative}" - shift - ;; - --alternative) - alternative=1 - shift - ;; - -i|--interactive) - interactive=true - shift - ;; - -h|--help) - help=true - shift - ;; - ,*) - other_arguments+=("$1") - shift - ;; - esac - done + for arg in "$@" + do + case $arg in + -a*) + alternative="${arg:1}" + alternative="${#alternative}" + shift + ;; + --alternative) + alternative=1 + shift + ;; + -i|--interactive) + interactive=true + shift + ;; + -h|--help) + help=true + shift + ;; + ,*) + other_arguments+=("$1") + shift + ;; + esac + done - if [ "$help" = true ] - then - print_usage - exit 0 - fi + if [ "$help" = true ] + then + print_usage + exit 0 + fi - if [ "${#other_arguments[@]}" != "1" ] - then - print_usage - exit 1 - fi + if [ "${#other_arguments[@]}" != "1" ] + then + print_usage + exit 1 + fi - query="${other_arguments[0]}" - #+end_src + query="${other_arguments[0]}" +#+end_src *** Greeter - If the arguments match, print a greeter. +If the arguments match, print a greeter. - #+begin_src sh - echo -ne "\n \e[1m\ /\e[0m\n" - echo -ne " \e[1m=======\e[0m\n" - echo -ne " \e[1m| \e[31mtyt\e[0m \e[1m|\e[0m\n" - echo -ne " \e[1m=======\e[0m\n\n" - #+end_src +#+begin_src sh + echo -ne "\n \e[1m\ /\e[0m\n" + echo -ne " \e[1m=======\e[0m\n" + echo -ne " \e[1m| \e[31mtyt\e[0m \e[1m|\e[0m\n" + echo -ne " \e[1m=======\e[0m\n\n" +#+end_src *** Get URL - To play a video, we need to get a valid URL. - Since there are sometimes parsing errors of the JSON response, we use an endless loop to try until we get a valid response. - The first /n/ URLs are saved if an alternative download is requested. +To play a video, we need to get a valid URL. +Since there are sometimes parsing errors of the JSON response, we use an endless loop to try until we get a valid response. +The first /n/ URLs are saved if an alternative download is requested. - #+begin_src sh - i=0 +#+begin_src sh + i=0 - if [ "$interactive" = true ] - then - n=10 - else - n=$((alternative+1)) - fi + if [ "$interactive" = true ] + then + n=10 + else + n=$((alternative+1)) + fi - echo -ne "Searching for: \e[34m\e[1m$query\e[0m \r" + echo -ne "Searching for: \e[34m\e[1m$query\e[0m \r" - until results=$(youtube-dl --default-search "ytsearch" -j "ytsearch$n:$query") &> /dev/null - do + until results=$(youtube-dl --default-search "ytsearch" -j "ytsearch$n:$query") &> /dev/null + do - case $i in - 0) - appendix=" " - ;; - 1) - appendix=". " - ;; - 2) - appendix=".. " - ;; - ,*) - appendix="..." - ;; - esac + case $i in + 0) + appendix=" " + ;; + 1) + appendix=". " + ;; + 2) + appendix=".. " + ;; + ,*) + appendix="..." + ;; + esac - echo -ne "Searching for: \e[34m\e[1m$query\e[0m $appendix\r" + echo -ne "Searching for: \e[34m\e[1m$query\e[0m $appendix\r" - i=$(((i + 1) % 4)) - sleep 1 + i=$(((i + 1) % 4)) + sleep 1 - done + done - echo -ne "Searching for: \e[34m\e[1m$query\e[0m \n" + echo -ne "Searching for: \e[34m\e[1m$query\e[0m \n" - urls=$(echo $results | jq '.webpage_url' | tr -d '"') - titles=$(echo $results | jq '.fulltitle' | tr -d '"') - uploaders=$(echo $results | jq '.uploader' | tr -d '"') + urls=$(echo $results | jq '.webpage_url' | tr -d '"') + titles=$(echo $results | jq '.fulltitle' | tr -d '"') + uploaders=$(echo $results | jq '.uploader' | tr -d '"') - OLDIFS=$IFS - IFS=$'\n' - urls=($urls) - titles=($titles) - uploaders=($uploaders) - IFS=$OLDIFS - #+end_src + OLDIFS=$IFS + IFS=$'\n' + urls=($urls) + titles=($titles) + uploaders=($uploaders) + IFS=$OLDIFS +#+end_src *** Interactive selection - If the interactive flag is present, show the first ten results and query for a video to play. +If the interactive flag is present, show the first ten results and query for a video to play. - #+begin_src sh - if [ "$interactive" = true ] - then - echo "" - selections=(0 1 2 3 4 5 6 7 8 9) - for i in ${selections[@]} - do - echo -ne " \e[1m$i\e[0m: ${titles[$i]} (\e[33m\e[1m${uploaders[$i]}\e[0m)\n" - done - echo -ne "\nSelection: " - read selection - while [[ ! "${selections[@]}" =~ "${selection}" ]] - do - echo -ne "Not valid, try again: " - read selection - done - echo "" - url=${urls[$selection]} - title=${titles[$selection]} - uploader=${uploaders[$selection]} - else - url=${urls[$alternative]} - title=${titles[$alternative]} - uploader=${uploaders[$alternative]} - fi - #+end_src +#+begin_src sh + if [ "$interactive" = true ] + then + echo "" + selections=(0 1 2 3 4 5 6 7 8 9) + for i in ${selections[@]} + do + echo -ne " \e[1m$i\e[0m: ${titles[$i]} (\e[33m\e[1m${uploaders[$i]}\e[0m)\n" + done + echo -ne "\nSelection: " + read selection + while [[ ! "${selections[@]}" =~ "${selection}" ]] + do + echo -ne "Not valid, try again: " + read selection + done + echo "" + url=${urls[$selection]} + title=${titles[$selection]} + uploader=${uploaders[$selection]} + else + url=${urls[$alternative]} + title=${titles[$alternative]} + uploader=${uploaders[$alternative]} + fi +#+end_src *** Play video - Finally the video is played via mpv. +Finally the video is played via mpv. - #+begin_src sh - echo -ne "Playing: \e[32m\e[1m$title\e[0m (\e[33m\e[1m$uploader\e[0m)\n" - mpv $url &> /dev/null - #+end_src +#+begin_src sh + echo -ne "Playing: \e[32m\e[1m$title\e[0m (\e[33m\e[1m$uploader\e[0m)\n" + mpv $url &> /dev/null +#+end_src