From f726b5e1051a4cf4bbd7b64bc15762a29f0be286 Mon Sep 17 00:00:00 2001 From: Eliot Berriot <contact@eliotberriot.com> Date: Thu, 21 Feb 2019 14:27:14 +0100 Subject: [PATCH] See #578: Added twitter:* meta tags to detect tracks and albums players automatically on more sites --- api/funkwhale_api/music/serializers.py | 9 +++++---- api/funkwhale_api/music/spa_views.py | 18 ++++++++++++++++++ api/tests/music/test_spa_views.py | 17 +++++++++++++++++ changes/changelog.d/578.enhancement | 1 + 4 files changed, 41 insertions(+), 4 deletions(-) create mode 100644 changes/changelog.d/578.enhancement diff --git a/api/funkwhale_api/music/serializers.py b/api/funkwhale_api/music/serializers.py index 192fc024c..99e3dc40c 100644 --- a/api/funkwhale_api/music/serializers.py +++ b/api/funkwhale_api/music/serializers.py @@ -387,6 +387,10 @@ class TrackActivitySerializer(activity_serializers.ModelSerializer): return "Audio" +def get_embed_url(type, id): + return settings.FUNKWHALE_EMBED_URL + "?type={}&id={}".format(type, id) + + class OembedSerializer(serializers.Serializer): format = serializers.ChoiceField(choices=["json"]) url = serializers.URLField() @@ -473,10 +477,7 @@ class OembedSerializer(serializers.Serializer): data[ "html" ] = '<iframe width="{}" height="{}" scrolling="no" frameborder="no" src="{}"></iframe>'.format( - data["width"], - data["height"], - settings.FUNKWHALE_EMBED_URL - + "?type={}&id={}".format(embed_type, embed_id), + data["width"], data["height"], get_embed_url(embed_type, embed_id) ) return data diff --git a/api/funkwhale_api/music/spa_views.py b/api/funkwhale_api/music/spa_views.py index e71612cae..351431d0f 100644 --- a/api/funkwhale_api/music/spa_views.py +++ b/api/funkwhale_api/music/spa_views.py @@ -6,6 +6,20 @@ from django.urls import reverse from funkwhale_api.common import utils from . import models +from . import serializers + + +def get_twitter_card_metas(type, id): + return [ + {"tag": "meta", "property": "twitter:card", "content": "player"}, + { + "tag": "meta", + "property": "twitter:player", + "content": serializers.get_embed_url(type, id), + }, + {"tag": "meta", "property": "twitter:player:width", "content": "600"}, + {"tag": "meta", "property": "twitter:player:height", "content": "400"}, + ] def library_track(request, pk): @@ -72,6 +86,8 @@ def library_track(request, pk): ), } ) + # twitter player is also supported in various software + metas += get_twitter_card_metas(type="track", id=obj.pk) return metas @@ -131,6 +147,8 @@ def library_album(request, pk): ), } ) + # twitter player is also supported in various software + metas += get_twitter_card_metas(type="album", id=obj.pk) return metas diff --git a/api/tests/music/test_spa_views.py b/api/tests/music/test_spa_views.py index 7761e313f..901c6fe43 100644 --- a/api/tests/music/test_spa_views.py +++ b/api/tests/music/test_spa_views.py @@ -3,6 +3,7 @@ import urllib.parse from django.urls import reverse from funkwhale_api.common import utils +from funkwhale_api.music import serializers def test_library_track(spa_html, no_api_auth, client, factories, settings): @@ -68,6 +69,14 @@ def test_library_track(spa_html, no_api_auth, client, factories, settings): ) ), }, + {"tag": "meta", "property": "twitter:card", "content": "player"}, + { + "tag": "meta", + "property": "twitter:player", + "content": serializers.get_embed_url("track", id=track.id), + }, + {"tag": "meta", "property": "twitter:player:width", "content": "600"}, + {"tag": "meta", "property": "twitter:player:height", "content": "400"}, ] metas = utils.parse_meta(response.content.decode()) @@ -122,6 +131,14 @@ def test_library_album(spa_html, no_api_auth, client, factories, settings): ) ), }, + {"tag": "meta", "property": "twitter:card", "content": "player"}, + { + "tag": "meta", + "property": "twitter:player", + "content": serializers.get_embed_url("album", id=album.id), + }, + {"tag": "meta", "property": "twitter:player:width", "content": "600"}, + {"tag": "meta", "property": "twitter:player:height", "content": "400"}, ] metas = utils.parse_meta(response.content.decode()) diff --git a/changes/changelog.d/578.enhancement b/changes/changelog.d/578.enhancement new file mode 100644 index 000000000..194ad2111 --- /dev/null +++ b/changes/changelog.d/578.enhancement @@ -0,0 +1 @@ +Added twitter:* meta tags to detect tracks and albums players automatically on more sites (#578) -- GitLab