summaryrefslogtreecommitdiff
path: root/songgrab
blob: 914a56b365ec86f2863c6729f131e46a3ed527f5 (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
#!/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/^ //'`
echo "Artist: $ARTIST
Album: $ALBUM
Song: $TITLE
Number: $TRACKNUM
Year: $YEAR"

# prompt to determine later tagging
if [ -z "$SPLITTER_SELECTION" ]; then
  echo -n "Will the link be for a [p]laylist, a[l]bum video, or [s]ong video? "
  read SPLITTER_SELECTION
  echo ""
fi

# prompt to get the URL
if [ -z "$URL" ]; then
  echo -n "Enter the link: "
  read URL
  echo ""
fi

# if song, don't download playlist
if [ "$SPLITTER_SELECTION" = "s" ]; then
  SPLITTER_FLAGS="--no-playlist"
fi

# download the video(s)
ls | grep -q "$(echo $URL | cut -d'=' -f2 | cut -d'&' -f1)" && echo "Already downloaded" || youtube-dl $SPLITTER_FLAGS --format bestaudio --restrict-filenames "$URL"

# while loop to remove files from list
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 m4a files to mp3
for i in `ls *.m4a *.webm`; do
  imp3=`echo "$i" | sed 's/\.m4a$/.mp3/;s/\.webm$/.mp3/'`
  [ ! -f "$imp3" ] && ffmpeg -i "$i" -acodec mp3 "$imp3" || echo "File not converted"
done

# 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
for i in `ls *.mp3`; do
  tagmp3 $FLAGS "$i"
done