Dailymotion graber

Βοήθεια λύσεις και νέα από τον χώρο των open source ή έτοιμων εφαρμογών που έχουν φτιαχτεί με την PHP όπως oscommerce, κ.α.

Συντονιστές: WebDev Moderators, Super-Moderators, PHP Moderators

Απάντηση
thiva7
Δημοσιεύσεις: 3
Εγγραφή: 10 Φεβ 2009 18:15

Dailymotion graber

Δημοσίευση από thiva7 » 17 Ιούλ 2013 19:23

Γεια σας


θα ηθελα την βοηθεια σας για ενα σιτε που εχω...

θελω να περνω βιντεο απο το Dailymotion και να το βαζω στο δικο μου σιτε.

πιο αναλυτικα

στο σκριπ που δουλευω εχω την δυνατοτητα βαζοντας απλα το λινκ απο τα υποστηριζομενα σιτε να περνω τα βιντεο στο σερβερ μου και να τα hostαρο εγω.
μεσα σε αυτα δεν ειναι το Dailymotion ομως :(

προσπαθησα να φτιαξω εγω κωδικα με την ελαχιστες γνωσεις που εχω αλλα απετηχα ( οπως ηταν αναμενομενο :P ) καταφερα ομως βασιζομενος στο υπαρχων κωδικα απο τα αλλα σιτε να περνω τιτλο και περιγραφη απο το Dailymotion αλλα οχι το λινκ του βιντεο.

ο κωδικας ειναι αυτος

Κώδικας: Επιλογή όλων

<?php
defined&#40;'_VALID'&#41; or die&#40;'Restricted Access!'&#41;;
class VGraber_dailymotion
&#123;
	private $url;
	private $html;
	private $video;
	
	private $error		= FALSE;
	private $errors 	= array&#40;
		'html_error'		=> 'Failed to get html for the requested url!',
		'title_error'		=> 'Failed to get video title!',
		'category_error'	=> 'Failed to get video category!',
		'file_Error'		=> 'Failed to get video file!'
	&#41;;
	
	public function __construct&#40;$url&#41;
	&#123;
		$this->url	= $url;
	&#125;
	
	public function process&#40;&#41;
	&#123;
		$this->get_html&#40;$this->url&#41;;
		if &#40;!$this->error&#41; &#123;
			$this->video&#91;'title'&#93;		= $this->get_title&#40;&#41;;
			$this->video&#91;'description'&#93;	= $this->get_description&#40;&#41;;
			$this->video&#91;'tags'&#93;		= $this->get_tags&#40;&#41;;
			$this->video&#91;'category'&#93;	= $this->get_category&#40;&#41;;
			$this->video&#91;'file'&#93;		= $this->get_file&#40;&#41;;
			$this->video&#91;'size'&#93;		= $this->get_size&#40;&#41;;
		&#125;
	&#125;
	
	public function get_video&#40;&#41;
	&#123;
		return $this->video;
	&#125;
	
	public function get_html&#40;$url&#41;
	&#123;
		if &#40;!$this->html = VCurl&#58;&#58;string&#40;$url, 'iVisited=1; cookAV=1'&#41;&#41; &#123;
			$this->error = $this->errors&#91;'html_error'&#93;;
		&#125;
		
		$this->html	= str_replace&#40;array&#40;"\n", "\r"&#41;, '', $this->html&#41;;
		$this->html = preg_replace&#40;'/\s\s+/', ' ', $this->html&#41;;
	&#125;
	
	public function is_error&#40;&#41;
	&#123;
		return &#40;$this->error&#41; ? TRUE &#58; FALSE;
	&#125;
	
	public function get_error&#40;&#41;
	&#123;
		return $this->error;
	&#125;
	
	private function get_title&#40;&#41;
	&#123;
//		preg_match&#40;'/<h2 style="margin&#58; 5px;">&#40;.*?&#41;<\/h2>/', $this->html, $match&#41;;
		preg_match&#40;'/<title>&#40;.*?&#41;<\/title>/', $this->html, $match&#41;;
		if &#40;isset&#40;$match&#91;'1'&#93;&#41; && $match&#91;'1'&#93;&#41; &#123;
			$string	= htmlspecialchars&#40;strip_tags&#40;trim&#40;$match&#91;'1'&#93;&#41;&#41;, ENT_QUOTES, 'UTF-8'&#41;;
			if &#40;!empty&#40;$string&#41;&#41; &#123;
				return $string;
			&#125;
		&#125;
		
		$this->error = $this->errors&#91;'title_error'&#93;;
	&#125;
	
	private function get_description&#40;&#41;
	&#123;
		return '';
	&#125;
	
	private function get_tags&#40;&#41;
	&#123;
		preg_match&#40;'/<strong>Tags&#58;<\/strong>&#40;.*?&#41;<\/div>/', $this->html, $match&#41;;
		if &#40;isset&#40;$match&#91;'1'&#93;&#41; && !empty&#40;$match&#91;'1'&#93;&#41;&#41; &#123;
			preg_match_all&#40;"/<a href='&#40;.*?&#41;'>&#40;.*?&#41;<\/a>/", $match&#91;'1'&#93;, $matches&#41;;
            if &#40;isset&#40;$matches&#91;'2'&#93;&#41; && $matches&#91;'2'&#93;&#41; &#123;
                return $matches&#91;'2'&#93;;
            &#125;			
		&#125;
	&#125;
	
	private function get_category&#40;&#41;
	&#123;		
		return '';
	&#125;
	
	private function get_file&#40;&#41;
	&#123;
		preg_match&#40;'/<iframe src=\'http&#58;\/\/www\.Dailymotion\.com\/videos\/embed\/&#40;.*?&#41;\' frameborder=\'0\'/', $this->html, $match&#41;;
		if &#40;isset&#40;$match&#91;'1'&#93;&#41; && $match&#91;'1'&#93;&#41; &#123;
			$html = VCurl&#58;&#58;string&#40;'http&#58;//www.Dailymotion.com/videos/embed/'.$match&#91;'1'&#93;&#41;;
			if &#40;$html&#41; &#123;
				preg_match&#40;'/so.addVariable\&#40;"file",encodeURIComponent\&#40;"&#40;.*?&#41;"\&#41;\&#41;;/', $html, $match&#41;;
				if &#40;isset&#40;$match&#91;'1'&#93;&#41; && $match&#91;'1'&#93;&#41; &#123;
					return urldecode&#40;trim&#40;$match&#91;'1'&#93;&#41;&#41;;
				&#125;
			&#125;
		&#125;
		
		return FALSE;
	&#125;
	
	private function get_size&#40;&#41;
	&#123;
        if &#40;isset&#40;$this->video&#91;'file'&#93;&#41;&#41; &#123;
            return VCurl&#58;&#58;size&#40;$this->video&#91;'file'&#93;&#41;;
        &#125;	
	&#125;
&#125;
με αυτο το κωδικα περνω τιτλο κανονικα αλλα δεν περνω λινκ για το source του βιντεο

πχ ¨http://proxy-56.dailymotion.com/sec(d8b ... 64_aac.flv

μου βγαζει απλα κενο αντι για ενα τετοιο λινκ

Ευχαριστω

Απάντηση

Επιστροφή στο “PHP έτοιμες εφαρμογές”

Μέλη σε σύνδεση

Μέλη σε αυτήν τη Δ. Συζήτηση: Δεν υπάρχουν εγγεγραμμένα μέλη και 0 επισκέπτες