Получить название из видео YouTube

Вы можете в некоторой степени стилизовать элементы опции.

Используя тэг * CSS, вы можете стилизовать параметры внутри поля, которое нарисовано системой.

Пример:

#ddlProducts *
{
 border-radius:15px;
 background-color:red;
}

Это будет выглядеть так:

enter image description here [/g0]

29
задан Naman 30 July 2016 в 14:51
поделиться

15 ответов

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

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

8
ответ дан Alex.Bullard 30 July 2016 в 14:51
поделиться

Самый простой способ получить информацию о видео на 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 в качестве идентификатора видео.

58
ответ дан Cruel 30 July 2016 в 14:51
поделиться

Использование 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 .

7
ответ дан sirLisko 30 July 2016 в 14:51
поделиться

С помощью 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"
4
ответ дан dropped 30 July 2016 в 14:51
поделиться
// 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
ответ дан glocsw 30 July 2016 в 14:51
поделиться

Если приветствуется сценарий пакетной обработки 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})
2
ответ дан Matěj M 30 July 2016 в 14:51
поделиться

Я считаю, что лучший способ - это использовать 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"
   }
  }
 ]
}
5
ответ дан abritez 30 July 2016 в 14:51
поделиться

Hello В python3 я основал 2 способа

1) без 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'])

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

{'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
3
ответ дан porto 30 July 2016 в 14:51
поделиться

Если вы знакомы с Java, попробуйте анализатор Jsoup.

Document document = Jsoup.connect("http://www.youtube.com/ABDCEF").get();
document.title();
0
ответ дан Sorter 30 July 2016 в 14:51
поделиться

Вот несколько кодов вырезки и вставки для ColdFusion:

http://trycf.com/gist/f296d14e456a7c925d23a1282daa0b90

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

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

1
ответ дан World's Funkiest Man 30 July 2016 в 14:51
поделиться

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

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

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

    • Если вы еще не там, перейдите в раздел «Учетные данные» в навигаторе с левой стороны, API и службы> Учетные данные .
    • На вкладке Credentials нажмите Create Credentials и выберите ключ 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
ответ дан t.y 30 July 2016 в 14:51
поделиться

Вы можете использовать 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'};

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

1
ответ дан Shahzaib Chadhar 30 July 2016 в 14:51
поделиться

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

$Playlist = ((Invoke-WebRequest "https://www.youtube.com/watch?v=HKkRbc6W6NA&list=PLz9M61O0WZqSUvHzPHVVC4IcqA8qe5K3r&
index=1").Links | Where {

Попробуйте, я получаю название и URL каждого видео в плейлисте, вы можете изменить этот код в соответствии с вашими требованиями. [110].class -match "playlist-video"}).href $Fname = ((Invoke-WebRequest "https://www.youtube.com/watch?v=HKkRbc6W6NA&list=PLz9M61O0WZqSUvHzPHVVC4IcqA8qe5K3r&ind ex=1").Links | Where {

Попробуйте, я получаю название и URL каждого видео в плейлисте, вы можете изменить этот код в соответствии с вашими требованиями. [110].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]) }

0
ответ дан Graham 30 July 2016 в 14:51
поделиться

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

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

Пример

0
ответ дан Stefan Reich 30 July 2016 в 14:51
поделиться

Аналогично Matej M, но более просто:

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)
0
ответ дан Daniel Lee 30 July 2016 в 14:51
поделиться
Другие вопросы по тегам:

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