示例#1
0
 public function actionMarksource()
 {
     $db_api = new ApiDouban();
     // mv_source_temp
     $tempSource = models\MvSourceTemp::find()->where('basic_id=0 and type!=0')->orderBy('id asc');
     $total = $tempSource->count();
     $page = 1;
     $pageSize = 40;
     $totalPage = ceil($total / $pageSize);
     $tempSource->limit($pageSize)->asArray();
     for ($page = 1; $page <= $totalPage; $page++) {
         // 分页
         $offset = ($page - 1) * $pageSize;
         $tempSourceData = $tempSource->offset($offset)->all();
         foreach ($tempSourceData as $v) {
             // 遍历temp数据
             echo "tempSource: {$v['title']} \n";
             $searchRs = $db_api->searchpj($v['title']);
             // douban search
             //echo "douban search Rs: {$searchRs} \n";
             //if(isset($searchRs['subjects']) && !empty($searchRs['subjects'])) {
             //foreach($searchRs['subjects'] as $s) {
             if (isset($searchRs) && !empty($searchRs)) {
                 foreach ($searchRs as $s) {
                     //$subject_id = $s['id'];
                     // 匹配subject_id
                     $reg = '/subject\\/(\\d+?)\\//';
                     preg_match($reg, $s['url'], $match);
                     $subject_id = isset($match['1']) ? $match['1'] : 0;
                     //var_dump($match);die;
                     echo "douban Search: {$subject_id} {$s['title']}\n";
                     if (!$subject_id) {
                         echo "douban Subject_id empty: {$subject_id} {$s['title']}\n";
                         continue;
                     }
                     // spider是否存在subject_id
                     $spiderRs = models\MvSpider::find()->where(['subject_id' => $subject_id])->asArray()->all();
                     if (!$spiderRs) {
                         $MvSpider = new models\MvSpider();
                         $MvSpider->subject_id = $subject_id;
                         $MvSpider->title = $s['title'];
                         $MvSpider->from_tag = 'search';
                         $MvSpider->status = 20;
                         $MvSpider->create_time = time();
                         $MvSpider->save();
                         echo "spider save {$subject_id} \n\n";
                     } else {
                         // basic是否存在subject_id
                         $basicRs = models\MvBasic::find()->where(['douban_id' => $subject_id])->asArray()->one();
                         if ($basicRs && isset($basicRs['id']) && !empty($basicRs['id'])) {
                             echo "basicRs found subject_id: {$subject_id} temp: {$v['id']}-{$v['title']}  basic_id: {$basicRs['id']} basic_title: {$basicRs['title']} \n";
                             // 对比 year,title
                             if ($v['year'] == $s['year']) {
                                 // 同一年
                                 similar_text($v['title'], $s['title'], $percent);
                                 echo "vs Percent: {$percent} \n";
                                 if ($percent >= 100) {
                                     // insert mv_source
                                     $MvSpider = new models\MvSource();
                                     $MvSpider->site_id = 10;
                                     $MvSpider->basic_id = $basicRs['id'];
                                     $MvSpider->type = $v['type'];
                                     $MvSpider->name = $v['name'];
                                     $MvSpider->download_url = $v['download_url'];
                                     $MvSpider->play_url = $v['play_url'];
                                     $MvSpider->ext = $v['ext'];
                                     $MvSpider->update_time = time();
                                     $MvSpider->create_time = time();
                                     $MvSpider->save();
                                     // update mv_source_temp [basic_id]
                                     models\MvSourceTemp::updateAll(['basic_id' => $basicRs['id']], "id={$v['id']}");
                                     // update mv_basic [update_time,source_num]
                                     $source_num = $basicRs['source_num'] + 1;
                                     models\MvBasic::updateAll(['update_time' => time(), 'source_num' => $source_num], "douban_id={$subject_id}");
                                     echo "vs Percent: {$percent} insert done  temp: {$v['id']}-{$v['title']}  basic_id: {$basicRs['id']}  subject_id: {$subject_id} \n\n";
                                 } else {
                                     echo "vs Percent: {$percent} < 100  temp: {$v['id']}-{$v['title']}   {$subject_id}  \n\n";
                                 }
                             } else {
                                 echo "year:  {$v['year']} vs {$s['year']}  temp: {$v['id']}-{$v['title']}  {$subject_id}  \n\n";
                             }
                         } else {
                             echo "basicRs empty {$subject_id} \n\n";
                         }
                     }
                 }
                 //die('subjects done');
             }
             //die('一组 sujectes done');
             sleep(1);
         }
         //die('一组 tempSource done');
         sleep(1);
     }
 }