2017-02-19 01:02:37 -06:00
|
|
|
#!/bin/sh
|
|
|
|
|
2016-12-11 19:33:57 -06:00
|
|
|
#####################
|
|
|
|
# Name: yt-meta.sh
|
|
|
|
# Date: 2016-12-10
|
|
|
|
# Lisc: ISC
|
|
|
|
# Main: jadedctrl
|
|
|
|
# Desc: Fetches metadata about
|
|
|
|
# a specific YT video.
|
|
|
|
#####################
|
|
|
|
|
|
|
|
# Usage: yt-meta.sh $video_id
|
|
|
|
|
2017-02-19 01:02:37 -06:00
|
|
|
optnum=0
|
|
|
|
|
|
|
|
for argument in $@
|
|
|
|
do
|
2017-02-19 13:06:56 -06:00
|
|
|
if echo $argument | grep "^-" > /dev/null
|
|
|
|
then
|
|
|
|
charcount=$(echo "$argument" | echo "$(wc -c) - 1" | bc)
|
|
|
|
while [ $charcount -gt 0 ]
|
|
|
|
do
|
|
|
|
character=$(echo "$argument" | head -c1)
|
|
|
|
argument=$(echo "$argument" | sed 's/^.//')
|
|
|
|
case $character in
|
|
|
|
c)
|
|
|
|
options="$options c"
|
|
|
|
optnum=$((optnum+1)) ;;
|
|
|
|
d) # duration
|
|
|
|
options="$options d"
|
|
|
|
optnum=$((optnum+1)) ;;
|
|
|
|
D) # date
|
|
|
|
options="$options D"
|
|
|
|
optnum=$((optnum+1)) ;;
|
|
|
|
v)
|
|
|
|
options="$options v"
|
|
|
|
optnum=$((optnum+1)) ;;
|
|
|
|
t)
|
|
|
|
options="$options t"
|
|
|
|
optnum=$((optnum+1)) ;;
|
|
|
|
i)
|
|
|
|
options="$options i"
|
|
|
|
optnum=$((optnum+1)) ;;
|
|
|
|
-) ;;
|
|
|
|
esac
|
|
|
|
charcount=$((charcount-1))
|
|
|
|
done
|
|
|
|
else
|
2017-02-19 01:02:37 -06:00
|
|
|
preid="$argument"
|
2017-02-19 13:06:56 -06:00
|
|
|
fi
|
|
|
|
done
|
|
|
|
|
|
|
|
|
|
|
|
if echo "$preid" | grep "youtube.com" > /dev/null
|
2016-12-11 19:33:57 -06:00
|
|
|
then
|
2017-02-19 13:06:56 -06:00
|
|
|
id="$(echo $preid | sed 's/.*v=//')"
|
2017-02-19 01:02:37 -06:00
|
|
|
elif [ -z $preid ]
|
2016-12-11 19:33:57 -06:00
|
|
|
then
|
2016-12-23 11:12:07 -06:00
|
|
|
echo "No video specified."
|
2016-12-11 19:33:57 -06:00
|
|
|
exit 1
|
|
|
|
else
|
2017-02-19 01:02:37 -06:00
|
|
|
id="$preid"
|
2016-12-11 19:33:57 -06:00
|
|
|
fi
|
|
|
|
|
2017-01-05 22:38:38 -06:00
|
|
|
if [ -e "./lib/yt-meta" ]
|
|
|
|
then
|
|
|
|
alias yt-channel="./lib/yt-channel"
|
|
|
|
alias yt-search="./lib/yt-down"
|
|
|
|
alias yt-meta="./lib/yt-meta"
|
|
|
|
alias yt-search="./lib/yt-search"
|
|
|
|
alias yt-down="./lib/yt-channel"
|
|
|
|
alias st-download="./lib/st-download"
|
|
|
|
alias st-video="./lib/st-video"
|
|
|
|
fi
|
|
|
|
|
2016-12-11 19:33:57 -06:00
|
|
|
|
2016-12-23 13:28:20 -06:00
|
|
|
video_file="/tmp/$(mktemp -u yt-video_XXXXXX)"
|
2016-12-11 19:33:57 -06:00
|
|
|
if type "wget" &> /dev/null
|
|
|
|
then
|
|
|
|
wget -q https://youtube.com/watch?v=$id -O $video_file
|
|
|
|
wget -q https://youtube.com/results?search_query=$id -O $video_file.1
|
|
|
|
elif type "curl" &> /dev/null
|
|
|
|
then
|
|
|
|
curl -s https://youtube.com/watch?v=$id -o $video_file
|
|
|
|
curl -s https://youtube.com/results?search_query=$id -o $video_file.1
|
|
|
|
fi
|
|
|
|
|
|
|
|
# Now for displaying the metadata
|
|
|
|
title="$(grep "\"title\":\"" $video_file | sed 's/.*"title":"//' | sed 's/".*//')"
|
|
|
|
author="$(grep "\"author\":\"" $video_file | sed 's/.*"author":"//' | sed 's/".*//')"
|
|
|
|
views="$(grep "\"view_count\":\"" $video_file | sed 's/.*"view_count":"//' | sed 's/".*//')"
|
|
|
|
duration="$(grep "<a href=\"/watch?v=$1" $video_file.1 | sed 's/.*Duration: //' | sed 's/\..*//')"
|
|
|
|
date="$(grep "datePublished" $video_file | sed 's/.*"datePublished" content="//' | sed 's/".*//')"
|
2017-02-19 13:06:56 -06:00
|
|
|
|
|
|
|
if [ $optnum -eq 0 ]
|
|
|
|
then
|
|
|
|
echo "$author | $views | $duration | $date | $id"
|
|
|
|
fi
|
2017-02-19 01:02:37 -06:00
|
|
|
|
|
|
|
for option in $options
|
|
|
|
do
|
|
|
|
case $option in
|
|
|
|
c) printf "$author" ;;
|
|
|
|
t) printf "$title" ;;
|
|
|
|
d) printf "$duration" ;;
|
|
|
|
D) printf "$date" ;;
|
|
|
|
v) printf "$views" ;;
|
2017-02-19 13:06:56 -06:00
|
|
|
i) printf "$id" ;;
|
2017-02-19 01:02:37 -06:00
|
|
|
esac
|
|
|
|
if [ $optnum -ge 2 ]
|
|
|
|
then
|
|
|
|
printf " | "
|
|
|
|
optnum=$((optnum-1))
|
2017-02-19 13:06:56 -06:00
|
|
|
else
|
|
|
|
printf "\n"
|
2017-02-19 01:02:37 -06:00
|
|
|
fi
|
|
|
|
done
|