Python Wagatail嵌入YouTube-防止相关视频显示

Python Wagatail嵌入YouTube-防止相关视频显示,python,django,wagtail,Python,Django,Wagtail,我需要确保相关视频不会出现在使用Wagtail构建的客户网站的youtube视频上。 他们目前都通过wagtailembeds_标记{%embed video.url%}使用内置的wagtailembeds功能 通常,我之前已经通过将GET参数'rel=0'附加到URL来完成这项工作。我曾尝试通过页面编辑器屏幕中的URL字段执行此操作,但它似乎在处理的某个阶段被剥离 目前我看不出有什么办法可以做到这一点?从ReadTheDocs项目的最新分支来看,似乎有一种方法可以很快定制oEmbed提供商,只

我需要确保相关视频不会出现在使用Wagtail构建的客户网站的youtube视频上。 他们目前都通过wagtailembeds_标记{%embed video.url%}使用内置的wagtailembeds功能

通常,我之前已经通过将GET参数'rel=0'附加到URL来完成这项工作。我曾尝试通过页面编辑器屏幕中的URL字段执行此操作,但它似乎在处理的某个阶段被剥离

目前我看不出有什么办法可以做到这一点?从ReadTheDocs项目的最新分支来看,似乎有一种方法可以很快定制oEmbed提供商,只是我现在需要一个解决方案


提前感谢您的帮助

我通过实现自定义模板标记解决了这个问题。这可能是一个快速且有点脏的解决方案(定制提供者可能是官方的方式),但它可以工作,这对我来说已经足够了

用户插入一个常规URL。如果URL是针对Youtube或Vimeo的,则自定义模板标记会处理该URL。否则,模板将使用默认的Wagtail提供程序

项目/模板标签/自定义模板标签。py:

import re
from django import template

register = template.Library()

@register.filter
def get_embed_url_with_parameters(url):
    if 'youtube.com' in url or 'youtu.be' in url:
        regex = r"(?:https:\/\/)?(?:www\.)?(?:youtube\.com|youtu\.be)\/(?:watch\?v=)?(.+)"  # Get video id from URL
        embed_url = re.sub(regex, r"https://www.youtube.com/embed/\1", url)                 # Append video id to desired URL
        embed_url_with_parameters = embed_url + '?rel=0'                                    # Add additional parameters
        return embed_url_with_parameters
    elif 'vimeo.com' in url:
        embed_url = url.replace('vimeo.com', 'player.vimeo.com/video')
        embed_url_with_parameters = embed_url + '?loop=0&title=0&byline=0&portrait=0'
        return embed_url_with_parameters
    else:
        return None
{% load wagtailcore_tags %}
{% load wagtailembeds_tags %}
{% load custom_template_filters %}


{% with value.embed.url as regular_url %}
    {% with regular_url|get_embed_url_with_parameters as embed_url %}

        <div class="container">
            <div class="block-description cvast-embed cvast-spacer-top">
                <div align="center">
                    <h5>{{ value.title }}</h5>
                    {% if embed_url is None %}
                        {% embed regular_url %}
                    {% else %}
                        <iframe src="{{ embed_url }}" frameborder="0" allowfullscreen></iframe>
                    {% endif %}
                </div>
            </div>
        </div>

    {% endwith %}
{% endwith %}
from wagtail.wagtailcore.models import Page
from wagtail.wagtailcore.blocks import StructBlock
from wagtail.wagtailembeds.blocks import EmbedBlock
from wagtail.wagtailadmin.edit_handlers import FieldPanel

class EmbedVideoBlock(StructBlock):
    embed = EmbedBlock()

    class Meta:
        template = "blocks/embed_video_block.htm"

class YourPage(Page):
    video = EmbedVideoBlock()
    content_panels = Page.content_panels + [
        FieldPanel('video'),
    ]
/project/templates/video\u embed.htm:

import re
from django import template

register = template.Library()

@register.filter
def get_embed_url_with_parameters(url):
    if 'youtube.com' in url or 'youtu.be' in url:
        regex = r"(?:https:\/\/)?(?:www\.)?(?:youtube\.com|youtu\.be)\/(?:watch\?v=)?(.+)"  # Get video id from URL
        embed_url = re.sub(regex, r"https://www.youtube.com/embed/\1", url)                 # Append video id to desired URL
        embed_url_with_parameters = embed_url + '?rel=0'                                    # Add additional parameters
        return embed_url_with_parameters
    elif 'vimeo.com' in url:
        embed_url = url.replace('vimeo.com', 'player.vimeo.com/video')
        embed_url_with_parameters = embed_url + '?loop=0&title=0&byline=0&portrait=0'
        return embed_url_with_parameters
    else:
        return None
{% load wagtailcore_tags %}
{% load wagtailembeds_tags %}
{% load custom_template_filters %}


{% with value.embed.url as regular_url %}
    {% with regular_url|get_embed_url_with_parameters as embed_url %}

        <div class="container">
            <div class="block-description cvast-embed cvast-spacer-top">
                <div align="center">
                    <h5>{{ value.title }}</h5>
                    {% if embed_url is None %}
                        {% embed regular_url %}
                    {% else %}
                        <iframe src="{{ embed_url }}" frameborder="0" allowfullscreen></iframe>
                    {% endif %}
                </div>
            </div>
        </div>

    {% endwith %}
{% endwith %}
from wagtail.wagtailcore.models import Page
from wagtail.wagtailcore.blocks import StructBlock
from wagtail.wagtailembeds.blocks import EmbedBlock
from wagtail.wagtailadmin.edit_handlers import FieldPanel

class EmbedVideoBlock(StructBlock):
    embed = EmbedBlock()

    class Meta:
        template = "blocks/embed_video_block.htm"

class YourPage(Page):
    video = EmbedVideoBlock()
    content_panels = Page.content_panels + [
        FieldPanel('video'),
    ]

您是否尝试过
{%embed video.url | add:'&rel=0%}
?很遗憾,这不起作用。