blob: 808ecb4816424f17c9e9ca957b6f11b8a2ee5224 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
|
#!/sbin/sh
# check flags
for i in $@; do
case "$i" in
"-"*) unset GETARTIST GETALBUM GETTITLE
esac
[ -n "$GETURL" ] && URL="$i" && unset GETURL
[ -n "$GETARTIST" ] && ARTIST="$ARTIST $i"
[ -n "$GETALBUM" ] && ALBUM="$ALBUM $i"
[ -n "$GETTITLE" ] && TITLE="$TITLE $i"
[ -n "$GETTRACKNUM" ] && TRACKNUM="$i" && unset GETTRACKNUM
[ -n "$GETYEAR" ] && YEAR="$i" && unset GETYEAR
case "$i" in
"-s")
SPLITTER_SELECTION="s"
;;
"-l")
SPLITTER_SELECTION="a"
;;
"-p")
SPLITTER_SELECTION="p"
;;
"-u")
GETURL="y"
;;
"-a")
GETARTIST="y"
;;
"-A")
GETALBUM="y"
;;
"-t")
GETTITLE="y"
;;
"-T")
GETTRACKNUM="y"
;;
"-y")
GETYEAR="y"
;;
esac
done
ARTIST=`echo $ARTIST | sed 's/^ //'`
ALBUM=`echo $ALBUM | sed 's/^ //'`
TITLE=`echo $TITLE | sed 's/^ //'`
printf "Received Tags:
Artist: $ARTIST
Album: $ALBUM
Song: $TITLE
Number: $TRACKNUM
Year: $YEAR\n\n"
notify-send "songgrab started" "Received Tags:
Album: $ALBUM
Song: $TITLE
Number: $TRACKNUM
Year: $YEAR\n\n"
printf "\n"
# prompt to determine later tagging
if [ -z "$SPLITTER_SELECTION" ]; then
printf "Will the link be for a [p]laylist, a[l]bum video, or [s]ong video? "
read SPLITTER_SELECTION
printf "\n"
fi
# prompt to get the URL
if [ -z "$URL" ]; then
printf "Enter the link: "
read URL
printf "\n"
fi
# if song, don't download playlist
if [ "$SPLITTER_SELECTION" = "s" ]; then
SPLITTER_FLAGS="--no-playlist"
fi
# download the video(s)
notify-send "songgrab" "Starting download..."
printf "Starting download..."
ls | grep -q "$(echo $URL | cut -d'=' -f2 | cut -d'&' -f1)" && echo "Already downloaded" || yt-dlp $SPLITTER_FLAGS --format bestaudio --restrict-filenames "$URL"
notify-send "songgrab" "Download stopped."
printf "Download stopped."
# while loop to remove files from list
printf "Do you want to remove any tracks?\n\n"
while true; do
ls | nl
echo -n "Enter the line number: "
read WHILE_RESPONSE
[ -z "$WHILE_RESPONSE" ] && break
rm -rf `ls | head -n "$WHILE_RESPONSE" | tail -1`
done
# convert the downloaded files to mp3
printf "Starting to convert files..."
notify-send "songgrab" "Starting to convert files..."
for i in `ls *.m4a *.webm`; do
imp3=`echo "$i" | sed 's/\.m4a$/.mp3/;s/\.webm$/.mp3/'`
notify-send "songgrab" "Converting $i to $imp3"
[ ! -f "$imp3" ] && ffmpeg -i "$i" -acodec mp3 "$imp3" || echo "File not converted"
done
printf "Finished converting files.\n\n"
notify-send "songgrab" "Finished converting files."
# fix names for suggestions
vimv
# determine tagmp3 flags
FLAGS=""
[ -n "$ARTIST" ] && FLAGS="$FLAGS -a $ARTIST"
[ -n "$ALBUM" ] && FLAGS="$FLAGS -A $ALBUM"
[ -n "$TITLE" ] && FLAGS="$FLAGS -t $TITLE"
[ -n "$TRACKNUM" ] && FLAGS="$FLAGS -T $TRACKNUM"
[ -n "$YEAR" ] && FLAGS="$FLAGS -y $YEAR"
# tag songs with tagmp3
notify-send "songgrab" "Tagging songs..."
printf "Tagging songs..."
for i in `ls *.mp3`; do
tagmp3 $FLAGS "$i"
done
notify-send "songgrab" "Done."
printf "Done.\n\n"
|