See #578: Added twitter:* meta tags to detect tracks and albums players automatically on more sites

merge-requests/626/head
Eliot Berriot 2019-02-21 14:27:14 +01:00
rodzic a6f12d3608
commit f726b5e105
Nie znaleziono w bazie danych klucza dla tego podpisu
ID klucza GPG: DD6965E2476E5C27
4 zmienionych plików z 41 dodań i 4 usunięć

Wyświetl plik

@ -387,6 +387,10 @@ class TrackActivitySerializer(activity_serializers.ModelSerializer):
return "Audio" return "Audio"
def get_embed_url(type, id):
return settings.FUNKWHALE_EMBED_URL + "?type={}&id={}".format(type, id)
class OembedSerializer(serializers.Serializer): class OembedSerializer(serializers.Serializer):
format = serializers.ChoiceField(choices=["json"]) format = serializers.ChoiceField(choices=["json"])
url = serializers.URLField() url = serializers.URLField()
@ -473,10 +477,7 @@ class OembedSerializer(serializers.Serializer):
data[ data[
"html" "html"
] = '<iframe width="{}" height="{}" scrolling="no" frameborder="no" src="{}"></iframe>'.format( ] = '<iframe width="{}" height="{}" scrolling="no" frameborder="no" src="{}"></iframe>'.format(
data["width"], data["width"], data["height"], get_embed_url(embed_type, embed_id)
data["height"],
settings.FUNKWHALE_EMBED_URL
+ "?type={}&id={}".format(embed_type, embed_id),
) )
return data return data

Wyświetl plik

@ -6,6 +6,20 @@ from django.urls import reverse
from funkwhale_api.common import utils from funkwhale_api.common import utils
from . import models 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): 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 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 return metas

Wyświetl plik

@ -3,6 +3,7 @@ import urllib.parse
from django.urls import reverse from django.urls import reverse
from funkwhale_api.common import utils from funkwhale_api.common import utils
from funkwhale_api.music import serializers
def test_library_track(spa_html, no_api_auth, client, factories, settings): 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()) 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()) metas = utils.parse_meta(response.content.decode())

Wyświetl plik

@ -0,0 +1 @@
Added twitter:* meta tags to detect tracks and albums players automatically on more sites (#578)