当前位置: 首页 > 知识库问答 >
问题:

Python(Django)-将post中的URL转换为嵌入的YouTube IFrame

商兴朝
2023-03-14

基本上,我试图实现的是在帖子中找到URL,例如,如果我发布以下内容:

Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
https://www.youtube.com/watch?v=example 

它将是这样的:Lorem ipsum dolor sit amet,adipiscing Elite,sed do eiusmod Temporal Incidedut ut Labor and dolore magna aliqua。

models.py:

from django.db import models

class NewsFeed_Articles(models.Model):
    title = models.CharField(max_length = 120) 
    post = models.TextField()
    date = models.DateTimeField()

def __str__(self):
    return self.title

post.html:

{% extends "Feed/wrapper.html" %}

{% block content %}

  <div class="card">
  <h2 class="text-info">{{newsfeed_articles.title}}</h2>
  <h6 class="text-info">{{newsfeed_articles.date|date:"d-m-Y в H:i:s"}}</h6>
  <p>{{newsfeed_articles.post|safe|linebreaks}}<p>
  <div class="fakeimg" style="height:200px;">Image</div>
  </div>

{% endblock %}

共有1个答案

路阳华
2023-03-14

使用以下代码将YouTube URL转换为YouTube嵌入:

import re

def convert_ytframe(text):
  _yt = re.compile(r'(https?://)?(www\.)?((youtu\.be/)|(youtube\.com/watch/?\?v=))([A-Za-z0-9-_]+)', re.I)
  _frame_format = '<iframe width="560" height="315" src="https://www.youtube.com/embed/{0}" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>'
  
  def replace(match):
    groups = match.groups()
    return _frame_format.format(groups[5])
  return _yt.sub(replace, text)

下面是一个您可以自己测试的工作示例:repl.it/@themisir/aromaticavaciousmarketing
另外,您可以在这里测试正则表达式:regex101.com/r/97yhSH/1

代码被简化了。

import re

yt_link = re.compile(r'(https?://)?(www\.)?((youtu\.be/)|(youtube\.com/watch/?\?v=))([A-Za-z0-9-_]+)', re.I)
yt_embed = '<iframe width="560" height="315" src="https://www.youtube.com/embed/{0}" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>'

def convert_ytframe(text):
  return yt_link.sub(lambda match: yt_embed.format(match.groups()[5]), text)
 类似资料:
  • 问题内容: 我该如何打开一个列表,例如: 进入列表列表,例如: 即我想将有序元素分组在列表中,并将其保留在有序列表中。我怎样才能做到这一点? 谢谢 问题答案: 假设data_list的长度是三的倍数

  • 问题内容: 我正在寻找一种优雅的方式来获取数据,该数据使用具有一些嵌套dict和列表(例如javascript样式对象语法)的dict进行属性访问。 例如: 应该以这种方式访问​​: 我认为,没有递归是不可能的,但是获得字典对象样式的一种好方法是什么? 问题答案: 更新:在Python 2.6及更高版本中,请考虑namedtuple数据结构是否满足你的需求: 备选方案(原始答案内容)为: 然后,你

  • 问题内容: 我似乎找不到此问题的答案。如何在JavaScript中将URL参数字符串转换为JSON?我的意思是问是否有像这样的内置功能或可以完成这项工作的单线? 例: => 问题答案: 您可以创建一个将返回JSON对象的方法 演示:http://jsfiddle.net/jAGN5/

  • 我似乎找不到这个问题的答案。如何在JavaScript中将URL参数字符串转换为JSON?我的意思是问是否有这样的内置函数或一行程序可以完成这项工作? =>

  • 我正在尝试将一个MATLAB实现转换为一个Python3实现。我发现一个函数spdiags(),我不理解,也不知道如何将它翻译成Python3。 有关该函数的MATLAB文档请参见:http://www.mathworks.com/help/MATLAB/ref/spdiags.html 有关同名函数的Scipy文档如下:http://docs.Scipy.org/doc/Scipy/refere

  • 我向我的flask应用所在的服务器发出了python post请求。它运行良好,我能够获得所需的数据。 但我想用POSTMAN测试API。我无法做到这一点,因为在某种程度上我对邮递员并不熟悉。 下面是我的python代码。 我正在努力解决这样一个问题:我试图发布到服务器上的数据和文件应该是原始json还是表单数据,或者是正文的x-www-form-urlencoded部分。还有实际的结构应该是什么