#/bin/bash
# name: select_movie.sh
# version: 1.0
# ceateTime: 2018-08-18
# description: 输入豆瓣用户id,得出来豆瓣用户看过电影的类型便签
# author: mengyanhuangchao
# email: 406993906@qq.com
# description: 判断输入参数是否合
set -e
#INFO打印
info_log(){
echo -e "[INFO]$1"
}
#SUCCESS打印
success_log(){
echo -e "\033[32m[SUCCESS]\033[0m$1"
}
#ERROR打印
error_log(){
echo -e "\033[31m[ERROR]\033[0m$1"
exit 0
}
parameter_1=$1
parameter_2=$2
parameter_3=$3
#根据观看的时间进行筛选
select_date(){
mysql -u root -padmin <<-EOF>movie_names
use moviebase;
SELECT * FROM movietable WHERE date LIKE '$parameter_3-%';
EOF
movie_names=`cat movie_names |grep -v moviename |awk -F ' ' '{print $1}'`
movie_number=`cat movie_names|wc -l`
if [ -s $PWD/movie_names ];then
success_log "You saw $movie_number movies in $parameter_3, and the $movie_number films are \n=====================\n$movie_names\n===================="
else
success_log "You saw $movie_number movies in $parameter_3"
fi
rm -rf movie_names
}
#根据评分进行筛选
select_rating(){
mysql -u root -padmin <<-EOF>movie_names
use moviebase;
SELECT * FROM movietable WHERE BINARY rating='$parameter_3';
EOF
movie_names=`cat movie_names |grep -v moviename |awk -F ' ' '{print $1}'`
movie_number=`cat movie_names|wc -l`
if [ -s $PWD/movie_names ];then
success_log "You You have $movie_names movies with $parameter_3 starts, and the $movie_number films are \n=====================\n$movie_names\n===================="
else
success_log "You have 0 movie with $parameter_3 starts."
fi
rm -rf movie_names
}
#根据看过的电影输出电影信息
select_moviename(){
mysql -u root -padmin <<-EOF>movie_names
use moviebase;
SELECT * FROM movietable WHERE BINARY moviename='$parameter_3';
EOF
#movie_names=`cat movie_names |grep -v moviename |awk -F ' ' '{print $1}'`
#movie_number=`cat movie_names|wc -l`
if [ -s $PWD/movie_names ];then
success_log "You mark $parameter_3 information, \n=====================\n`cat movie_names`\n===================="
else
error_log "can not find this movie,you should check your input moviename"
fi
rm -rf movie_names
}
#根据输入的用户ID进行数据处理
update_data(){
movie_number=`curl -s https://movie.douban.com/people/$parameter_2/collect|egrep "看过的电影"|awk -F '(' '{print $2}' |awk -F ')' '{print $1}'|uniq`
user_name=`curl -s https://movie.douban.com/people/$parameter_2/collect|egrep "看过的电影"|awk -F '看过的电影' '{print $1}'|awk -F '>' '{print $2}'|tail -n1`
if [ ! $movie_number ];then
error_log "can not find id is $parameter_2"
else
if [ $movie_number -eq 0 ];then
error_log "User with user id $parameter_2 has not seen a movie."
fi
fi
info_log "$user_name see $movie_number movies"
info_log 'Please wait a moment....'
mysql -u root -padmin <<EOF
use moviebase;
truncate table movietable;
EOF
for i in `seq 0 15 $movie_number`;do
sleep 3
curl -s https://movie.douban.com/people/$parameter_2/collect?start=$i > html
cat html |egrep "<em>"| egrep -v '= title'|awk -F '>' '{print $2}' |awk -F '<' '{print $1}'|awk -F ' ' '{print $1}' > moviename
for moviename in `cat moviename`;do
cat html| egrep -A13 "<em>$moviename" >test1
rating=`cat test1|egrep 'rating' |awk -F 'rating' '{print $2}' |awk -F '-' '{print $1}'`
date=`cat test1|egrep 'date' |awk -F '>' '{print $2}' |awk -F '<' '{print $1}'`
comment=`cat test1|egrep 'comment' |awk -F '>' '{print $2}' |awk -F '<' '{print $1}'`
tags=`cat test1|egrep 'tags' |awk -F '>' '{print $2}' |awk -F '<' '{print $1}'`
echo -e "|$moviename |$date |$comment |$tags |$rating" >>movietable
mysql -u root -padmin <<EOF
use moviebase;
insert into movietable (moviename,date,comment,tags,rating) values ('$moviename','$date','$comment','$tags','$rating');
EOF
done
done
rm -rf html moviename test1
success_log "all info save $PWD/movietable and mysql"
}
#正确格式
correct_usage(){
echo -e "Usage: bash $parameter_1 [OPTION]... [OPTION]...[PARAMETER] OR bash $parameter_1 [OPTION]... [PARAMETER]"
echo -e "-d, --download Get user information;"
echo -e " Usage bash $parameter_1 --download 162545416"
echo -e "-s, --select Filter movie information according to demand"
echo -e " Usage bash $parameter_1 --select moviename 肖申克的救赎"
echo -e " Usage bash $parameter_1 --select rating 5"
echo -e " Usage bash $parameter_1 --select date 2017"
echo -e "-h,--help display this help and exit"
}
if [[ $parameter_1 == "--download" || $parameter_1 == '-d' ]];then
if [ -n "$(echo $parameter_2| sed -n "/^[0-9]\+$/p")" ];then
info_log "update_data"
update_data
else
correct_usage
fi
elif [[ $parameter_1 == "--select" || $parameter_1 == "-s" ]];then
if [[ $parameter_2 == "moviename" ]];then
if [ ! $parameter_3 ];then
correct_usage
else
select_moviename
fi
elif [[ $parameter_2 == "rating" ]];then
echo $parameter_3
if [[ ! `echo $parameter_3 |egrep ^[1-5]$` ]];then
error_log "The rating must be 1 to 5;Usage bash $parameter_1 --select rating 4"
else
select_rating
fi
elif [[ $parameter_2 == "date" ]];then
if [ $parameter_3 -gt 2000 ] && [ $parameter_3 -lt 2019 ];then
select_date
else
error_log "The rating date be 2001 to 2018;Usage bash $parameter_1 --select date 2017"
fi
else
correct_usage
fi
elif [[ $parameter_1 == "--help" || $parameter_1 == "-h" ]];then
correct_usage
else
correct_usage
fi