2011-12-28 11 views
6

मैं इस तरह किसी भी यूट्यूब वीडियो का वीडियो URL प्राप्त करने के लिए कोशिश कर रहा हूँ डाउनलोड करने के लिए यूट्यूब पर get_video का उपयोग करना:एक वीडियो

ओपन

http://youtube.com/get_video_info?video_id=VIDEOID 

तो account_playback_token टोकन मान ले और इस URL खोलने:

http://www.youtube.com/get_video?video_id=VIDEOID&t=TOKEN&fmt=18&asv=2 

इसे केवल वीडियो के साथ एक पृष्ठ खोलना चाहिए या वीडियो डाउनलोड करना चाहिए। लेकिन कुछ भी नहीं होता, सफारी की गतिविधि विंडो 'नहीं मिली' कहती है, इसलिए यूआरएल में कुछ गड़बड़ है। मैं इसे एक आईपैड ऐप में एकीकृत करना चाहता हूं, और ऐप के आईफोन संस्करण में उपयोग किए जाने वाले वीडियो यूआरएल को पाने के लिए जावास्क्रिप्ट विधि काम नहीं कर रही है, इसलिए मुझे एक और समाधान चाहिए।

यूट्यूब हर समय बदलता है, और मुझे लगता है कि यूआरएल पुराना है। कृपया मदद करें :)

संपादित करें: ऐसा लगता है जैसे get_video विधि अब काम नहीं करती है। मैं वास्तव में सराहना करता हूं अगर कोई मुझे वीडियो यूआरएल खोजने के लिए एक और तरीका बता सकता है।

धन्यवाद, मुझे वास्तव में मदद चाहिए।

उत्तर

9

क्षमा करें, अब और संभव नहीं है। वे आईपी को टोकन सीमित करते हैं जो इसे मिला।

यहां get_headers() फ़ंक्शन का उपयोग करके एक कार्यवाही है, जो आपको वीडियो के लिंक के साथ एक सरणी देता है। मुझे ios के बारे में कुछ भी पता नहीं है, इसलिए उम्मीद है कि आप स्वयं इस PHP कोड को फिर से लिख सकते हैं।

<?php 
if(empty($_GET['id'])) { 
    echo "No id found!"; 
} 

else { 

    function url_exists($url) { 
     if(file_get_contents($url, FALSE, NULL, 0, 0) === false) return false; 
     return true; 
    } 

    $id = $_GET['id']; 

    $page = @file_get_contents('http://www.youtube.com/get_video_info?&video_id='.$id); 

    preg_match('/token=(.*?)&thumbnail_url=/', $page, $token); 

    $token = urldecode($token[1]); 

    $get = $title->video_details; 

    $url_array = array ("http://youtube.com/get_video?video_id=".$id."&t=".$token, 
    "http://youtube.com/get_video?video_id=".$id."&t=".$token."&fmt=18"); 

    if(url_exists($url_array[1]) === true) { 
     $file = get_headers($url_array[1]); 
    } 

    elseif(url_exists($url_array[0]) === true) { 
     $file = get_headers($url_array[0]); 
    } 

    $url = trim($file[19],"Location: "); 

    echo '<a href="'.$url.'">Download video</a>'; 
} 
?> 
+0

लेकिन आप भी GET_URL उपयोग कर रहे हैं? और get_headers() क्या है, क्या यह यूआरएल या फ़ंक्शन का हिस्सा है? क्या आप शब्दों में अपना कोड समझा सकते हैं? मैं वास्तव में आपको बक्षीस देना चाहता हूं, मुझे थोड़ी और मदद चाहिए। धन्यवाद – JonasG

+0

कृपया मदद करें !!! मुझे यह जानने की ज़रूरत है! – JonasG

+0

मैंने इसे फिर से देखा और फिर मुझे पूरी तरह से मिला: डी लेकिन यह हर रिज़ॉल्यूशन में सभी प्रारूपों के लिंक क्यों नहीं देता है (720p में यह एमपी 4 और एक्स-फ्लो देता है, 480 पी में यह FLV और x के लिए लिंक देता है -flv ...) क्या सभी संकल्पों में एमपी 4 वीडियो के लिए लिंक प्राप्त करने का कोई तरीका है? धन्यवाद – JonasG

3

मैं इस का उपयोग करें और यह रॉक्स: http://rg3.github.com/youtube-dl/

बस एक यूट्यूब यूआरएल अपने ब्राउज़र से इस आदेश YouTube URL के साथ ही तर्क के रूप में कॉपी और निष्पादित करें। यह पता लगाएगा कि सर्वोत्तम गुणवत्ता वाले वीडियो को कैसे ढूंढें और इसे आपके लिए डाउनलोड करें।

1

बढ़िया! मुझे वीडियो के पूरे प्लेलिस्ट को पकड़ने का एक तरीका चाहिए।

लिनक्स में, यह मैं क्या उपयोग किया जाता है:

y = http://www.youtube.com; f = "http://gdata.youtube.com/feeds/api/playlists/PLeHqhPDNAZY_3377_DpzRSMh9MA9UbIEN?start-index=26"; $मैं $ (curl -s $ f | grep -o "url = '$ y/watch? V = [^'] '"); डी = $ (echo $ i | sed "s | url \ = '$ y/watch? v = () &। *' | \ 1 | "); यूट्यूब-डीएल --restrict-filenames "$ y/watch? v = $ d"; इसके अलावा, इस तकनीक GData API का उपयोग करता है, प्रति पृष्ठ 25 रिकॉर्ड सीमित https://www.youtube.com/playlist?list=PLeHqhPDNAZY_3377_DpzRSMh9MA9UbIEN

:

किया आप की तरह एक आम यूट्यूब यूआरएल से प्लेलिस्ट आईडी लगाना होगा।
इसलिए? स्टार्ट-इंडेक्स = 26 पैरामीटर (मेरे उदाहरण में पेज 2 प्राप्त करने के लिए)

यह कुछ सफाई, और 25 के सभी सेटों के माध्यम से फिर से शुरू करने के लिए अतिरिक्त तर्क का उपयोग कर सकता है।

क्रेडिट:

https://stackoverflow.com/a/8761493/1069375

http://www.commandlinefu.com/commands/view/3154/download-youtube-playlist (जो अपने आप में नहीं था काफी काम)

संबंधित मुद्दे