Commit 369cba97 by Phạm Văn Đoan

cập nhật nhạc sĩ từ NCT

parent e0c7e6a2
......@@ -118,7 +118,7 @@ class UpdateTrackArtistCommand extends Command
case 'nct':
$track_id = [];
$track_id_singer = [];
// Lấy top 100 -----------------------------------------------------------------------------------------
// Xử lý cập nhật ca sĩ --------------------------------------------------------------------------------
$url = config('api.nct.top100');
$url_playlist_top100 = config('api.nct.playlist_top100');
$tracks = $this->trackRepository->processNctGetTrackInfoFromTop100($url);
......@@ -138,6 +138,16 @@ class UpdateTrackArtistCommand extends Command
$this->privateUpdateTrackSinger($src, $track_db, $track_id_singer);
}
// Xử lý cập nhật nhạc sĩ ------------------------------------------------------------------------------
$tracks_nct = $this->trackRepository->getTrackBySource($src, null, 100, true);
$track_id_composer = $this->trackRepository->getComposerBySource($src, $tracks_nct);
if (count($track_id_composer) > 0) {
$this->privateUpdateTrackSinger($src, $tracks_nct, [], $track_id_composer);
} else {
echo "\n - Thông tin Nhạc sĩ đã cập nhật đầy đủ trước đó.";
}
break;
case 'keeng':
$track_id = [];
......@@ -166,19 +176,15 @@ class UpdateTrackArtistCommand extends Command
$this->privateUpdateTrackSinger($src, $track_db, $track_id_singer, $track_id_composer);
}
//print_r($track_id_composer); die();
break;
case 'all':
break;
case 'all': break;
default:
}
echo "\n Kết thúc cập nhật ca sĩ cho bài hát. \n";
}
private function privateUpdateTrackSinger($src, $track_db, $track_id_singer, $track_id_composer=null)
private function privateUpdateTrackSinger($src, $track_db, $track_id_singer=[], $track_id_composer=[])
{
echo "\n Cập nhật cho tổng số bài: " . $track_db->count();
......@@ -189,36 +195,41 @@ class UpdateTrackArtistCommand extends Command
case 'keeng': $src_track_id = $track->id_keeng; break;
default: return false;
}
$user = User::updateOrCreate(
['full_name' => $track_id_singer[$src_track_id]],
['user_type' => 2, 'updated_at' => Carbon::now()]
);
TrackUser::updateOrCreate(
[
'track_id' => $track->id,
'user_id' => $user->id
],
['name' => $track_id_singer[$src_track_id]]
);
// Cập nhật sáng tác
switch ($src) {
case 'zing': break;
case 'nct': break;
case 'keeng':
TrackArtist::updateOrCreate(
[
'track_id' => $track->id,
'user_id' => $user->id
],
['name' => $track_id_composer[$src_track_id]]
);
break;
default:
if (count($track_id_singer) > 0 && array_key_exists($src_track_id, $track_id_singer)) {
$user = User::updateOrCreate(
['full_name' => $track_id_singer[$src_track_id]],
['user_type' => 2, 'updated_at' => Carbon::now()]
);
TrackUser::updateOrCreate(
[
'track_id' => $track->id,
'user_id' => $user->id
],
['name' => $track_id_singer[$src_track_id]]
);
echo "\n - Cập nhật xong Ca sĩ (ID: " . (isset($user->id) ? $user->id : '') . ") cho bài hát (ID: " . (isset($track->id) ? $track->id : '') . ").";
}
echo "\n - Cập nhật xong Ca sĩ (ID: $user->id) cho bài hát (ID: $track->id)";
// Cập nhật sáng tác
if (count($track_id_composer) > 0 && array_key_exists($track->id, $track_id_composer)) {
$user = User::updateOrCreate(
['full_name' => $track_id_composer[$track->id]],
['user_type' => 2, 'updated_at' => Carbon::now()]
);
TrackArtist::updateOrCreate(
[
'track_id' => $track->id,
'user_id' => $user->id
],
['name' => $track_id_composer[$track->id]]
);
echo "\n - Cập nhật xong Nhạc sĩ (ID: " . (isset($user->id) ? $user->id : '') . ") cho bài hát (ID: " . (isset($track->id) ? $track->id : '') . ").";
}
}
}
}
......@@ -299,9 +299,9 @@ class TrackRepository extends BaseRepository
*
* @return array
*/
public function getTrackBySource($src='zing', $crawlered, $limit = Constants::CRAWLER_LISTEN_LIMIT)
public function getTrackBySource($src='zing', $crawlered, $limit = Constants::CRAWLER_LISTEN_LIMIT, $is_update_composer=false)
{
$query = Track::select(['id', 'id_zing', 'id_nct', 'id_nhacvn', 'id_keeng', 'title']);
$query = Track::select(['id', 'id_zing', 'id_nct', 'id_nhacvn', 'id_keeng', 'title', 'link_nct']);
if (is_array($crawlered) && count($crawlered) > 0) {
$query->whereNotIn('id', $crawlered);
......@@ -309,7 +309,12 @@ class TrackRepository extends BaseRepository
switch ($src) {
case 'zing': $query->whereNotNull('id_zing')->where('id_zing', '<>', ''); break;
case 'nct': $query->whereNotNull('id_nct')->where('id_nct', '<>', ''); break;
case 'nct':
$query->whereNotNull('id_nct')->where('id_nct', '<>', '');
if ($is_update_composer) {
$query->whereNull('composer_list');
}
break;
case 'nhacvn': $query->whereNotNull('id_nhacvn')->where('id_nhacvn', '<>', ''); break;
case 'keeng': $query->whereNotNull('id_keeng')->where('id_keeng', '<>', ''); break;
}
......@@ -318,6 +323,10 @@ class TrackRepository extends BaseRepository
$query->take($limit);
}
if ($is_update_composer) {
return $query->get();
}
return $query->get()->toArray();
}
......@@ -388,5 +397,43 @@ class TrackRepository extends BaseRepository
->get();
}
/**
* Hàm lấy ds Nhạc sĩ ở các trang nhạc, đặc biệt lấy ở NCT
*
* @param $src
* @param $tracks_nct
* @param int $limit
*
* @return array
*/
public function getComposerBySource($src, $tracks_nct, $limit=500)
{
$tracks = [];
switch ($src) {
case 'zing': break;
case 'nct':
foreach ($tracks_nct as $key => $track) {
$dom = new Htmldom($track['link_nct']);
//
$element_track_composer = 'div#_divLyricHtml div.pd_name_lyric p.name_post';
foreach ($dom->find($element_track_composer) as $data) {
if (strpos($data->innertext, 'Nhạc sĩ:') !== false) {
$tracks[$track['id']] = trim(str_replace(['Nhạc sĩ:'], [''], $data->innertext));
}
}
if (empty($tracks[$track['id']])) {
$tracks[$track['id']] = 'Đang Cập Nhật';
}
}
break;
case 'keeng': break;
default:
}
return $tracks;
}
}
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment