Skip to content
This repository has been archived by the owner on Jul 12, 2020. It is now read-only.

Fix 'No format stream map found' issue (421) #422

Merged
merged 2 commits into from
Oct 29, 2019
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
25 changes: 8 additions & 17 deletions src/Provider/Youtube/Provider.php
Original file line number Diff line number Diff line change
Expand Up @@ -135,35 +135,26 @@ public function provide($input)
// thanks to amit kumar @ bloggertale.com for sharing the fix

//This URL *should* allow age restricted videos and regular videos to download
$video_info_url = 'https://www.youtube.com/get_video_info?&video_id=' . $input . '&asv=3&hl=en_US';

$request = $this->getHttpClient()->createFullRequest(
'GET',
$video_info_url
);
//$video_info_url = 'https://www.youtube.com/get_video_info?&video_id=' . $input . '&asv=3&hl=en_US';

$options = ['curl' => []];

if ($this->options['use_ip'] !== false) {
$options['curl'][CURLOPT_INTERFACE] = $this->options['use_ip'];
}

$video_info_url = 'https://www.youtube.com/get_video_info?&video_id=' . $input . '&asv=3&el=detailpage&hl=en_US';
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Changing the url would undo the improvements of #365.

$request = $this->getHttpClient()->createFullRequest(
'GET',
$video_info_url
);
$response = $this->getHttpClient()->send($request, $options);

//But just incase it doesn't, we can fallback to the old URL.
if (strpos($response->getBody()->__toString(), 'status=fail') !== false) {
$video_info_url = 'https://www.youtube.com/get_video_info?&video_id=' . $input . '&asv=3&el=detailpage&hl=en_US';
$request = $this->getHttpClient()->createFullRequest(
'GET',
$video_info_url
);
$response = $this->getHttpClient()->send($request, $options);
Comment on lines -153 to -160
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This fallback was introduced with #365. Why do you deleted it?

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This fallback is falling back on the URL that is the only one actually working right now, therefore I commented out the old URL and substituted it with the new one and deleted the fallback. The benefit of getting age restricted videos is no longer there if no videos are working at the moment.

}

/* TODO: Check response for status code and Content-Type */
$video_info = VideoInfo::createFromStringWithOptions(
$response->getBody()->__toString(),
$this->options
$this->options,
$input
);

if ($video_info instanceof CacheAware) {
Expand Down
15 changes: 10 additions & 5 deletions src/Provider/Youtube/VideoInfo.php
Original file line number Diff line number Diff line change
Expand Up @@ -160,15 +160,15 @@ class VideoInfo implements VideoInfoInterface, CacheAware, HttpClientAware, Logg
use LoggerAwareTrait;

/**
* Creates a VideoInfo from string with an options array
*
* @param string $video_info
* @param array $options
* @param mixed $string
* Creates a VideoInfo from string with an options array
*
* @param $string
* @param array $options
* @param null $video_id
* @return VideoInfo
*/
public static function createFromStringWithOptions($string, array $options)
public static function createFromStringWithOptions($string, array $options, $video_id = null)
{
$default = [
'decipher_signature' => false,
Expand All @@ -182,6 +182,11 @@ public static function createFromStringWithOptions($string, array $options)

parse_str($string, $video_info);

// $string may not contain video_id, so we should append it manually if we have it beforehand
if(empty($video_info['video_id']) && !empty($video_id)) {
$video_info['video_id'] = $video_id;
}

return new self($video_info, $options);
}

Expand Down