@ -238,6 +238,7 @@ class BilibiliServiceV2
public function compareAndDownloadUpVideos ( $isAll = false )
public function compareAndDownloadUpVideos ( $isAll = false )
{
{
$list = BilibiliUpVideos :: all ();
$list = BilibiliUpVideos :: all ();
// $list = array_slice($list->all(), 15, 5);
foreach ( $list as $item ) {
foreach ( $list as $item ) {
dump ( " 当前 up名称是: " . $item [ " up_name " ] . " \n " );
dump ( " 当前 up名称是: " . $item [ " up_name " ] . " \n " );
if ( $item [ " is_downloaded " ] == 1 ) {
if ( $item [ " is_downloaded " ] == 1 ) {
@ -251,15 +252,26 @@ class BilibiliServiceV2
-> where ( 'created_at' , '>=' , date ( " Y-m-d H:i:s " , strtotime ( " -1 week " ))) -> get ();
-> where ( 'created_at' , '>=' , date ( " Y-m-d H:i:s " , strtotime ( " -1 week " ))) -> get ();
}
}
$videoList = [];
$videoList = [];
$videoPartsMap = [];
if ( count ( $vItems ) > 0 ) {
if ( count ( $vItems ) > 0 ) {
foreach ( $vItems as $vItem ) {
foreach ( $vItems as $vItem ) {
if ( $vItem [ " is_download " ] == 1 && $vItem [ " is_downloaded " ] == 0 ) {
if ( $vItem [ " is_download " ] == 1 && $vItem [ " is_downloaded " ] == 0 ) {
$videoList [] = " av " . $vItem [ " aid " ];
// $videoList[] = "av" . $vItem["aid"];
$videoPartsMap = [];
$videoPartsMap [ $vItem [ " aid " ]] = $vItem [ " total_parts " ];
echo " 当前 up名称是: " . $item [ " up_name " ] . " 当前下载的视频 title: " . $vItem [ " title " ] . " 当前下载的视频 aid 是: " . $vItem [ " aid " ] . " \n " ;
Log :: info ( " 当前 up名称是: " . $item [ " up_name " ] . " 当前下载的视频 title: " . $vItem [ " title " ] . " 当前下载的视频 aid 是: " . $vItem [ " aid " ]);
if ( $item [ 'mid' ] == 27174777 ) {
if ( $item [ 'mid' ] == 27174777 ) {
$this -> downloadBSitePlaylist ( $videoList , " /Volumes/WD/tmp/bilibili/ " , " 女团 " );
$this -> partDownloadBSitePlaylist ( $videoPartsMap , " /Volumes/WD/tmp/bilibili/ " , " 女团 " );
} else if ( $item [ " mid " ] == 391316322 ) {
$this -> partDownloadBSitePlaylist ( $videoPartsMap , " /Volumes/WD/tmp/bilibili/ " , " 娜娜 " );
} else if ( $item [ " mid " ] == 396501206 ) {
$this -> partDownloadBSitePlaylist ( $videoPartsMap , " /Volumes/WD/tmp/bilibili/ " , " 佳佳 " );
} else {
} else {
$this -> downloadBSitePlaylist ( $videoList , $this -> baseDir . " bilibili/ " , $item [ 'up_name' ]);
$this -> partDownloadBSitePlaylist ( $videoPartsMap , $this -> baseDir . " bilibili/ " , $item [ 'up_name' ]);
}
}
$vItem [ " is_downloaded " ] = 1 ;
$vItem -> save ();
}
}
}
}
}
}
@ -276,6 +288,7 @@ class BilibiliServiceV2
}
}
Log :: info ( " schedule compareAndDownloadCollectionVideos current collection is { $item [ 'title' ] } , started at: " . date ( " Y-m-d H:i:s " ));
Log :: info ( " schedule compareAndDownloadCollectionVideos current collection is { $item [ 'title' ] } , started at: " . date ( " Y-m-d H:i:s " ));
$videoList = [];
$videoList = [];
$videoPartsMap = [];
if ( $isAll ) {
if ( $isAll ) {
$vItems = BilibiliVideos :: where ( " collection_mid " , $item [ " media_id " ]) -> get ();
$vItems = BilibiliVideos :: where ( " collection_mid " , $item [ " media_id " ]) -> get ();
} else {
} else {
@ -287,21 +300,27 @@ class BilibiliServiceV2
if ( count ( $vItems ) > 0 ) {
if ( count ( $vItems ) > 0 ) {
foreach ( $vItems as $vItem ) {
foreach ( $vItems as $vItem ) {
if ( $vItem [ " is_download " ] == 1 && $vItem [ " is_downloaded " ] == 0 ) {
if ( $vItem [ " is_download " ] == 1 && $vItem [ " is_downloaded " ] == 0 ) {
$videoList [] = " av " . $vItem [ " aid " ];
// $videoList[] = "av" . $vItem["aid"];
$videoPartsMap = [];
$videoPartsMap [ $vItem [ " aid " ]] = $vItem [ " total_parts " ];
echo " 收藏夹名称是: " . $item [ " title " ] . " 当前下载的视频 title: " . $vItem [ " title " ] . " 当前下载的视频 aid 是: " . $vItem [ " aid " ] . " \n " ;
Log :: info ( " 收藏夹名称是: " . $item [ " title " ] . " 当前下载的视频 title: " . $vItem [ " title " ] . " 当前下载的视频 aid 是: " . $vItem [ " aid " ]);
if ( $item [ 'title' ] == " 默认收藏夹 " ) {
if ( $item [ 'title' ] == " 默认收藏夹 " ) {
dump ( " xxxxxxxxxxxx---------------- " );
dump ( " xxxxxxxxxxxx---------------- " );
$this -> downloadBSitePlaylist ( $videoList , " /Volumes/WD/tmp/ " , " bilibili " );
$this -> partDownloadBSitePlaylist ( $videoPartsMap , " /Volumes/WD/tmp/ " , " bilibili " );
} else if ( $item [ 'title' ] == '少女时代' ) {
} else if ( $item [ 'title' ] == '少女时代' ) {
$this -> downloadBSitePlaylist ( $videoList , " /Volumes/WD/tmp/bilibili/少女时代 " , " " );
$this -> partDownloadBSitePlaylist ( $videoPartsMap , " /Volumes/WD/tmp/bilibili/少女时代 " , " " );
} else if ( $item [ 'title' ] == 'aoa' ) {
} else if ( $item [ 'title' ] == 'aoa' ) {
$this -> downloadBSitePlaylist ( $videoList , " /Volumes/WD/tmp/bilibili/aoa " , " " );
$this -> partDownloadBSitePlaylist ( $videoPartsMap , " /Volumes/WD/tmp/bilibili/aoa " , " " );
} else if ( $item [ 'title' ] == 'blackpink' ) {
} else if ( $item [ 'title' ] == 'blackpink' ) {
$this -> downloadBSitePlaylist ( $videoList , " /Volumes/WD/tmp/bilibili/blackpink " , " " );
$this -> partDownloadBSitePlaylist ( $videoPartsMap , " /Volumes/WD/tmp/bilibili/blackpink " , " " );
} else if ( $item [ 'title' ] == 'wjsn' ) {
} else if ( $item [ 'title' ] == 'wjsn' ) {
$this -> downloadBSitePlaylist ( $videoList , " /Volumes/WD/tmp/bilibili/wjsn " , " " );
$this -> partDownloadBSitePlaylist ( $videoPartsMap , " /Volumes/WD/tmp/bilibili/wjsn " , " " );
} else {
} else {
$this -> downloadBSitePlaylist ( $videoList , $this -> baseDir . " bilibili/ " , $item [ 'title' ]);
$this -> partDownloadBSitePlaylist ( $videoPartsMap , $this -> baseDir . " bilibili/ " , $item [ 'title' ]);
}
}
$vItem [ " is_downloaded " ] = 1 ;
$vItem -> save ();
}
}
}
}
}
}
@ -557,13 +576,19 @@ class BilibiliServiceV2
public function queryForVideoParts ()
public function queryForVideoParts ()
{
{
$i = 1 ;
$i = 1 ;
$list = BilibiliVideos :: simplePaginate ( 5 0, null , 'page' , $i );
$list = BilibiliVideos :: orderBy ( 'id' , 'desc' ) -> simplePaginate ( 20 0, null , 'page' , $i );
// dump($list->items()[0]->aid);
// dump($list->items()[0]->aid);
while ( $list -> isNotEmpty ()) {
while ( $list -> isNotEmpty ()) {
foreach ( $list -> items () as $item ) {
foreach ( $list -> items () as $item ) {
// dump("current item", [$item->getAttributes()]);
// dump("current item", [$item->getAttributes()]);
$response = $this -> requestVideoParts ( $item -> aid );
$response = $this -> requestVideoParts ( $item -> aid );
$partList = Arr :: get ( json_decode ( $response , true ), " data " );
dump ( $response );
$responseJson = json_decode ( $response , true );
if ( $responseJson [ " code " ] !== 0 ) {
Log :: error ( " response is error, aid: " . $item -> aid . " response: " . $response );
continue ;
}
$partList = Arr :: get ( $responseJson , " data " );
if ( count ( $partList ) > 0 ) {
if ( count ( $partList ) > 0 ) {
foreach ( $partList as $part ) {
foreach ( $partList as $part ) {
if ( $item [ " from_type " ] == 1 ) {
if ( $item [ " from_type " ] == 1 ) {
@ -591,8 +616,12 @@ class BilibiliServiceV2
$item -> total_parts = count ( $partList );
$item -> total_parts = count ( $partList );
$item -> save ();
$item -> save ();
}
}
try {
usleep ( random_int ( 10 , 100 ) * 1000 );
} catch ( \Exception $e ) {
}
}
}
break ;
$i ++ ;
$i ++ ;
$list = BilibiliVideos :: simplePaginate ( 50 , null , 'page' , $i );
$list = BilibiliVideos :: simplePaginate ( 50 , null , 'page' , $i );
try {
try {
@ -834,9 +863,6 @@ class BilibiliServiceV2
*/
*/
public function partDownloadBSitePlaylist ( $aidMap , $dir = " /Volumes/intel660p/video/mv/mp4 " , $subDir )
public function partDownloadBSitePlaylist ( $aidMap , $dir = " /Volumes/intel660p/video/mv/mp4 " , $subDir )
{
{
dump ( " partDownloadBSitePlaylist " );
dump ( $aidMap );
dump ( $dir );
$dirExists = is_dir ( $dir );
$dirExists = is_dir ( $dir );
dump ( $dirExists );
dump ( $dirExists );
if ( $dirExists ) {
if ( $dirExists ) {
@ -845,13 +871,15 @@ class BilibiliServiceV2
if ( ! is_dir ( $innerDir )) {
if ( ! is_dir ( $innerDir )) {
mkdir ( $innerDir );
mkdir ( $innerDir );
}
}
echo " 当前视频的下载路径是: " . $innerDir . " \n " ;
Log :: info ( " 当前视频的下载路径是: " . $innerDir );
foreach ( $aidMap as $aid => $parts ) {
foreach ( $aidMap as $aid => $parts ) {
dump ( $aid );
dump ( $aid );
Log :: info ( " current download command is : cd ' { $innerDir } ' && annie -r https://www.bilibili.com/video/av80815149 -p " . $aid );
Log :: info ( " current download command is : cd ' { $innerDir } ' && annie -r https://www.bilibili.com/video/av80815149 -p " . $aid );
$downloadResult = shell_exec ( 'cd "' . $innerDir . '" && url="https://www.bilibili.com/video/av' . $aid . ' ? p = "
$downloadResult = shell_exec ( 'cd "' . $innerDir . '" && url="https://www.bilibili.com/video/av' . $aid . ' ? p = "
for i in $ ( seq 1 ' . $parts . ' )
for i in $ ( seq 1 ' . $parts . ' )
do
do
annie - c " SESSDATA=75ed2a5a%2C1620866280%2Cc0fab*b1 " $url $i
annie - f 64 $url $i
done ' );
done ' );
Log :: info ( $downloadResult );
Log :: info ( $downloadResult );
Log :: info ( " current download result: " . $downloadResult );
Log :: info ( " current download result: " . $downloadResult );