diff --git a/api/oembed.php b/api/oembed.php index 29a533b..df0f4b8 100644 --- a/api/oembed.php +++ b/api/oembed.php @@ -18,7 +18,7 @@ class OembedHandler extends BaseHandler if (!$requestUrl || $relativePath === '/') $this->sendResponse($this->buildResponse( $globals['site_name'], $globals['url'], - $globals['avatar'], + $globals['metadata']['open_graph_image'], $globals )); @@ -66,7 +66,7 @@ class OembedHandler extends BaseHandler $this->sendResponse($this->buildResponse( $title, $relativePath, - $globals['avatar'], + $globals['metadata']['open_graph_image'], $globals )); } diff --git a/package-lock.json b/package-lock.json index e7eb86a..da2d3d8 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "coryd.dev", - "version": "7.0.2", + "version": "7.0.3", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "coryd.dev", - "version": "7.0.2", + "version": "7.0.3", "license": "MIT", "dependencies": { "minisearch": "^7.1.2", diff --git a/package.json b/package.json index 27dbf26..8a9fffa 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "coryd.dev", - "version": "7.0.2", + "version": "7.0.3", "description": "The source for my personal site. Built using 11ty (and other tools).", "type": "module", "engines": { diff --git a/queries/views/feeds/oembed.sql b/queries/views/feeds/oembed.sql index 35acc32..fe2da3e 100644 --- a/queries/views/feeds/oembed.sql +++ b/queries/views/feeds/oembed.sql @@ -5,23 +5,16 @@ WITH oembed_data AS ( p.url::TEXT AS url, p.title AS title, p.description AS description, - CASE - WHEN df.filename_disk IS NOT NULL AND df.filename_disk != '' AND df.filename_disk != '/' THEN df.filename_disk - ELSE (SELECT g.avatar FROM optimized_globals g LIMIT 1) - END AS image_url, + COALESCE(NULLIF(p.metadata->>'open_graph_image', ''), (SELECT metadata->>'open_graph_image' FROM optimized_globals LIMIT 1)) AS image_url, p.date AS content_date FROM optimized_posts p - LEFT JOIN directus_files df ON p.image = df.filename_disk UNION ALL SELECT 'book' AS type, b.url::TEXT AS url, b.title AS title, b.description AS description, - CASE - WHEN b.image IS NOT NULL AND b.image != '' THEN b.image - ELSE (SELECT g.avatar FROM optimized_globals g LIMIT 1) - END AS image_url, + COALESCE(NULLIF(b.metadata->>'open_graph_image', ''), (SELECT metadata->>'open_graph_image' FROM optimized_globals LIMIT 1)) AS image_url, b.date_finished AS content_date FROM optimized_books b UNION ALL @@ -30,10 +23,7 @@ WITH oembed_data AS ( ar.url::TEXT AS url, ar.name AS title, ar.description AS description, - CASE - WHEN ar.image IS NOT NULL AND ar.image != '' THEN ar.image - ELSE (SELECT g.avatar FROM optimized_globals g LIMIT 1) - END AS image_url, + COALESCE(NULLIF(ar.metadata->>'open_graph_image', ''), (SELECT metadata->>'open_graph_image' FROM optimized_globals LIMIT 1)) AS image_url, CURRENT_TIMESTAMP AS content_date FROM optimized_artists ar UNION ALL @@ -42,34 +32,16 @@ WITH oembed_data AS ( g.url::TEXT AS url, g.name AS title, g.description AS description, - CASE - WHEN top_artist.image IS NOT NULL AND top_artist.image != '' THEN top_artist.image - ELSE (SELECT g.avatar FROM optimized_globals g LIMIT 1) - END AS image_url, + COALESCE(NULLIF(g.metadata->>'open_graph_image', ''), (SELECT metadata->>'open_graph_image' FROM optimized_globals LIMIT 1)) AS image_url, CURRENT_TIMESTAMP AS content_date FROM optimized_genres g - LEFT JOIN LATERAL ( - SELECT - CASE - WHEN df.filename_disk IS NOT NULL AND df.filename_disk != '' THEN CONCAT('/', df.filename_disk) - ELSE (SELECT avatar FROM optimized_globals LIMIT 1) - END AS image - FROM artists a - LEFT JOIN directus_files df ON a.art = df.id - WHERE a.genres = g.id - ORDER BY a.total_plays DESC - LIMIT 1 - ) top_artist ON true UNION ALL SELECT 'show' AS type, s.url::TEXT AS url, s.title AS title, s.description AS description, - CASE - WHEN s.image IS NOT NULL AND s.image != '' THEN s.image - ELSE (SELECT g.avatar FROM optimized_globals g LIMIT 1) - END AS image_url, + COALESCE(NULLIF(s.metadata->>'open_graph_image', ''), (SELECT metadata->>'open_graph_image' FROM optimized_globals LIMIT 1)) AS image_url, s.last_watched_at AS content_date FROM optimized_shows s UNION ALL @@ -78,10 +50,7 @@ WITH oembed_data AS ( m.url::TEXT AS url, m.title AS title, m.description AS description, - CASE - WHEN m.image IS NOT NULL AND m.image != '' THEN m.image - ELSE (SELECT g.avatar FROM optimized_globals g LIMIT 1) - END AS image_url, + COALESCE(NULLIF(m.metadata->>'open_graph_image', ''), (SELECT metadata->>'open_graph_image' FROM optimized_globals LIMIT 1)) AS image_url, m.last_watched AS content_date FROM optimized_movies m ) diff --git a/queries/views/media/music/genres.sql b/queries/views/media/music/genres.sql index 8d16935..e754023 100644 --- a/queries/views/media/music/genres.sql +++ b/queries/views/media/music/genres.sql @@ -96,7 +96,18 @@ SELECT LEFT JOIN posts p ON pg.posts_id = p.id LEFT JOIN directus_files df_post ON p.image = df_post.id WHERE pg.genres_id = g.id - ) AS posts + ) AS posts, + json_build_object( + 'open_graph_image', ( + SELECT CONCAT('/', df_artist.filename_disk) + FROM artists a + LEFT JOIN directus_files df_artist ON a.art = df_artist.id + WHERE a.genres = g.id + AND df_artist.filename_disk IS NOT NULL AND df_artist.filename_disk != '' + ORDER BY a.total_plays DESC + LIMIT 1 + ) + ) AS metadata FROM genres g CROSS JOIN optimized_globals globals ORDER BY g.id ASC; diff --git a/src/includes/fetchers/genre.php.liquid b/src/includes/fetchers/genre.php.liquid index 889d9ac..239e33c 100644 --- a/src/includes/fetchers/genre.php.liquid +++ b/src/includes/fetchers/genre.php.liquid @@ -20,7 +20,7 @@ htmlspecialchars(strip_tags($genre["description"]), ENT_QUOTES, "UTF-8"), 250 ); - $ogImage = htmlspecialchars($genre["artists"][0]["metadata"]["open_graph_image"] ?? "", ENT_QUOTES, "UTF-8"); + $ogImage = htmlspecialchars($genre["metadata"]["open_graph_image"] ?? "", ENT_QUOTES, "UTF-8"); $fullUrl = "https://www.coryd.dev" . $requestUri; $oembedUrl = "https://www.coryd.dev/oembed" . $requestUri;