2016-02-23 34 views
0

我正在尋找一種不使用API​​來獲得YouTube視頻時長的方法。檢查他們的HTML源代碼,我看到有一個名爲ytplayer.config的javascript var(帶有關於視頻的信息的JSON)。我怎樣才能讓JSON在腳本中解析?從YouTube網址中檢索JSON

謝謝

編輯。這是變種

ytplayer.config = { 
    "assets": { 
     "js": "\/\/s.ytimg.com\/yts\/jsbin\/player-es_MX-vfl0Fpy-X\/base.js", 
     "css": "\/\/s.ytimg.com\/yts\/cssbin\/www-player-2x-webp-vflCn1Mkc.css" 
    }, 

    ... 
    ... 

    "args": { 
     "vm": "CAEQAA", 
     "cl": "115273808", 
     "iv_invideo_url": "https:\/\/www.youtube.com\/annotations_invideo?cap_hist=1\u0026video_id=tRY6WtFVtVY", 
     "tmi": "1", 
     "no_get_video_log": "1", 
     "host_language": "es-419", 
     "keywords": "Jorge,Lanata,TN,periodismo", 
     "author": "Tribuna de Periodistas", 

     ... 

     "length_seconds": "130", 

     ... 

    } 
}; 
+0

價值創造一個服務器端應用程序,它接受來自您網頁的地址並從YouTube上加載給定的網址。希望配置將在「基礎」頁面。否則,你將不得不使用類似於你的服務器端的JavaScript啓用瀏覽器的東西,加載連接視頻的YouTube網頁,並做一些聰明的事情來獲取配置......個人而言,API聽起來很多更容易 –

+0

我真的,真的不建議去谷歌的API,除非你的雙手綁在一起。這些「無證」的API可能會在您不知情的情況下改變(這已經讓我不止一次地被燒燬)。 – Mark

+0

也許你是對的,我應該使用API​​,但我知道它每天有限制 – user3808307

回答

1

你非常接近。

使用配置對象:您可以通過兩種方式做到這一點

ytplayer.config.args.length_seconds 

它使視頻時間秒,然後你可以除以60得到的時間以分鐘爲單位

方式二,使用jQuery :

$('.ytp-time-duration').innerHTML 

以上可以在客戶端使用的解決方案,讓我知道,如果你正在尋找服務器端解決方案

用戶輸入URL後,將URL發送到您的服務器..使用任何後端語言,我用python因此告訴你。

import urllib 

link = "https:<youtube url>" 
f = urllib.urlopen(link) 
myfile = f.read() 

MYFILE具有所有的HTML內容,u可以使用任何解析器來獲取

YTP-時間持續時間

希望它可以幫助..

+0

但是我如何閱讀它? – user3808307

+0

你能多解釋一下,你讀的是什麼意思? –

+0

我在我自己的頁面中,用戶在表單中輸入url,並且在處理表單時,我想從該URL的源代碼讀取時間,無論是使用jQuery還是PHP。我需要訪問遠程頁面中的變量 – user3808307