使用shell下载查找对应的电影

#/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

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值