38 $isHttpClientPassed =
true;
42 $isHttpClientPassed =
false;
49 || $httpClient->getStatus() === 403
51 && str_starts_with($this->metadataUrl,
'http://'))
53 if(!$isHttpClientPassed)
57 $metadataUrl = str_replace(
'http://',
'https://', $this->metadataUrl);
61 if($rawMetadata ===
false)
67 if($parsedMetadata !==
false)
69 if($this->metadataEncoding <>
'' && $document->
getEncoding() !== $this->metadataEncoding)
71 $parsedMetadata = Encoding::convertEncoding($parsedMetadata, $this->metadataEncoding, $document->
getEncoding());
74 if($document->
getTitle() ==
'' && !empty($parsedMetadata[
'title']))
76 $document->
setTitle($parsedMetadata[
'title']);
79 if($document->
getImage() ==
'' && !empty($parsedMetadata[
'thumbnail_url']))
81 $image = $parsedMetadata[
'thumbnail_url'];
84 $image = reset($image);
89 if($document->
getEmdbed() ==
'' && !empty($parsedMetadata[
'html']))
91 $document->
setEmbed($parsedMetadata[
'html']);
94 if($document->
getExtraField(
'PROVIDER_NAME') ==
'' && !empty($parsedMetadata[
'provider_name']))
96 $document->
setExtraField(
'PROVIDER_NAME', $parsedMetadata[
'provider_name']);
99 if($document->
getExtraField(
'VIDEO_WIDTH') ==
'' && !empty($parsedMetadata[
'width']))
101 $document->
setExtraField(
'VIDEO_WIDTH', $parsedMetadata[
'width']);
104 if($document->
getExtraField(
'VIDEO_HEIGHT') ==
'' && !empty($parsedMetadata[
'height']))
106 $document->
setExtraField(
'VIDEO_HEIGHT', $parsedMetadata[
'height']);
117 preg_match_all(
'/<link[^>]*rel\s*=\s*["\']?alternate["\']?[^>]*?>/', $document->
getHtml(), $linkElements);
119 foreach($linkElements[0] as $linkElement)
121 $typeJson = (str_contains($linkElement, $this::OEMBED_TYPE_JSON));
122 $typeXml = (str_contains($linkElement, $this::OEMBED_TYPE_XML));
123 if($typeJson || $typeXml)
125 if(preg_match(
'/href=[\'"](.+?)[\'"]/', $linkElement, $attributes))
127 $this->metadataType = ($typeJson ?
'json' :
'xml');
170 $xml = new \CDataXML();
171 if($xml->LoadString($rawMetadata))
174 if(preg_match(
'/<\?xml[^>]+?encoding=[\'"](.+?)[\'"]\?>/', $rawMetadata,
$matches))
175 $this->metadataEncoding =
$matches[1];
177 $this->metadataEncoding =
'UTF-8';
180 $dom = $xml->GetTree();
181 $mainNode = $dom->elementsByName(
'oembed');
182 foreach($mainNode[0]->children as $node)
184 $result[$node->name] = $node->content;