diff --git a/src/Adapters/Tidal/Detectors/Code.php b/src/Adapters/Tidal/Detectors/Code.php new file mode 100644 index 00000000..41e69fe5 --- /dev/null +++ b/src/Adapters/Tidal/Detectors/Code.php @@ -0,0 +1,36 @@ +fallback(); + } + + private function fallback(): ?EmbedCode + { + $uri = $this->extractor->getUri(); + + if (!preg_match('{^/playlist/(?P[0-9a-fA-F\-]{36})$}', $uri->getPath(), $matches)) { + return NULL; + } + + $html = html('iframe', [ + 'src' => 'https://embed.tidal.com/playlists/' . $matches['uuid'] . '?disableAnalytics=true', + 'allow' => 'encrypted-media', + 'allowfullscreen' => 'allowfullscreen', + 'frameborder' => '0', + 'style' => 'width:100%;height:352px', + ]); + + return new EmbedCode($html, null, 352); + } +} diff --git a/src/Adapters/Tidal/Detectors/ProviderName.php b/src/Adapters/Tidal/Detectors/ProviderName.php new file mode 100644 index 00000000..4809cad6 --- /dev/null +++ b/src/Adapters/Tidal/Detectors/ProviderName.php @@ -0,0 +1,14 @@ + new Detectors\Code($this), + 'providerName' => new Detectors\ProviderName($this), + ]; + } +} diff --git a/src/ExtractorFactory.php b/src/ExtractorFactory.php index 55624f6c..fd087817 100644 --- a/src/ExtractorFactory.php +++ b/src/ExtractorFactory.php @@ -31,6 +31,7 @@ class ExtractorFactory 'bandcamp.com' => Adapters\Bandcamp\Extractor::class, 'twitter.com' => Adapters\Twitter\Extractor::class, 'x.com' => Adapters\Twitter\Extractor::class, + 'tidal.com' => Adapters\Tidal\Extractor::class, ]; private array $customDetectors = []; private array $settings;