Yelp
Yelp

Reputation: 75

Convert YouTube link into an embed link

I am using Python and Flask, and I have some YouTube URLs I need to convert to their embed versions. For example, this:

https://www.youtube.com/watch?v=X3iFhLdWjqc

has to be converted into this:

https://www.youtube.com/embed/X3iFhLdWjqc

Should I use Regexp, or is there a Flask method to convert the URLs?

Upvotes: 2

Views: 6485

Answers (3)

Pedro Lobito
Pedro Lobito

Reputation: 98921

You can try this:

import re

videoUrl = "https://www.youtube.com/watch?v=X3iFhLdWjqc" 
embedUrl = re.sub(r"(?ism).*?=(.*?)$", r"https://www.youtube.com/embed/\1", videoUrl )
print (embedUrl)

Output:

https://www.youtube.com/embed/X3iFhLdWjqc

Demo

Upvotes: 1

Eman Abbas
Eman Abbas

Reputation: 51

There are two types of youtube links:

http://www.youtube.com/watch?v=xxxxxxxxxxx

or

http://youtu.be/xxxxxxxxxxx

Use this function it will work with the 2 kinds of youtube links.

import re
def embed_url(video_url):
        regex = r"(?:https:\/\/)?(?:www\.)?(?:youtube\.com|youtu\.be)\/(?:watch\?v=)?(.+)"

        return re.sub(regex, r"https://www.youtube.com/embed/\1",video_url)

Upvotes: 5

ASCIIThenANSI
ASCIIThenANSI

Reputation: 893

Assuming your URLs are just strings, you don't need regexes or special Flask functions to do it.
This code will replace all YouTube URLs with the embedded versions, based off of how you said it should be handled:

url = "https://youtube.com/watch?v=TESTURLNOTTOBEUSED"
url = url.replace("watch?v=", "embed/")

All you have to do is replace url with whatever variable you store the URL in.
To do this for a list, use:

new_url_list = list()
for address in old_url_list:
    new_address = address.replace("watch?v=", "embed/")
    new_url_list.append(new_address)

old_url_list = new_url_list

where old_url_list is the list which your URLs are included in.

Upvotes: 11

Related Questions