Вопрос по youtube – Получить название из видео YouTube

25

Я хочу извлечьTitle видео YouTube. Как я могу это сделать?

Благодарю.

Извлечь откуда? Zed
каждый раз, когда вы открываете YouTube, под заголовком отображается заголовок видео webkul
Смотрите также:stackoverflow.com/questions/2068344/… Salman A
примите ответ, если он решит вашу проблему. Reddy

Ваш Ответ

15   ответов
8

как показаноВот

Затем извлеките заголовок из канала Atom, отправленного YouTube. Образец подачи показанВот

v2 API является устаревшим. Используйте вместо v3 -developers.google.com/youtube/v3
1

python3 я основал 2 пути

1) without API KEY

import urllib.request
import json
import urllib
import pprint

#change to yours VideoID or change url inparams
VideoID = "SZj6rAYkYOg" 

params = {"format": "json", "url": "https://www.youtube.com/watch?v=%s" % VideoID}
url = "https://www.youtube.com/oembed"
query_string = urllib.parse.urlencode(params)
url = url + "?" + query_string

with urllib.request.urlopen(url) as response:
    response_text = response.read()
    data = json.loads(response_text.decode())
    pprint.pprint(data)
    print(data['title'])

example results:

{'author_name': 'Google Developers',
 'author_url': 'https://www.youtube.com/user/GoogleDevelopers',
 'height': 270,
 'html': '<iframe width="480" height="270" '
         'src="https://www.youtube.com/embed/SZj6rAYkYOg?feature=oembed" '
         'frameborder="0" allow="autoplay; encrypted-media" '
         'allowfullscreen></iframe>',
 'provider_name': 'YouTube',
 'provider_url': 'https://www.youtube.com/',
 'thumbnail_height': 360,
 'thumbnail_url': 'https://i.ytimg.com/vi/SZj6rAYkYOg/hqdefault.jpg',
 'thumbnail_width': 480,
 'title': 'Google I/O 101:  Google APIs: Getting Started Quickly',
 'type': 'video',
 'version': '1.0',
 'width': 480}
Google I/O 101:  Google APIs: Getting Started Quickly

2) Using Google API - required APIKEY

import urllib.request
import json
import urllib
import pprint

APIKEY = "YOUR_GOOGLE_APIKEY"
VideoID = "YOUR_VIDEO_ID"

params = {'id': VideoID, 'key': APIKEY,
          'fields': 'items(id,snippet(channelId,title,categoryId),statistics)',
          'part': 'snippet,statistics'}

url = 'https://www.googleapis.com/youtube/v3/videos'

query_string = urllib.parse.urlencode(params)
url = url + "?" + query_string

with urllib.request.urlopen(url) as response:
    response_text = response.read()
    data = json.loads(response_text.decode())
    pprint.pprint(data)
    print("TITLE: %s " % data['items'][0]['snippet']['title'])

example results:

{'items': [{'id': 'SZj6rAYkYOg',
            'snippet': {'categoryId': '28',
                        'channelId': 'UC_x5XG1OV2P6uZZ5FSM9Ttw',
                        'title': 'Google I/O 101:  Google APIs: Getting '
                                 'Started Quickly'},
            'statistics': {'commentCount': '36',
                           'dislikeCount': '20',
                           'favoriteCount': '0',
                           'likeCount': '418',
                           'viewCount': '65783'}}]}
TITLE: Google I/O 101:  Google APIs: Getting Started Quickly
1

http://trycf.com/gist/f296d14e456a7c925d23a1282daa0b90

Он работает на CF9 (и, вероятно, более ранних версиях) с использованием YouTube API v3, для которого требуется ключ API.

Я оставил там несколько комментариев и ссылок, для тех, кто хочет копать глубже. Надеюсь, это кому-нибудь поможет.

4

#!/bin/bash
read -e -p "Youtube address? " address
page=$(wget "$address" -O - 2>/dev/null)
title=$(echo "$page" | grep "   - ")
title="$(lynx --dump -force-html <(echo "<html><body>
$title
</body></html>")| grep "  - ")"
title="${title/*   - /}"
echo "$title"
7

var loadInfo = function (videoId) {
    var gdata = document.createElement("script");
    gdata.src = "http://gdata.youtube.com/feeds/api/videos/" + videoId + "?v=2&alt=jsonc&callback=storeInfo";
    var body = document.getElementsByTagName("body")[0];
    body.appendChild(gdata);
};

var storeInfo = function (info) {
    console.log(info.data.title);
};

Тогда вам просто нужно позвонитьloadInfo(videoId).

Более подробная информация доступна наAPI документация.

Это больше не работает :(
YouTube закрыл старые API. Посмотрите здесь для получения дополнительной информации о новой версииdevelopers.google.com/youtube/v3/getting-started.
2

BeautifulSoup легко разобрать заголовок из HTML,urllib скачать HTML иunicodecsv библиотеки, чтобы сохранить все символы из заголовка Youtube.

Единственное, что вам нужно сделать, это поместить CSV сsingle (named) column url с URL-адресами видео Youtube в той же папке, что и сценарий, и назовите егоyt-urls.csv и запустить скрипт. Вы получите файлyt-urls-titles.csv содержащий URL-адреса и его названия.

#!/usr/bin/python

from bs4 import BeautifulSoup
import urllib
import unicodecsv as csv

with open('yt-urls-titles.csv', 'wb') as f:
    resultcsv = csv.DictWriter(f, delimiter=';', quotechar='"',fieldnames=['url','title'])
    with open('yt-urls.csv', 'rb') as f:
        inputcsv = csv.DictReader(f, delimiter=';', quotechar='"')
        resultcsv.writeheader()
        for row in inputcsv:
            soup = BeautifulSoup(urllib.urlopen(row['url']).read(), "html.parser")
            resultcsv.writerow({'url': row['url'],'title': soup.title.string})
0

import requests
from bs4 import BeautifulSoup


def get_video_name(id: str):
    """
    Return the name of the video as it appears on YouTube, given the video id.
    """
    r = requests.get(f'https://youtube.com/watch?v={id}')
    r.raise_for_status()
    soup = BeautifulSoup(r.content, "lxml")
    return soup.title.string


if __name__ == '__main__':
    js = get_video_name("RJqimlFcJsM")
    print('\n\n')
    print(js)
54

изировать строку, полученную из:http://youtube.com/get_video_info?video_id=XXXXXXXX

Используя что-то вроде PHPparse_str ()Вы можете получить хороший массив почти всего о видео:

$content = file_get_contents("http://youtube.com/get_video_info?video_id=".$id);
parse_str($content, $ytarr);
echo $ytarr['title'];

Это напечатает заголовок видео, используя $ id в качестве идентификатора видео.

помог мне сегодня :) +1
Спасибо @Cruel, это просто необходимая мне информация :)
Этот ответ должен быть помечен как "принятый"
Этот метод очень удобен. Есть ли официальная документация по этому методу? Благодарю.
Насколько я могу судить, это не так, что наводит меня на мысль, что на самом деле это не так.the best метод, поскольку get_video_info вполне может умереть, как и get_video. Однако, используя этот метод, вы можете получить доступ к некоторой информации, не предоставленной в официальном API (например, URL-адрес прямого потока для загрузки видео с YouTube, например, предоставляемый get_video). Краткое решение: если официальный API YouTube (как ответил здесь Алекс Буллард) не предоставляет нужную информацию, попробуйте получить get_video_info
4
// This is the youtube video URL: http://www.youtube.com/watch?v=nOHHta68DdU
$code = "nOHHta68DdU";
// Get video feed info (xml) from youtube, but only the title | http://php.net/manual/en/function.file-get-contents.php
$video_feed = file_get_contents("http://gdata.youtube.com/feeds/api/videos?v=2&q=".$code."&max-results=1&fields=entry(title)&prettyprint=true");
// xml to object | http://php.net/manual/en/function.simplexml-load-string.php
$video_obj = simplexml_load_string($video_feed);
// Get the title string to a variable
$video_str = $video_obj->entry->title;
// Output
echo $video_str;
Хорошо спасибо. Я добавил комментарии ... :)
Будет лучше добавить комментарий к вашему коду.
5

что лучший способ - это использовать gdata youTube, а затем получать информацию из XML, который возвращается

http://gdata.youtube.com/feeds/api/videos/6_Ukfpsb8RI

Обновить: Теперь есть более новый API, который вы должны использовать вместо

https://developers.google.com/youtube/v3/getting-started

URL: https://www.googleapis.com/youtube/v3/videos?id=7lCDEYXw3mM&key=YOUR_API_KEY
     &fields=items(id,snippet(channelId,title,categoryId),statistics)&part=snippet,statistics

Description: This example modifies the fields parameter from example 3 so that in the API response, each video resource's snippet object only includes the channelId, title, and categoryId properties.

API response:

{
 "videos": [
  {
   "id": "7lCDEYXw3mM",
   "snippet": {
    "channelId": "UC_x5XG1OV2P6uZZ5FSM9Ttw",
    "title": "Google I/O 101: Q&A On Using Google APIs",
    "categoryId": "28"
   },
   "statistics": {
    "viewCount": "3057",
    "likeCount": "25",
    "dislikeCount": "0",
    "favoriteCount": "17",
    "commentCount": "12"
   }
  }
 ]
}
0

я получаю название и URL каждого видео в плейлисте, вы можете изменить этот код в соответствии с вашими требованиями.

$Playlist = ((Invoke-WebRequest "https://www.youtube.com/watch?v=HKkRbc6W6NA&list=PLz9M61O0WZqSUvHzPHVVC4IcqA8qe5K3r&
index=1").Links | Where {$_.class -match "playlist-video"}).href
$Fname = ((Invoke-WebRequest "https://www.youtube.com/watch?v=HKkRbc6W6NA&list=PLz9M61O0WZqSUvHzPHVVC4IcqA8qe5K3r&ind
ex=1").Links | Where {$_.class -match "playlist-video"}).outerText
$FinalText=""
For($i=0;$i -lt $playlist.Length;$i++)
{
Write-Output("'"+($Fname[$i].split("|")[0]).split("|")[0]+"'+"+"https://www.youtube.com"+$Playlist[$i])
}
1

$jsonURL = file_get_contents("https://www.googleapis.com/youtube/v3/videos?id={Your_Video_ID_Here}&key={Your_API_KEY}8&part=snippet");
$json = json_decode($jsonURL);

$vtitle = $json->{'items'}[0]->{'snippet'}->{'title'};
$vdescription = $json->{'items'}[0]->{'snippet'}->{'description'};
$vvid = $json->{'items'}[0]->{'id'};
$vdate = $json->{'items'}[0]->{'snippet'}->{'publishedAt'};
$vthumb = $json->{'items'}[0]->{'snippet'}->{'thumbnails'}->{'high'}->{'url'};

Я надеюсь, что это решит вашу проблему.

2

Документация YouTube API v3.

Make a / login to the Google account that you want to be associated with your YouTube API use.

Create a new project at https://console.developers.google.com/apis/credentials.

On the upper left, next to the Google APIs logo, go to Select a project and Create project +. Wait a moment for the creation to finish.

Make a new API key. You'll need it to access video info under v3.

If you're not already there, go to Credentials under the navigator on the left hand side, APIs and Services > Credentials. Under the Credentials tab, click Create Credentials and select API key. Copy the API key to your clipboard. Providing a video ID and your newly created API key, go to this link to see your work in action: https://www.googleapis.com/youtube/v3/videos?id=<YOUR VIDEO ID HERE>&key=<YOUR API KEY HERE>%20&part=snippet (no angle brackets) For more info on what you can access, see here: https://developers.google.com/youtube/v3/getting-started#partial. For convenience, I'll copy one of their examples here (Example 4). The fields and part parameters in the URL are key here. Example

URL ну, по какому URL вы можете перейти через браузер, чтобы проверить это. Взамен вы должны получить то, что находится подAPI response:.

URL: https://www.googleapis.com/youtube/v3/videos?id=7lCDEYXw3mM&key=YOUR_API_KEY
     &fields=items(id,snippet(channelId,title,categoryId),statistics)&part=snippet,statistics

Description: This example modifies the fields parameter from example 3
             so that in the API response, each video resource's snippet
             object only includes the channelId, title,
             and categoryId properties.

API response:

{
 "videos": [
  {
   "id": "7lCDEYXw3mM",
   "snippet": {
    "channelId": "UC_x5XG1OV2P6uZZ5FSM9Ttw",
    "title": "Google I/O 101: Q&A On Using Google APIs",
    "categoryId": "28"
   },
   "statistics": {
    "viewCount": "3057",
    "likeCount": "25",
    "dislikeCount": "0",
    "favoriteCount": "17",
    "commentCount": "12"
   }
  }
 ]
}

Это дает вам видео информацию в.json формат файла. Если ваш проект должен получить доступ к этой информации через JavaScript, вы можете перейти сюда:Как получить JSON из URL в Javascript?.

0

JavaX теперь поставляется с этой функцией. Например, показ миниатюры и заголовка видео состоит из двух строк:

https://www.youtube.com/watch?v=4If_vFZdFTk"));
showImage(map.get("title"), loadImage(map.get("thumbnail_url")));

пример

0

Document document = Jsoup.connect("http://www.youtube.com/ABDCEF").get();
document.title();

Похожие вопросы