Saat ini, Tik Tok mendapatkan popularitas dan tidak pantas untuk tidak menulis artikel kecil tentangnya, dan karenanya, lebih sedikit kata, lebih banyak tindakan.
Mari buat kelas yang disebut TikTok, itu akan berisi tiga metode dan satu properti.
Metode:
- cUrl (permintaan curl)
- redirectUrl (dapatkan tautan setelah pengalihan)
- getUrl (dapatkan tautan video)
Properti:
- public $ url;
Mari buat konstruktor untuk meneruskan alamat url.
public function __construct (string $url) {
$this->url = $url;
}
CUrl. Kami mengirim permintaan ke server dan menerima tanggapan.
private function cUrl (string $url) :? string {
$user_agent = 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML,
like Gecko) Chrome/79.0.3945.130 Safari/537.36';
$curl = curl_init($url);
curl_setopt_array($curl, [
CURLOPT_URL => $url,
CURLOPT_RETURNTRANSFER => TRUE,
CURLOPT_FOLLOWLOCATION => TRUE,
CURLOPT_USERAGENT => $user_agent,
CURLOPT_CONNECTTIMEOUT => 5,
CURLOPT_TIMEOUT => 10,
]);
$response = curl_exec($curl);
if ($response === FALSE) {
curl_close($curl);
return NULL;
}
$httpCode = (int)curl_getinfo($curl, CURLINFO_HTTP_CODE);
curl_close($curl);
if ($httpCode !== 200)
return NULL;
return $response;
}
RedirectUrl
private function redirectUrl (string $url) :? string {
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
$headers = get_headers($url, 1);
return $headers['Location'] ?? NULL;
}
Metode GetUrl.
public function getUrl () :? string {
// .
$responseHtml = $this->cUrl($this->url);
// .
if (!preg_match('/contentUrl\\":\\"(.*?)\\",\\"embedUrl/ui', $responseHtml, $mInterUrl))
throw new \Exception(' !');
// bytecode
if (!$respByteVideo = $this->cUrl($mInterUrl[1]))
throw new \Exception(' !');
// , utf-8.
$strByteVideo = mb_convert_encoding($respByteVideo, 'UTF-8', 'auto');
// id , .
if (!preg_match('/vid:(.*?)%/sui', $strByteVideo, $mVideoId))
throw new \Exception('id video !');
// .
$url = str_replace("\0", '', $mVideoId[1]);
// .
$url = "https://api.tiktokv.com/aweme/v1/playwm/?video_id=$url";
// redirect , redirect
return $this->redirectUrl($url);
}
Mari buat objek berdasarkan kelas dan berikan tautan ke sana.
$TikTok = new TikTok('https://www.tiktok.com/@sonyakisa8/video/6828487583694163205?lang=ru');
echo $TikTok->getUrl();
Semuanya sudah siap.
Contoh:
Seluruh kode
class TikTok {
/**
* @var string
*/
public $url;
public function __construct (string $url) {
$this->url = $url;
}
/**
* @return null|string
* @throws Exception
*/
public function getUrl () :? string {
//
$responseHtml = $this->cUrl($this->url);
//
if (!preg_match('/contentUrl\\":\\"(.*?)\\",\\"embedUrl/ui', $responseHtml, $mInterUrl))
throw new \Exception(' !');
// bytecode
if (!$respByteVideo = $this->cUrl($mInterUrl[1]))
throw new \Exception(' !');
// , utf-8
$strByteVideo = mb_convert_encoding($respByteVideo, 'UTF-8', 'auto');
// id ,
if (!preg_match('/vid:(.*?)%/sui', $strByteVideo, $mVideoId))
throw new \Exception('id video !');
//
$url = str_replace("\0", '', $mVideoId[1]);
//
$url = "https://api.tiktokv.com/aweme/v1/playwm/?video_id=$url";
// redirect , redirect
return $this->redirectUrl($url);
}
/**
* url redirect
*
* @param string $url
* @return null|string
*/
private function redirectUrl (string $url) :? string {
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
$headers = get_headers($url, 1);
return $headers['Location'] ?? NULL;
}
/**
* @param string $url
* @return null|string
*/
private function cUrl (string $url) :? string {
$user_agent = 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.130 Safari/537.36';
$curl = curl_init($url);
curl_setopt_array($curl, [
CURLOPT_URL => $url,
CURLOPT_RETURNTRANSFER => TRUE,
CURLOPT_FOLLOWLOCATION => TRUE,
CURLOPT_USERAGENT => $user_agent,
CURLOPT_CONNECTTIMEOUT => 5,
CURLOPT_TIMEOUT => 10,
]);
$response = curl_exec($curl);
if ($response === FALSE) {
curl_close($curl);
return NULL;
}
$httpCode = (int)curl_getinfo($curl, CURLINFO_HTTP_CODE);
curl_close($curl);
if ($httpCode !== 200)
return NULL;
return $response;
}
}