You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
			
				
					86 lines
				
				1.8 KiB
			
		
		
			
		
	
	
					86 lines
				
				1.8 KiB
			| 
											7 years ago
										 | <?php
 | ||
|  | /**
 | ||
|  |  * Created by Error202
 | ||
|  |  * Date: 06.07.2018
 | ||
|  |  */
 | ||
|  | 
 | ||
|  | namespace core\helpers;
 | ||
|  | 
 | ||
|  | 
 | ||
|  | class VideoHelper
 | ||
|  | {
 | ||
|  | 	public static function identityProvider($url)
 | ||
|  | 	{
 | ||
|  | 		if (preg_match('%youtube|youtu\.be%i', $url)) {
 | ||
|  | 			return 'youtube';
 | ||
|  | 		}
 | ||
|  | 		elseif (preg_match('%vimeo%i', $url)) {
 | ||
|  | 			return 'vimeo';
 | ||
|  | 		}
 | ||
|  | 		return null;
 | ||
|  | 	}
 | ||
|  | 
 | ||
|  | 	public static function getThumb($url)
 | ||
|  | 	{
 | ||
|  | 		$src = '';
 | ||
|  | 		switch (self::identityProvider($url)) {
 | ||
|  | 			case 'youtube':
 | ||
|  | 				$id = VideoHelper::parseYoutubeUrl($url);
 | ||
|  | 				$src = 'https://i.ytimg.com/vi/' . $id . '/maxresdefault.jpg';
 | ||
|  | 				break;
 | ||
|  | 			case 'vimeo':
 | ||
|  | 				$id = VideoHelper::parseVimeoUrl($url);
 | ||
|  | 				$data = file_get_contents("http://vimeo.com/api/v2/video/$id.json");
 | ||
|  | 				$data = json_decode($data);
 | ||
|  | 				$src = $data[0]->thumbnail_large;
 | ||
|  | 				break;
 | ||
|  | 		}
 | ||
|  | 		return $src;
 | ||
|  | 	}
 | ||
|  | 
 | ||
|  | 	public static function parseVimeoUrl($url)
 | ||
|  | 	{
 | ||
|  | 		$urls = parse_url($url);
 | ||
|  | 		// https://vimeo.com/274720181
 | ||
|  | 		if($urls['host'] == 'vimeo.com'){
 | ||
|  | 			$id = ltrim($urls['path'],'/');
 | ||
|  | 		}
 | ||
|  | 		// https://player.vimeo.com/video/274720181
 | ||
|  | 		else {
 | ||
|  | 			$parts = explode('/',$urls['path']);
 | ||
|  | 			$id = end($parts);
 | ||
|  | 		}
 | ||
|  | 
 | ||
|  | 		return $id;
 | ||
|  | 	}
 | ||
|  | 
 | ||
|  | 	public static function parseYoutubeUrl($url)
 | ||
|  | 	{
 | ||
|  | 		$urls = parse_url($url);
 | ||
|  | 		//url is http://youtu.be/xxxx
 | ||
|  | 		if($urls['host'] == 'youtu.be'){
 | ||
|  | 			$id = ltrim($urls['path'],'/');
 | ||
|  | 		}
 | ||
|  | 		//url is http://www.youtube.com/embed/xxxx
 | ||
|  | 		else if(strpos($urls['path'],'embed') == 1){
 | ||
|  | 			$parts = explode('/',$urls['path']);
 | ||
|  | 			$id = end($parts);
 | ||
|  | 		}
 | ||
|  | 		//url is xxxx only
 | ||
|  | 		else if(strpos($url,'/')===false){
 | ||
|  | 			$id = $url;
 | ||
|  | 		}
 | ||
|  | 		//http://www.youtube.com/watch?feature=player_embedded&v=m-t4pcO99gI
 | ||
|  | 		//url is http://www.youtube.com/watch?v=xxxx
 | ||
|  | 		else{
 | ||
|  | 			parse_str($urls['query']);
 | ||
|  | 			/* @var $v */
 | ||
|  | 			$id = $v;
 | ||
|  | 			if(!empty($feature)){
 | ||
|  | 				$id = end(explode('v=',$urls['query']));
 | ||
|  | 			}
 | ||
|  | 		}
 | ||
|  | 		return $id;
 | ||
|  | 	}
 | ||
|  | 
 | ||
|  | }
 |