Lấy video trực tiếp từ Facebook

Đoạn code bên dưới sẽ giúp bạn lấy những đường dẫn video trực tiếp từ Facebook. Nếu bạn đang muốn viết code để chạy video Facebook trên JW Player hoặc bất kỳ mã nguồn nào khác thì bạn cần phải dùng link trực tiếp, bài viết này chỉ áp dụng cho code chạy trên WordPress, nếu bạn muốn dùng cho các dự án PHP khác thì có thể chỉnh sửa lại nhé.

function hocwp_theme_custom_get_facebook_url( $url ) {
	$tr_name = 'hocwp_facebook_video_direct_url_' . md5( $url );
	if ( false === ( $result = get_transient( $tr_name ) ) ) {
		$res  = wp_remote_post( $url );
		$body = wp_remote_retrieve_body( $res );
		$dom  = new DomDocument();
		$save = false;

		$internalErrors = libxml_use_internal_errors( true );
		$dom->loadHTML( $body );
		libxml_use_internal_errors( $internalErrors );
		$scripts = $dom->getElementsByTagName( 'script' );
		foreach ( $scripts as $script ) {
			$html = $dom->saveHTML( $script );
			if ( false !== strpos( $html, '.mp4' ) ) {
				$html = strstr( $html, 'videoData:[{' );
				$html = strstr( $html, '}],', true );
				$html = str_replace( 'videoData:[', '', $html );
				$html .= '}';
				preg_match_all( '#\bhttps?://[^,\s()<>]+(?:\([\w\d]+\)|([^,[:punct:]\s]|/))#', $html, $matches );
				$result = $matches[0];
				if ( is_array( $result ) && 0 < count( $result ) ) {
					set_transient( $tr_name, $result, DAY_IN_SECONDS );
					break;
				}
			}
		}
	}

	return $result;
}

Hàm này sẽ trả về giá trị mảng các đường dẫn video của Facebook, mỗi đường dẫn đến video có chất lượng khác nhau. Mình sẽ lưu cache lại trong vòng 1 ngày, nếu như link không hoạt động thì bạn có thể rút ngắn thời gian cache xuống còn 6 tiếng hoặc ít hơn.

3 bình luận cho “Lấy video trực tiếp từ Facebook

    1. Đúng rồi bạn, cái này cốt là để lấy link trực tiếp từ Facebook, cái điểm yếu ở đây là code sẽ không hoạt động nếu Facebook thay đổi giao diện @@

Trả lời

Thư điện tử của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *