1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
|
<?php /** * External Sources YouTube Class * @since: 5.0 * @author ThemePunch <[email protected]> * @link https://www.sliderrevolution.com/ * @copyright 2024 ThemePunch */
if(!defined('ABSPATH')) exit();
/** * Youtube * * with help of the API this class delivers all kind of Images/Videos from youtube * * @package socialstreams * @subpackage socialstreams/youtube * @author ThemePunch <[email protected]> */
class RevSliderYoutube extends RevSliderFunctions {
/** * API key * * @since 1.0.0 * @access private * @var string $api_key Youtube API key */ private $api_key;
/** * Channel ID * * @since 1.0.0 * @access private * @var string $channel_id Youtube Channel ID */ private $channel_id;
/** * Stream Array * * @since 1.0.0 * @access private * @var array $stream Stream Data Array */ private $stream;
/** * Transient seconds * * @since 1.0.0 * @access private * @var number $transient Transient time in seconds */ private $transient_sec;
/** * Initialize the class and set its properties. * * @since 1.0.0 * @param string $api_key Youtube API key. */ public function __construct($api_key, $channel_id, $transient_sec = 1200){ $this->api_key = $api_key; $this->channel_id = $channel_id; $this->transient_sec = $transient_sec; }
/** * Get Youtube Playlists * * @since 1.0.0 */ public function get_playlists(){ //call the API and decode the response $url = "https://www.googleapis.com/youtube/v3/playlists?part=snippet&maxResults=50&channelId=".$this->channel_id."&key=".$this->api_key; $rsp = json_decode(wp_remote_fopen($url));
return $this->get_val($rsp, 'items', false); }
/** * Get Youtube Playlist Items * * @since 1.0.0 * @param string $playlist_id Youtube Playlist ID * @param integer $count Max videos count */ public function show_playlist_videos($playlist_id, $count = 50){ //call the API and decode the response if(empty($count)) $count = 50;
$url = "https://www.googleapis.com/youtube/v3/playlistItems?part=snippet&playlistId=".$playlist_id."&maxResults=".$count."&fields=items%2Fsnippet&key=".$this->api_key;
$transient_name = 'revslider_' . md5($url);
if($this->transient_sec > 0 && false !== ($data = get_transient($transient_name))) return($data);
$rsp = json_decode(wp_remote_fopen($url));
if(!isset($rsp->items)) return array();
set_transient($transient_name, $rsp->items, $this->transient_sec);
return $rsp->items; }
/** * Get Youtube Channel Items * * @since 1.0.0 * @param integer $count Max videos count */ public function show_channel_videos($count = 50){ if(empty($count)) $count = 50; //call the API and decode the response $url = 'https://www.googleapis.com/youtube/v3/search?part=snippet&channelId='.$this->channel_id.'&maxResults='.$count.'&key='.$this->api_key.'&order=date';
$transient_name = 'revslider_' . md5($url); if($this->transient_sec > 0 && false !== ($data = get_transient($transient_name))) return ($data);
$rsp = json_decode(wp_remote_fopen($url));
if(!isset($rsp->items)) return array();
set_transient($transient_name, $rsp->items, $this->transient_sec);
return $rsp->items; }
/** * Get Playlists from Channel as Options for Selectbox * * @since 1.0.0 */ public function get_playlist_options($current_playlist){ $return = array(); $playlists = $this->get_playlists(); if(!empty($playlists)){ foreach($playlists as $playlist){ $return[] = '<option title="'.$playlist->snippet->description.'" '.selected($playlist->id , $current_playlist , false).' value="'.$playlist->id.'">'.$playlist->snippet->title.'</option>"'; } } return $return; } }
|