@@ -37,26 +37,35 @@ get_youtube()
3737{
3838 if [[ $1 -eq 0 ]]; then
3939 NUM_SELECTED=$( fzf --style full --header " Select the desired $3 " --bind " start,ctrl-r:reload:echo \" Return\" ; i=0; while [[ \"\$ i\" != \" -1\" ]]; do feed=\$ (yt-dlp -i -q --flat-playlist \" $BASE $2 /$3 \" --playlist-start \$ ((\$ i*100+1)) --playlist-end \$ ((\$ i*100+100)) --print \" %(playlist_index)d: %(title)s\" ); i=\$ ((\$ i+1)); [[ \"\$ feed\" != \"\" ]] && echo \$ feed; [[ \"\$ (echo \$ feed | wc -l)\" -lt \" 100\" ]] && i=-1; done" | awk -F: ' {print $1}' )
40- if [[ $NUM_SELECTED == " Return" ]]; then
41- echo " Return"
42- else
43- yt-dlp -q --ignore-errors --no-warnings --flat-playlist " $BASE $2 /$3 " --print url --playlist-items " $NUM_SELECTED " 2> /dev/null
44- fi
40+ case " $NUM_SELECTED " in
41+ " Return" |" " )
42+ echo " Return"
43+ ;;
44+ * )
45+ yt-dlp -q --ignore-errors --no-warnings --flat-playlist " $BASE $2 /$3 " --print url --playlist-items " $NUM_SELECTED " 2> /dev/null
46+ ;;
47+ esac
4548 else
4649 NUM_SELECTED=$( ( echo " Return" ; echo " See all" ; echo " Music mode all" ; echo " Download all" ; echo " Save list" ; yt-dlp -q --ignore-errors --no-warnings --flat-playlist " $2 " --print " %(playlist_index)d: %(title)s" 2> /dev/null ) | fzf --style full --header " Select the desired videos" | awk -F: ' {print $1}' )
47- if [ " $NUM_SELECTED " = ' Return' ] || [ " $NUM_SELECTED " = " See all" ] || [ " $NUM_SELECTED " = " Music mode all" ] || [ " $NUM_SELECTED " = " Download all" ] || [ " $NUM_SELECTED " = " Save list" ]; then
48- echo " $NUM_SELECTED "
49- else
50- yt-dlp -q --ignore-errors --no-warnings --flat-playlist " $2 " --print url --playlist-items " $NUM_SELECTED " 2> /dev/null
51- fi
50+ case " $NUM_SELECTED " in
51+ " See all" |" Music mode all" |" Download all" |" Save list" )
52+ echo " $NUM_SELECTED "
53+ ;;
54+ " Return" |" " )
55+ echo " Return"
56+ ;;
57+ * )
58+ yt-dlp -q --ignore-errors --no-warnings --flat-playlist " $2 " --print url --playlist-items " $NUM_SELECTED " 2> /dev/null
59+ ;;
60+ esac
5261 fi
5362}
5463
5564# Create a menu to know what type of content you want from a channel.
5665# Returns the content you want to see {videos, playlists, ...}.
5766type_media_search_menu ()
5867{
59- echo -en " Return\n videos\n playlists\n streams\n shorts" | fzf --style full --header ' What content do you want?' | awk ' {print $2}'
68+ echo -en " Return\n videos\n playlists\n streams\n shorts" | fzf --style full --header ' What content do you want?' | awk ' {print $2}'
6069}
6170
6271# Perform all necessary actions to obtain the video playlist ... from a subscribed channel.
@@ -66,37 +75,41 @@ subscribed_menu()
6675 [[ -f $PATH_SUBSCRIBED_CHANNELS ]] || touch $PATH_SUBSCRIBED_CHANNELS
6776 SUBSCRIBED_CHANNEL_SELECTED=-1
6877 SUBSCRIBED_CHANNELS=$SUBSCRIBED_CHANNELS $( echo " Return" ; cat $PATH_SUBSCRIBED_CHANNELS )
69- while [[ " $SUBSCRIBED_CHANNEL_SELECTED " != " Return" ]] ; do
78+ while ! { [ " $SUBSCRIBED_CHANNEL_SELECTED " == " Return" ] || [ " $SUBSCRIBED_CHANNEL_SELECTED " == " " ] ; } ; do
7079 SUBSCRIBED_CHANNEL_SELECTED=$( menu " $SUBSCRIBED_CHANNELS " " --header \" Select channel to see or add them in path=$PATH_SUBSCRIBED_CHANNELS \" " 1)
71- if [[ " $SUBSCRIBED_CHANNEL_SELECTED " != " Return" ]] ; then
80+ if ! { [ " $SUBSCRIBED_CHANNEL_SELECTED " == " Return" ] || [ " $SUBSCRIBED_CHANNEL_SELECTED " == " " ] ; } ; then
7281 TYPE_MEDIA_SEARCH_SELECTED=-1
7382 while [[ $TYPE_MEDIA_SEARCH_SELECTED != " Return" ]]; do
7483 TYPE_MEDIA_SEARCH_SELECTED=$( type_media_search_menu)
75- # INFO: Playlist search mode.
76- if [[ " $TYPE_MEDIA_SEARCH_SELECTED " == playlists ]]; then
77- local URL_PLAYLIST=-1
78- while [[ " $URL_PLAYLIST " != " Return" ]]; do
79- URL_PLAYLIST=$( shift; get_youtube 0 " $SUBSCRIBED_CHANNEL_SELECTED " " $TYPE_MEDIA_SEARCH_SELECTED " )
80- if [[ " $URL_PLAYLIST " != " Return" ]]; then
81- local URL=-1
82- while [[ " $URL " != " Return" ]]; do
83- URL=$( get_youtube 1 " $URL_PLAYLIST " )
84- if [[ " $URL " != " Return" ]]; then
85- shift ; open_video " $URL "
86- fi
87- done
88- fi
89- done
90- # INFO: Direct video, short, stream search mode.
91- elif [[ $TYPE_MEDIA_SEARCH_SELECTED != " Return" ]]; then
92- local URL=-1
93- while [[ " $URL " != " Return" ]]; do
94- URL=$( shift; get_youtube 0 " $SUBSCRIBED_CHANNEL_SELECTED " " $TYPE_MEDIA_SEARCH_SELECTED " )
95- if [[ " $URL " != " Return" ]]; then
96- shift ; open_video " $URL "
97- fi
98- done
99- fi
84+ case " $TYPE_MEDIA_SEARCH_SELECTED " in
85+ " Return" |" " )
86+ TYPE_MEDIA_SEARCH_SELECTED=" Return"
87+ ;;
88+ " playlists" )
89+ local URL_PLAYLIST=-1
90+ while [[ " $URL_PLAYLIST " != " Return" ]]; do
91+ URL_PLAYLIST=$( shift; get_youtube 0 " $SUBSCRIBED_CHANNEL_SELECTED " " $TYPE_MEDIA_SEARCH_SELECTED " )
92+ if [[ " $URL_PLAYLIST " != " Return" ]]; then
93+ local URL=-1
94+ while [[ " $URL " != " Return" ]]; do
95+ URL=$( get_youtube 1 " $URL_PLAYLIST " )
96+ if [[ " $URL " != " Return" ]]; then
97+ shift ; open_video " $URL "
98+ fi
99+ done
100+ fi
101+ done
102+ ;;
103+ * )
104+ local URL=-1
105+ while [[ " $URL " != " Return" ]]; do
106+ URL=$( shift; get_youtube 0 " $SUBSCRIBED_CHANNEL_SELECTED " " $TYPE_MEDIA_SEARCH_SELECTED " )
107+ if [[ " $URL " != " Return" ]]; then
108+ shift ; open_video " $URL "
109+ fi
110+ done
111+ ;;
112+ esac
100113 done
101114 fi
102115 done
@@ -110,7 +123,7 @@ main_menu()
110123}
111124
112125# Run the script until it stops.
113- while [[ " $MAIN_MENU " -ne " 4" ]] ; do
126+ while ! { [ " $MAIN_MENU " == " 4" ] || [ " $MAIN_MENU " == " " ] ; } ; do
114127 MAIN_MENU=$( main_menu)
115128 case " $MAIN_MENU " in
116129 1) shift ; subscribed_menu
0 commit comments