Получить название из видео YouTube - PullRequest
27 голосов
/ 01 августа 2009

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

Спасибо.

Ответы [ 15 ]

57 голосов
/ 01 марта 2011

Самый простой способ получить информацию о видео на YouTube - это проанализировать строку, полученную из: http://youtube.com/get_video_info?video_id=XXXXXXXX

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

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

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

8 голосов
/ 01 августа 2009

Один из способов сделать это - получить видео с YouTube, как показано здесь

Затем извлеките заголовок из фида атомов, отправленного YouTube. Пример подачи показан здесь

7 голосов
/ 31 июля 2012

Использование API данных JavaScript:

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 .

5 голосов
/ 11 января 2014

Я считаю, что лучше всего использовать 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"
   }
  }
 ]
}
4 голосов
/ 25 октября 2012
// 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;
4 голосов
/ 20 мая 2011

С bash, wget и lynx:

#!/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"
3 голосов
/ 05 октября 2018

Hello In python3 Я нашел 2 способа

1) без API-ключа

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'])

пример результатов:

{'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) Использование Google API - требуется 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'])

пример результатов:

{'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
2 голосов
/ 31 января 2018

Я изложу процесс, описанный в документации YouTube API v3 .

  1. Сделайте / вход в учетную запись Google , которую хотите связать с использованием API YouTube.
  2. Создать новый проект в https://console.developers.google.com/apis/credentials.

    • В верхнем левом углу рядом с логотипом API Google перейдите на Выберите проект и Создать проект + .
    • Подождите мгновение до завершения создания.
  3. Создайте новый ключ API . Он понадобится вам для доступа к информации о видео в v3.

    • Если вы еще не там, перейдите в раздел «Учетные данные» под навигатором с левой стороны, API и службы> Учетные данные .
    • На вкладке Учетные данные нажмите Создать учетные данные и выберите Ключ API .
    • Скопируйте ключ API в буфер обмена.
  4. Предоставляя идентификатор видео и только что созданный ключ API , перейдите по этой ссылке, чтобы увидеть свою работу в действии: https://www.googleapis.com/youtube/v3/videos?id=<YOUR VIDEO ID HERE>&key=<YOUR API KEY HERE>%20&part=snippet (без угловых скобок)
    • Дополнительную информацию о том, к чему вы можете получить, смотрите здесь: https://developers.google.com/youtube/v3/getting-started#partial. Для удобства я скопирую один из их примеров здесь (Пример 4). Ключи fields и part в URL являются ключевыми.

Пример

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? .

2 голосов
/ 20 декабря 2017

Если приветствуется скрипт пакетной обработки python: я использовал BeautifulSoup для простого анализа заголовка из HTML, urllib для загрузки библиотек HTML и unicodecsv по порядку сохранить все символы из заголовка Youtube.

Единственное, что вам нужно сделать, это поместить csv с URL-адресом одного (именованного) столбца с URL-адресами видео Youtube в той же папке, что и скрипт, и назвать его yt-urls .csv и запустить скрипт. Вы получите файл yt-urls-title.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})
1 голос
/ 31 июля 2017

Вы можете использовать Json, чтобы получить всю информацию о видео

$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'};

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...