source: titan/plugins/tithek/youtube.h @ 36087

Last change on this file since 36087 was 36087, checked in by obi, 4 years ago

fix

File size: 20.0 KB
Line 
1#ifndef YOUTUBE_H
2#define YOUTUBE_H
3
4// flag 1 = getstreamurl
5//http://www.youtube.com/watch?v=LAr6oAKieHk
6//http://www.youtube.com/get_video_info?&video_id=m-2jBo9pVf4
7char* youtube_hoster(char* link)
8{
9        debug(99, "link: %s", link);
10        char* streamurl = NULL;
11
12        streamurl = hoster(link);
13        debug(99, "streamurl1: %s", streamurl);
14
15        streamurl = string_replace_all("amp;", "", streamurl, 1);
16        debug(99, "streamurl2: %s", streamurl);
17
18        return streamurl;
19}
20
21char* youtube(char* link)
22{
23        debug(99, "link: %s", link);
24        char* ip = NULL, *pos = NULL, *path = NULL, *tmppath = NULL, *streamurl = NULL, *title = NULL, *tmpstr = NULL, *murl = NULL, *sig = NULL, *pic = NULL;
25
26        ip = string_replace("http://", "", (char*)link, 0);
27
28        if(ip != NULL)
29                pos = strchr(ip, '/');
30        if(pos != NULL)
31        {
32                pos[0] = '\0';
33                path = pos + 1;
34        }
35        tmppath = ostrcat(path, NULL, 0, 0);
36        tmppath = string_replace_all("watch?v=", "get_video_info?&video_id=", tmppath, 1);
37
38
39        char* tmplink = ostrcat(link, NULL, 0, 0);
40        tmplink = string_replace_all("watch?v=", "get_video_info?&video_id=", tmplink, 1);
41        tmplink = string_replace_all("/youtu.be", "/www.youtube.com", tmplink, 1);
42
43/* spox.com
44
45http://www.spox.com/de/sport/ussport/nba/live-stream/1310/miami-heat-washington-wizards-frank-buschmann.html
46grep code:
47<div id="spxliveplayer"><iframe frameborder="0" width="640px" height="360px" scrolling="no" src="http://www.youtube.com/embed/SjMEn0d6ByU" id="spxliveiframe" ></iframe></div>
48*/
49
50        tmpstr = gethttps(tmplink, NULL, NULL, NULL, NULL, NULL, 1);
51        writesys("/var/usr/local/share/titan/plugins/tithek/youtube_tmpstr", tmpstr, 0);
52        free(tmplink), tmplink = NULL;
53
54//13:50:32 T:2532  NOTICE: 'GET /youtube/v3/channels?part=snippet%2CcontentDetails%2CbrandingSettings&id=UC_fV2pzmw2SujuQgIm6YcbQ%2CUCWp1qqITrK2hQBpFTmE9uVg%2CUCClNRixXlagwAd--5MwJKCw%2CUCz6Lv-YT2Fjhi3GyXdXt4Vw%2CUC0g5OdpoCTfpHUelY9PLWSQ%2CUCXJDX1KK6t121Z9FLhu5o2A%2CUCboe4JAAUOI-OzKBj_pkYFg%2CUCT-_4GqC-yLY1xtTHhwY0hA%2CUCsW36751Gy-EAbHQwe9WBNw%2CUC1fIyfhQtm1fSljyKBf2uKA%2CUCy-dXLczRuq-ZtuWmUo52PA%2CUCq-Fj5jknLsUf-MWSy4_brA%2CUCe2r4-wNZjYmQhHrYAR2WUA%2CUC-v9ZU8TO8chuAOsh3UO-gQ%2CUCa6vGFO9ty8v5KZJXQxdhaw%2CUC5zGJZpxeZPFcds5gFcDE7Q%2CUC0y2acrGZ3NH-3ycSGYuIPQ%2CUCqyYNNx60mBgvNKKR5VhUCA%2CUCCgDVqiPU10shxzmwkMwJ6A%2CUCFeUyPY6W8qX8w2o6oSiRmw%2CUCl0kP-Cfe-GGic7Ilnk-u_Q%2CUCXkQVG6OdyB2ct4xOOZjmPQ%2CUCu17Sme-KE87ca9OTzP0p7g%2CUC2nZMhZ2qG5-xpqb440WLYg%2CUCYdIDs5a3Pt-o4SiD-ih24g&key=AIzaSyBAdxZCHbeJwnQ7dDZQJNfcaF46MdqJ24E HTTP/1.1\r\nHost: www.googleapis.com\r\nUser-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.36 Safari/537.36\r\nConnection: close\r\nAccept-Encoding: gzip, deflate\r\n\r\n'
55
56//      tmpstr = gethttps(link, NULL, NULL, NULL, NULL, NULL, 1);
57//      writesys("/var/usr/local/share/titan/plugins/tithek/youtube_tmpstr", tmpstr, 0);
58
59//http://r7---sn-h0j7snel.googlevideo.com/videoplayback?source=youtube&gcr=de&ratebypass=yes&upn=32kjep7VPuc&initcwndbps=688750&expire=1443472674&sver=3&key=yt6&mn=sn-h0j7snel&mm=31&ip=95.91.6.76&sparams=dur%2Cgcr%2Cid%2Cinitcwndbps%2Cip%2Cipbits%2Citag%2Clmt%2Cmime%2Cmm%2Cmn%2Cms%2Cmv%2Cpl%2Cratebypass%2Csource%2Cupn%2Cexpire&pl=17&mv=m&mt=1443450913&ms=au&mime=video%2Fmp4&dur=249.173&id=o-APp6mA0M_837ohVW8yheCE2x2Ajd9KZ5GhoFWpMykdLR&ipbits=0&itag=22&fexp=9407155%2C9408508%2C9408710%2C9409069%2C9415365%2C9415485%2C9416023%2C9416729%2C9418448%2C9419484%2C9420215%2C9420348%2C9420818%2C9420928%2C9421013&lmt=1429610403267549&signature=
60
61//      if(flag == 1)
62//      {
63                if(ostrstr(tmpstr, "&hlsvp=") != NULL)
64                {
65                        printf("found NBA1\n");
66                        streamurl = string_resub("&hlsvp=", "&", tmpstr, 0);
67                        string_decode(streamurl,0);
68                        string_decode(streamurl,0);
69                        string_decode(streamurl,0);
70                        string_decode(streamurl,0);
71                        string_decode(streamurl,0);
72                        string_decode(streamurl,0);     
73                }
74                else if(ostrstr(tmpstr, "status=fail&") == NULL)
75                {
76                        struct splitstr* ret1 = NULL;
77                        struct menulist* mlist = NULL, *mbox = NULL;
78                        int count = 0, i = 0;
79                        tmpstr = ostrcat(tmpstr, "&", 1, 0);
80//                      tmpstr = string_resub("url_encoded_fmt_stream_map=","&",tmpstr,0);
81
82                        if(tmpstr != NULL)
83                        {
84                                htmldecode(tmpstr,tmpstr);
85                                htmldecode(tmpstr,tmpstr);
86                                htmldecode(tmpstr,tmpstr);
87                                htmldecode(tmpstr,tmpstr);
88                                htmldecode(tmpstr,tmpstr);
89                                tmpstr = string_replace_all("\n", " ", tmpstr, 1);
90                                tmpstr = string_replace_all("&url=", "\n", tmpstr, 1);
91
92                                ret1 = strsplit(tmpstr,"\n",&count);
93
94                                for(i = 0; i < count; i++)
95                                {
96                                        if(ret1[i].part != NULL && strlen(ret1[i].part) > 1)
97                                        {
98                                                debug(99, "\nRound %d started, processing = %s",i,ret1[i].part);
99                                                ret1[i].part = ostrcat(ret1[i].part,"&",0,0);
100                                               
101                                                murl = string_resub("url=", "&", ret1[i].part, 0);
102                                                sig = string_resub("sig=", "&", ret1[i].part, 0);
103                                                if(sig == NULL)
104                                                        sig = string_resub("s=", "&", ret1[i].part, 0);
105
106                                                streamurl = ostrcat(ret1[i].part, NULL, 0, 0);
107                                                streamurl = string_replace_all(",itag=", "\0", streamurl, 1);
108
109                                                if(streamurl != NULL)
110                                                {
111                                                        if(ostrstr(ret1[i].part, "itag=85") != NULL)
112                                                        {
113                                                                title = ostrcat("MP4 520p H.264 3D", NULL, 0, 0);
114                                                                pic = ostrcat("mp4.png", NULL, 0, 0);
115                                                        }
116                                                        else if(ostrstr(ret1[i].part, "itag=84") != NULL)
117                                                        {
118                                                                title = ostrcat("MP4 720p H.264 3D", NULL, 0, 0);
119                                                                pic = ostrcat("mp4.png", NULL, 0, 0);
120                                                        }
121                                                        else if(ostrstr(ret1[i].part, "itag=83") != NULL)
122                                                        {
123                                                                title = ostrcat("MP4 240p H.264 3D", NULL, 0, 0);
124                                                                pic = ostrcat("mp4.png", NULL, 0, 0);
125                                                        }
126                                                        else if(ostrstr(ret1[i].part, "itag=82") != NULL)
127                                                        {
128                                                                title = ostrcat("MP4 360p H.264 3D", NULL, 0, 0);
129                                                                pic = ostrcat("mp4.png", NULL, 0, 0);
130                                                        }
131                                                        else if(ostrstr(ret1[i].part, "itag=38") != NULL)
132                                                        {
133                                                                title = ostrcat("MP4 3072p H.264 High", NULL, 0, 0);
134                                                                pic = ostrcat("mp4.png", NULL, 0, 0);
135                                                        }
136                                                        else if(ostrstr(ret1[i].part, "itag=37") != NULL)
137                                                        {
138                                                                title = ostrcat("MP4 1080p H.264 High", NULL, 0, 0);
139                                                                pic = ostrcat("mp4.png", NULL, 0, 0);
140                                                        }
141                                                        else if(ostrstr(ret1[i].part, "itag=22") != NULL)
142                                                        {
143                                                                title = ostrcat("MP4 720p H.264 High", NULL, 0, 0);
144                                                                pic = ostrcat("mp4.png", NULL, 0, 0);
145                                                        }
146                                                        else if(ostrstr(ret1[i].part, "itag=18") != NULL)
147                                                        {
148                                                                title = ostrcat("MP4 360p H.264 Baseline", NULL, 0, 0);                                                                                         
149                                                                pic = ostrcat("mp4.png", NULL, 0, 0);
150                                                        }
151                                                        else if(ostrstr(ret1[i].part, "itag=6") != NULL)
152                                                        {
153                                                                title = ostrcat("FLV 270p Sorenson H.263", NULL, 0, 0);
154                                                                pic = ostrcat("flv.png", NULL, 0, 0);
155                                                        }
156                                                        else if(ostrstr(ret1[i].part, "itag=5") != NULL)
157                                                        {
158                                                                title = ostrcat("FLV 240p Sorenson H.263", NULL, 0, 0);
159                                                                pic = ostrcat("flv.png", NULL, 0, 0);
160                                                        }
161                                                        else if(ostrstr(ret1[i].part, "itag=35") != NULL)
162                                                        {
163                                                                title = ostrcat("FLV 480p H.264 Main", NULL, 0, 0);
164                                                                pic = ostrcat("flv.png", NULL, 0, 0);
165                                                        }
166                                                        else if(ostrstr(ret1[i].part, "itag=34") != NULL)
167                                                        {
168                                                                title = ostrcat("FLV 360p H.264 Main", NULL, 0, 0);                                                                                                             
169                                                                pic = ostrcat("3gp.png", NULL, 0, 0);
170                                                        }
171                                                        else if(ostrstr(ret1[i].part, "itag=36") != NULL)
172                                                        {
173                                                                title = ostrcat("3GP 240p MPEG-4 Visual Simple", NULL, 0, 0);
174                                                                pic = ostrcat("3gp.png", NULL, 0, 0);
175                                                        }
176                                                        else if(ostrstr(ret1[i].part, "itag=17") != NULL)
177                                                        {
178                                                                title = ostrcat("3GP 144p MPEG-4 Visual Simple", NULL, 0, 0);
179                                                                pic = ostrcat("3gp.png", NULL, 0, 0);
180                                                        }
181                                                                                                               
182                                                        if(title == NULL)
183                                                        {
184                                                                title = ostrcat(_("unknown"), NULL, 0, 0);
185                                                                debug(99, "(%d) title: %s streamurl: %s\n", i, title, streamurl);
186                                                                debug(99, "(%d) ret1 %s\n",i, (ret1[i]).part);
187                                                        }
188                                                        else
189                                                        {
190                                                                debug(99, "(%d) title: %s streamurl: %s\n", i, title, streamurl);                                                                                                                                                                                                       
191                                                                addmenulist(&mlist, title, streamurl, pic, 0, 0);
192                                                        }
193                                                        free(title), title = NULL;
194                                                        free(pic), pic = NULL;
195                                                        free(streamurl), streamurl = NULL;
196                                                 
197                                                }
198                                                free(murl), murl = NULL;
199                                                free(sig), sig = NULL;
200                                        }
201
202                                        // TODO handle error while parsing
203       
204                                }
205                                free(ret1), ret1 = NULL;
206
207                                if(mlist != NULL){
208                                        mbox = menulistbox(mlist, NULL, _("Stream Menu"), _("Choose your Streaming Format from the following list"), NULL, NULL, 1, 0);
209                                        if(mbox != NULL){
210                                            free(streamurl), streamurl = NULL;
211                   
212                                            debug(99, "mbox->name %s", mbox->name);
213                                            debug(99, "mbox->text %s", mbox->text);
214                                            streamurl = ostrcat(mbox->text, NULL, 0, 0);
215                   
216                                        }
217                                }
218                        }
219                }
220                else
221                {       
222                        tmpstr = string_resub("&reason=", "&errordetail", tmpstr, 1);
223                        tmpstr = string_replace_all("+", " ", tmpstr, 1);
224                        tmpstr = string_replace_all(", ", "\n", tmpstr, 1);
225                        tmpstr = string_replace("wiedergegeben", "\nwiedergegeben ", tmpstr, 1);
226                        tmpstr = string_replace("<br/><u><a href='", "\n\n", tmpstr, 1);
227                        tmpstr = string_replace("' target='_blank'>", "\n", tmpstr, 1);
228                        tmpstr = string_replace("</a></u>", "\n", tmpstr, 1);
229
230                        tmpstr = strstrip(tmpstr);
231                        if(tmpstr != NULL && strlen(tmpstr) > 0)
232                                textbox(_("Message"), tmpstr, _("OK"), getrcconfigint("rcok", NULL), _("EXIT"), getrcconfigint("rcexit", NULL), NULL, 0, NULL, 0, 1200, 400, 0, 0);
233                }
234//      }
235
236        free(tmpstr); tmpstr = NULL;
237        free(title); title = NULL;
238        free(ip), ip = NULL;
239
240// segfault munmap_chunk(): invalid pointer
241//      free(pos), pos = NULL;
242        free(tmppath), tmppath = NULL;
243
244        debug(99, "streamurl2: %s", streamurl); 
245        return streamurl;
246}
247
248int youtube_search(struct skin* grid, struct skin* listbox, struct skin* countlabel, struct skin* load, char* link, char* title, char* searchstr)
249{
250        int ret = 1;
251
252        if(listbox == NULL || listbox->select == NULL || listbox->select->handle == NULL)
253                return ret;
254
255        char* search = NULL;
256        if(searchstr == NULL)
257                search = textinputhist(_("Search"), " ", "searchhist");
258        else
259                search = textinputhist(_("Search"), searchstr, "searchhist");
260
261        if(search != NULL)
262        {
263                drawscreen(load, 0, 0);
264                search = stringreplacechar(search, ' ', '+');
265                char* id = NULL;
266                char* line = NULL;
267                char* pic = NULL;
268                char* title = NULL;
269                char* menu = NULL;     
270                char* ip = ostrcat("gdata.youtube.com", NULL, 0, 0);
271                char* path = ostrcat("feeds/api/videos?q=", search, 0, 0);
272                if(((struct tithek*)listbox->select->handle)->flag == 9)
273                        path = ostrcat(path, "&max-results=10", 1, 0);
274                else if(((struct tithek*)listbox->select->handle)->flag == 10)
275                        path = ostrcat(path, "&max-results=25", 1, 0);
276                else if(((struct tithek*)listbox->select->handle)->flag == 11)
277                        path = ostrcat(path, "&max-results=50", 1, 0);
278
279
280                char* url = NULL;
281                url = ostrcat("https://www.googleapis.com/youtube/v3/search?q=", search, 0, 0);
282                url = ostrcat(url, "&regionCode=US&part=snippet&hl=en_US&key=AIzaSyBAdxZCHbeJwnQ7dDZQJNfcaF46MdqJ24E&type=video&maxResults=50", 1, 0);
283
284//12:39:28 T:11340  NOTICE: 'GET /youtube/v3/search?q=pink&regionCode=US&part=snippet&hl=en_US&key=AIzaSyBAdxZCHbeJwnQ7dDZQJNfcaF46MdqJ24E&type=video&maxResults=50 HTTP/1.1\r\nHost: www.googleapis.com\r\nUser-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.36 Safari/537.36\r\nConnection: close\r\nAccept-Encoding: gzip, deflate\r\n\r\n'
285
286                char* tmpstr = NULL;
287                tmpstr = gethttps(url, NULL, NULL, NULL, NULL, NULL, 1);               
288//              tmpstr = gethttp(ip, path, 80, NULL, NULL, 10000, NULL, 0);
289                writesys("/var/usr/local/share/titan/plugins/tithek/tmpstr1", tmpstr, 0);
290printf("ALLE\n");
291
292                tmpstr = stringreplacechar(tmpstr, '\n', ' ');
293
294                tmpstr = string_replace_all("\"etag\":", "\n\"etag\":", tmpstr, 1);
295
296                tmpstr = string_replace_all("media:thumbnail", "\nthumbnail", tmpstr, 1);
297                writesys("/var/usr/local/share/titan/plugins/tithek/tmpstr2", tmpstr, 0);
298/*
299
300//12:39:28 T:11340  NOTICE: 'GET /youtube/v3/videos?part=snippet%2CcontentDetails&id=eOxPED0TunI%2CsojYfBmdvlE%2Cj-ocHL0eudY%2CHQBia-CfqbE%2CmHLwXQoG4CU%2Cw5VFOKKAbQQ%2CvnoQ5lkBVhU%2CeocCPDxKq1o%2ChSjIz8oQuko%2CJDKGWaCglRM%2CbZsqdTrr1eM%2CyTCDVfMz15M%2CHq2DINl2MxI%2CnB2Hsh1XqyA%2C41aGCrXM20E%2Cuc8OpUnUNNU%2Cv4UkD7U88NQ%2CAlMa52Xkoj0%2CocDlOD1Hw9k%2CG6ZLZQGydPc%2CxXvBkwihOE8%2CNJWIbIe0N90%2CwCqs2uJWwZs%2CPl-TCZSRhy4%2C0TDTEEXZtLs%2CXIId4uESVeA%2ClHSl-yz5FqA%2CRzriJpYiGjw%2CjT5RwB5ML30%2C5r9vdqAFCY4%2CzsmUOdmm02A%2C8WmZW7JB3GY%2C3NrNWISh5CE%2CeDtMxamBxI8%2CBR4yQFZK9YM%2CRAcNZo7-f0g%2CXjVNlG5cZyQ%2CasaCQOZpqUQ%2CWWYLM9opelw%2CqOfkpu6749w%2CBJLWNWDqK-k%2COpQFFLBMEPI%2Cm-6ir-gFpbA%2C3stsDXki__U%2C57KVfhWcEk0%2CFJfFZqTlWrQ%2CSNjFTxaeWug%2CumM9Ls0SaiU%2Cw7JRWHCKkIY%2C6lyq05OWuVM&key=AIzaSyBAdxZCHbeJwnQ7dDZQJNfcaF46MdqJ24E HTTP/1.1\r\nHost: www.googleapis.com\r\nUser-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.36 Safari/537.36\r\nConnection: close\r\nAccept-Encoding: gzip, deflate\r\n\r\n'
301/youtube/v3/videos?part=snippet%2CcontentDetails
302&id=
303eOxPED0TunI
304%2
305CsojYfBmdvlE
306%2
307Cj-ocHL0eudY
308%2
309CHQBia-CfqbE
310%2
311CmHLwXQoG4CU
312%2
313Cw5VFOKKAbQQ%2CvnoQ5lkBVhU%2CeocCPDxKq1o%2ChSjIz8oQuko%2CJDKGWaCglRM%2CbZsqdTrr1eM%2CyTCDVfMz15M%2CHq2DINl2MxI%2CnB2Hsh1XqyA
314%2C41aGCrXM20E%2Cuc8OpUnUNNU%2Cv4UkD7U88NQ%2CAlMa52Xkoj0%2CocDlOD1Hw9k%2CG6ZLZQGydPc%2CxXvBkwihOE8%2CNJWIbIe0N90%2CwCqs2uJWwZs%2CPl-TCZSRhy4
315%2C0TDTEEXZtLs%2CXIId4uESVeA%2ClHSl-yz5FqA%2CRzriJpYiGjw%2CjT5RwB5ML30%2C5r9vdqAFCY4%2CzsmUOdmm02A%2C8WmZW7JB3GY%2C3NrNWISh5CE%2CeDtMxamBxI8
316%2CBR4yQFZK9YM%2CRAcNZo7-f0g%2CXjVNlG5cZyQ%2CasaCQOZpqUQ%2CWWYLM9opelw%2CqOfkpu6749w%2CBJLWNWDqK-k
317%2COpQFFLBMEPI%2Cm-6ir-gFpbA
318%2C3stsDXki__U%2C57KVfhWcEk0%2CFJfFZqTlWrQ%2CSNjFTxaeWug%2CumM9Ls0SaiU%2Cw7JRWHCKkIY%2C6lyq05OWuVM
319
320&key=AIzaSyBAdxZCHbeJwnQ7dDZQJNfcaF46MdqJ24E HTTP/1.1\r\nHost: www.googleapis.com\r\nUser-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.36 Safari/537.36\r\nConnection: close\r\nAccept-Encoding: gzip, deflate\r\n\r\n'
321
322"title": "
323"videoId": "
324"url": "
325*/
326                int count = 0;
327                int incount = 0;
328                int i = 0;
329                struct splitstr* ret1 = NULL;
330                ret1 = strsplit(tmpstr, "\n", &count);
331//part="etag": "\"jOXstHOM20qemPbHbyzf7ztZ7rI/zJExHKkQXAGmI7-mKIkjbmndgJ0\"",    "id": {     "kind": "youtube#video",     "videoId": "57KVfhWcEk0"    },    "snippet": {     "publishedAt": "2015-09-19T02:06:39.000Z",     "channelId": "UCwehWhlhepFE8mFdlC1ebAw",     "title": "Pink - Mindless Self Indulgence FULL ALBUM",     "description": "JIMMY SAYS TO BUY THE FUCKING ALBUM Tracklist: 01. Personal Jesus 02. This Hurts 03. Be Like Superman 04. Memory Of Heaven 05. Vanity 06. Married ...",     "thumbnails": {      "default": {       "url": "https://i.ytimg.com/vi/57KVfhWcEk0/default.jpg"      },      "medium": {       "url": "https://i.ytimg.com/vi/57KVfhWcEk0/mqdefault.jpg"      },      "high": {       "url": "https://i.ytimg.com/vi/57KVfhWcEk0/hqdefault.jpg"      }     },     "channelTitle": "",     "liveBroadcastContent": "none"    }   }  ] }
332
333                if(ret1 != NULL)
334                {
335                        int max = count;
336                        for(i = 0; i < max; i++)
337                        {
338                                debug(99, "ret1[i].part=%s", ret1[i].part);
339                                if(ostrstr(ret1[i].part, "videoId") != NULL)
340                                {
341//                                      pic = oregex(".*thumbnail url=\'(http://i.ytimg.com/vi/.*/.*.jpg).*media:title.*", ret1[i].part);
342//                                      id = oregex(".*thumbnail url=\'http://i.ytimg.com/vi/(.*)/.*.jpg.*media:title.*", ret1[i].part);
343//                                      title = oregex(".*<media:title type='plain'>(.*)</media:title>.*", ret1[i].part);
344
345                                        pic = string_resub("\"url\": \"", "\"", ret1[i].part, 0);
346                                        id = string_resub("\"videoId\": \"", "\"", ret1[i].part, 0);
347                                        title = string_resub("\"title\": \"", "\"", ret1[i].part, 0);
348
349                                        debug(99, "title=%s", title);
350                                        debug(99, "id=%s", id);
351                                        debug(99, "pic=%s", pic);
352
353                                        int rcret = waitrc(NULL, 10, 0);
354                                        if(rcret == getrcconfigint("rcexit", NULL)) break;
355//www.googleapis.com/youtube/v3/videos?part=snippet%2CcontentDetails&id=eOxPED0TunI%2CsojYfBmdvlE%2Cj-ocHL0eudY%2CHQBia-CfqbE%2CmHLwXQoG4CU%2Cw5VFOKKAbQQ%2CvnoQ5lkBVhU%2CeocCPDxKq1o%2ChSjIz8oQuko%2CJDKGWaCglRM%2CbZsqdTrr1eM%2CyTCDVfMz15M%2CHq2DINl2MxI%2CnB2Hsh1XqyA%2C41aGCrXM20E%2Cuc8OpUnUNNU%2Cv4UkD7U88NQ%2CAlMa52Xkoj0%2CocDlOD1Hw9k%2CG6ZLZQGydPc%2CxXvBkwihOE8%2CNJWIbIe0N90%2CwCqs2uJWwZs%2CPl-TCZSRhy4%2C0TDTEEXZtLs%2CXIId4uESVeA%2ClHSl-yz5FqA%2CRzriJpYiGjw%2CjT5RwB5ML30%2C5r9vdqAFCY4%2CzsmUOdmm02A%2C8WmZW7JB3GY%2C3NrNWISh5CE%2CeDtMxamBxI8%2CBR4yQFZK9YM%2CRAcNZo7-f0g%2CXjVNlG5cZyQ%2CasaCQOZpqUQ%2CWWYLM9opelw%2CqOfkpu6749w%2CBJLWNWDqK-k%2COpQFFLBMEPI%2Cm-6ir-gFpbA%2C3stsDXki__U%2C57KVfhWcEk0%2CFJfFZqTlWrQ%2CSNjFTxaeWug%2CumM9Ls0SaiU%2Cw7JRWHCKkIY%2C6lyq05OWuVM&key=AIzaSyBAdxZCHbeJwnQ7dDZQJNfcaF46MdqJ24E
356                                        if(id != NULL)
357                                        {
358                                                incount += 1;
359                                                ip = ostrcat("www.youtube.com", NULL, 0, 0);
360                                                path = ostrcat("watch?v=", id, 0, 0);
361
362                                                line = ostrcat(line, title, 1, 0);
363                                                line = ostrcat(line, "#http://www.youtube.com/get_video_info?&video_id=", 1, 0);
364                                                line = ostrcat(line, id, 1, 0);
365                                                                                               
366//                                              line = ostrcat(line, "#http://www.youtube.com/get_video_info?el=leanback&cplayer=UNIPLAYER&cos=Windows&height=1080&cbr=Chrome&hl=en_US&cver=4&ps=leanback&c=TVHTML5&video_id=", 1, 0);
367//                                              line = ostrcat(line, id, 1, 0);
368//                                              line = ostrcat(line, "&cbrver=40.0.2214.115&width=1920&cosver=6.1&ssl_stream=1", 1, 0);
369
370//www.youtube.com/get_video_info?el=leanback&cplayer=UNIPLAYER&cos=Windows&height=1080&cbr=Chrome&hl=en_US&cver=4&ps=leanback&c=TVHTML5&video_id=yTCDVfMz15M&cbrver=40.0.2214.115&width=1920&cosver=6.1&ssl_stream=1
371
372//                                              line = ostrcat(line, "#https://www.googleapis.com/youtube/v3/videos?part=snippet%2CcontentDetails&id=", 1, 0);
373//                                              line = ostrcat(line, id, 1, 0);
374//                                              line = ostrcat(line, "&key=AIzaSyBAdxZCHbeJwnQ7dDZQJNfcaF46MdqJ24E", 1, 0);
375                                                line = ostrcat(line, "#", 1, 0);
376                                                line = ostrcat(line, pic, 1, 0);
377                                                line = ostrcat(line, "#youtube_search_", 1, 0);
378                                                line = ostrcat(line, oitoa(incount + time(NULL)), 1, 0);
379                                                line = ostrcat(line, ".jpg#YouTube - Search#4\n", 1, 0);
380                                                free(ip), ip = NULL;
381                                                free(path), path = NULL;
382                                                free(title), title = NULL;
383                                        }
384                                }
385                        }
386                        free(ret1), ret1 = NULL;
387
388                        if(line != NULL)
389                        {
390                                menu = ostrcat("/tmp/tithek/youtube.search.list", NULL, 0, 0);
391                                writesys(menu, line, 0);
392                                struct tithek* tnode = (struct tithek*)listbox->select->handle;
393                                createtithek(tnode, tnode->title, menu, tnode->pic, tnode->localname, tnode->menutitle, tnode->flag);
394                                ret = 0;
395                        }
396                }
397                free(tmpstr), tmpstr = NULL;
398        }
399        free(search), search = NULL;
400        return ret;
401}
402
403int youtube_search_local(struct skin* grid, struct skin* listbox, struct skin* countlabel, struct skin* load, char* link, char* title, char* searchstr, int flag)
404{
405        char* tmpstr = NULL, *tmpstr1 = NULL, *line = NULL, *menu = NULL, *search = NULL;
406        int ret = 1, count = 0, i = 0;
407
408        if(listbox == NULL || listbox->select == NULL || listbox->select->handle == NULL)
409                return ret;
410
411        if(searchstr == NULL)
412                search = textinputhist(_("Search"), " ", "searchhist");
413        else
414                search = textinputhist(_("Search"), searchstr, "searchhist");
415
416        if(search != NULL)
417        {
418                drawscreen(load, 0, 0);
419
420                strstrip(search);
421                string_tolower(search);
422
423                tmpstr = gethttp("atemio.dyndns.tv", "/mediathek/youtube/streams/youtube.all-sorted.list", 80, NULL, HTTPAUTH, 5000, NULL, 0);
424
425                struct splitstr* ret1 = NULL;
426                ret1 = strsplit(tmpstr, "\n", &count);
427
428                if(ret1 != NULL)
429                {
430                        int max = count;
431                        for(i = 0; i < max; i++)
432                        {
433                       
434                                tmpstr1 = ostrcat(ret1[i].part, NULL, 0, 0);
435                                tmpstr1 = stringreplacecharonce(tmpstr1, '#', '\0');
436                                string_tolower(tmpstr1);
437
438                                if(ostrstr(tmpstr1, search) != NULL)
439                                {
440                                        printf("found: %s\n", ret1[i].part);
441                                        int rcret = waitrc(NULL, 10, 0);
442                                        if(rcret == getrcconfigint("rcexit", NULL)) break;
443
444                                        line = ostrcat(line, ret1[i].part, 1, 0);
445                                        line = ostrcat(line, "\n", 0, 0);
446                                }
447                                free(tmpstr1), tmpstr1 = NULL;                         
448                        }
449                        free(ret1), ret1 = NULL;
450
451                        if(line != NULL)
452                        {
453                                line = string_replace_all("http://atemio.dyndns.tv/", "http://imageshack.us/md/up/grd/", line, 1);
454                                menu = ostrcat("/tmp/tithek/youtube.search.list", NULL, 0, 0);
455                                writesys(menu, line, 0);
456                                struct tithek* tnode = (struct tithek*)listbox->select->handle;
457                                createtithek(tnode, tnode->title, menu, tnode->pic, tnode->localname, tnode->menutitle, tnode->flag);
458                                ret = 0;
459                        }
460                }
461                free(tmpstr), tmpstr = NULL;
462        }
463        free(search), search = NULL;
464        return ret;
465}
466
467#endif
Note: See TracBrowser for help on using the repository browser.