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

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

reset youtube to 36019

File size: 13.5 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, *tmplink = 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        tmplink = ostrcat(link, NULL, 0, 0);
39        tmplink = string_replace_all("watch?v=", "get_video_info?&video_id=", tmplink, 1);
40        tmplink = string_replace_all("/youtu.be", "/www.youtube.com", tmplink, 1);
41
42/* spox.com
43
44http://www.spox.com/de/sport/ussport/nba/live-stream/1310/miami-heat-washington-wizards-frank-buschmann.html
45grep code:
46<div id="spxliveplayer"><iframe frameborder="0" width="640px" height="360px" scrolling="no" src="http://www.youtube.com/embed/SjMEn0d6ByU" id="spxliveiframe" ></iframe></div>
47
48and get to youtube
49*/
50
51        tmpstr = gethttps(tmplink, NULL, NULL, NULL, NULL, 1);
52        writesys("/var/usr/local/share/titan/plugins/tithek/youtube_tmpstr", tmpstr, 0);
53        free(tmplink), tmplink = NULL;
54
55//      if(flag == 1)
56//      {
57                if(ostrstr(tmpstr, "&hlsvp=") != NULL)
58                {
59                        printf("found NBA1\n");
60                        streamurl = string_resub("&hlsvp=", "&", tmpstr, 0);
61                        string_decode(streamurl,0);
62                        string_decode(streamurl,0);
63                        string_decode(streamurl,0);
64                        string_decode(streamurl,0);
65                        string_decode(streamurl,0);
66                        string_decode(streamurl,0);     
67                }
68                else if(ostrstr(tmpstr, "status=fail&") == NULL)
69                {
70                        struct splitstr* ret1 = NULL;
71                        struct menulist* mlist = NULL, *mbox = NULL;
72                        int count = 0, i = 0;
73                        tmpstr = ostrcat(tmpstr,"&",0,0);
74                        tmpstr = string_resub("url_encoded_fmt_stream_map=","&",tmpstr,0);
75
76                        if(tmpstr != NULL)
77                        {
78                                ret1 = strsplit(string_decode(tmpstr,0),",",&count);
79
80                                for(i = 0; i < count; i++)
81                                {
82                                        if(ret1[i].part != NULL && strlen(ret1[i].part) > 1)
83                                        {
84                                                debug(99, "\nRound %d started, processing = %s",i,ret1[i].part);
85                                                ret1[i].part = ostrcat(ret1[i].part,"&",0,0);
86                                               
87                                                murl = string_resub("url=","&",ret1[i].part,0);
88                                                sig = string_resub("sig=","&",ret1[i].part,0);
89                                               
90                                                free(streamurl), streamurl = NULL;
91//                                              if(murl != NULL && sig != NULL)
92                                                if(murl != NULL)
93                                                {                                       
94                                                        streamurl = ostrcat(murl, NULL, 0, 0);
95                                                        streamurl = ostrcat(streamurl, "&signature=", 1, 0);
96                                                        streamurl = ostrcat(streamurl, sig, 1, 0);
97                                                        streamurl = string_decode(streamurl,0);
98                                                                                                                       
99                                                        if(ostrstr(ret1[i].part, "itag=85") != NULL)
100                                                        {
101                                                                title = ostrcat("MP4 520p H.264 3D", NULL, 0, 0);
102                                                                pic = ostrcat("mp4.png", NULL, 0, 0);
103                                                        }
104                                                        else if(ostrstr(ret1[i].part, "itag=84") != NULL)
105                                                        {
106                                                                title = ostrcat("MP4 720p H.264 3D", NULL, 0, 0);
107                                                                pic = ostrcat("mp4.png", NULL, 0, 0);
108                                                        }
109                                                        else if(ostrstr(ret1[i].part, "itag=83") != NULL)
110                                                        {
111                                                                title = ostrcat("MP4 240p H.264 3D", NULL, 0, 0);
112                                                                pic = ostrcat("mp4.png", NULL, 0, 0);
113                                                        }
114                                                        else if(ostrstr(ret1[i].part, "itag=82") != NULL)
115                                                        {
116                                                                title = ostrcat("MP4 360p H.264 3D", NULL, 0, 0);
117                                                                pic = ostrcat("mp4.png", NULL, 0, 0);
118                                                        }
119                                                        else if(ostrstr(ret1[i].part, "itag=38") != NULL)
120                                                        {
121                                                                title = ostrcat("MP4 3072p H.264 High", NULL, 0, 0);
122                                                                pic = ostrcat("mp4.png", NULL, 0, 0);
123                                                        }
124                                                        else if(ostrstr(ret1[i].part, "itag=37") != NULL)
125                                                        {
126                                                                title = ostrcat("MP4 1080p H.264 High", NULL, 0, 0);
127                                                                pic = ostrcat("mp4.png", NULL, 0, 0);
128                                                        }
129                                                        else if(ostrstr(ret1[i].part, "itag=22") != NULL)
130                                                        {
131                                                                title = ostrcat("MP4 720p H.264 High", NULL, 0, 0);
132                                                                pic = ostrcat("mp4.png", NULL, 0, 0);
133                                                        }
134                                                        else if(ostrstr(ret1[i].part, "itag=18") != NULL)
135                                                        {
136                                                                title = ostrcat("MP4 360p H.264 Baseline", NULL, 0, 0);                                                                                         
137                                                                pic = ostrcat("mp4.png", NULL, 0, 0);
138                                                        }
139                                                        else if(ostrstr(ret1[i].part, "itag=6") != NULL)
140                                                        {
141                                                                title = ostrcat("FLV 270p Sorenson H.263", NULL, 0, 0);
142                                                                pic = ostrcat("flv.png", NULL, 0, 0);
143                                                        }
144                                                        else if(ostrstr(ret1[i].part, "itag=5") != NULL)
145                                                        {
146                                                                title = ostrcat("FLV 240p Sorenson H.263", NULL, 0, 0);
147                                                                pic = ostrcat("flv.png", NULL, 0, 0);
148                                                        }
149                                                        else if(ostrstr(ret1[i].part, "itag=35") != NULL)
150                                                        {
151                                                                title = ostrcat("FLV 480p H.264 Main", NULL, 0, 0);
152                                                                pic = ostrcat("flv.png", NULL, 0, 0);
153                                                        }
154                                                        else if(ostrstr(ret1[i].part, "itag=34") != NULL)
155                                                        {
156                                                                title = ostrcat("FLV 360p H.264 Main", NULL, 0, 0);                                                                                                             
157                                                                pic = ostrcat("3gp.png", NULL, 0, 0);
158                                                        }
159                                                        else if(ostrstr(ret1[i].part, "itag=36") != NULL)
160                                                        {
161                                                                title = ostrcat("3GP 240p MPEG-4 Visual Simple", NULL, 0, 0);
162                                                                pic = ostrcat("3gp.png", NULL, 0, 0);
163                                                        }
164                                                        else if(ostrstr(ret1[i].part, "itag=17") != NULL)
165                                                        {
166                                                                title = ostrcat("3GP 144p MPEG-4 Visual Simple", NULL, 0, 0);
167                                                                pic = ostrcat("3gp.png", NULL, 0, 0);
168                                                        }
169                                                                                                               
170                                                        if(title == NULL)
171                                                        {
172                                                                title = ostrcat(_("unknown"), NULL, 0, 0);
173                                                                debug(99, "(%d) title: %s streamurl: %s\n", i, title, streamurl);
174                                                                debug(99, "(%d) ret1 %s\n",i, (ret1[i]).part);
175                                                        }
176                                                        else
177                                                        {
178                                                                debug(99, "(%d) title: %s streamurl: %s\n", i, title, streamurl);                                                                                                                                                                                                       
179                                                                addmenulist(&mlist, title, streamurl, pic, 0, 0);
180                                                        }
181                                                        free(title), title = NULL;
182                                                        free(pic), pic = NULL;
183                                                        free(streamurl), streamurl = NULL;
184                                                 
185                                                }
186                                                free(murl), murl = NULL;
187                                                free(sig), sig = NULL;
188                                        }
189
190                                        // TODO handle error while parsing
191       
192                                }
193                                free(ret1), ret1 = NULL;
194
195                                if(mlist != NULL){
196                                        mbox = menulistbox(mlist, NULL, _("Stream Menu"), _("Choose your Streaming Format from the following list"), NULL, NULL, 1, 0);
197                                        if(mbox != NULL){
198                                            free(streamurl), streamurl = NULL;
199                   
200                                            debug(99, "mbox->name %s", mbox->name);
201                                            debug(99, "mbox->text %s", mbox->text);
202                                            streamurl = ostrcat(mbox->text, NULL, 0, 0);
203                   
204                                        }
205                                }
206                        }
207                }
208                else
209                {       
210                        tmpstr = string_resub("&reason=", "&errordetail", tmpstr, 1);
211                        tmpstr = string_replace_all("+", " ", tmpstr, 1);
212                        tmpstr = string_replace_all(", ", "\n", tmpstr, 1);
213                        tmpstr = string_replace("wiedergegeben", "\nwiedergegeben ", tmpstr, 1);
214                        tmpstr = string_replace("<br/><u><a href='", "\n\n", tmpstr, 1);
215                        tmpstr = string_replace("' target='_blank'>", "\n", tmpstr, 1);
216                        tmpstr = string_replace("</a></u>", "\n", tmpstr, 1);
217
218                        tmpstr = strstrip(tmpstr);
219                        if(tmpstr != NULL && strlen(tmpstr) > 0)
220                                textbox(_("Message"), tmpstr, _("OK"), getrcconfigint("rcok", NULL), _("EXIT"), getrcconfigint("rcexit", NULL), NULL, 0, NULL, 0, 1200, 400, 0, 0);
221                }
222//      }
223
224        free(tmpstr); tmpstr = NULL;
225        free(title); title = NULL;
226        free(ip), ip = NULL;
227
228// segfault munmap_chunk(): invalid pointer
229//      free(pos), pos = NULL;
230        free(tmppath), tmppath = NULL;
231
232        debug(99, "streamurl2: %s", streamurl); 
233        return streamurl;
234}
235
236int youtube_search(struct skin* grid, struct skin* listbox, struct skin* countlabel, struct skin* load, char* link, char* title, char* searchstr)
237{
238        int ret = 1;
239
240        if(listbox == NULL || listbox->select == NULL || listbox->select->handle == NULL)
241                return ret;
242
243        char* search = NULL;
244        if(searchstr == NULL)
245                search = textinputhist(_("Search"), " ", "searchhist");
246        else
247                search = textinputhist(_("Search"), searchstr, "searchhist");
248
249        if(search != NULL)
250        {
251                drawscreen(load, 0, 0);
252                search = stringreplacechar(search, ' ', '+');
253                char* id = NULL;
254                char* line = NULL;
255                char* pic = NULL;
256                char* title = NULL;
257                char* menu = NULL;     
258                char* ip = ostrcat("gdata.youtube.com", NULL, 0, 0);
259                char* path = ostrcat("feeds/api/videos?q=", search, 0, 0);
260                if(((struct tithek*)listbox->select->handle)->flag == 9)
261                        path = ostrcat(path, "&max-results=10", 1, 0);
262                else if(((struct tithek*)listbox->select->handle)->flag == 10)
263                        path = ostrcat(path, "&max-results=25", 1, 0);
264                else if(((struct tithek*)listbox->select->handle)->flag == 11)
265                        path = ostrcat(path, "&max-results=50", 1, 0);
266
267
268                char* url = NULL;
269                url = ostrcat("https://www.googleapis.com/youtube/v3/search?q=", search, 0, 0);
270                url = ostrcat(url, "&regionCode=US&part=snippet&hl=en_US&key=AIzaSyBAdxZCHbeJwnQ7dDZQJNfcaF46MdqJ24E&type=video&maxResults=50", 1, 0);
271
272//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'
273
274                char* tmpstr = NULL;
275                tmpstr = gethttps(url, NULL, NULL, NULL, NULL, 1);             
276                writesys("/var/usr/local/share/titan/plugins/tithek/tmpstr1", tmpstr, 0);
277
278                tmpstr = stringreplacechar(tmpstr, '\n', ' ');
279
280                tmpstr = string_replace_all("\"etag\":", "\n\"etag\":", tmpstr, 1);
281
282                tmpstr = string_replace_all("media:thumbnail", "\nthumbnail", tmpstr, 1);
283                writesys("/var/usr/local/share/titan/plugins/tithek/tmpstr2", tmpstr, 0);
284
285                int count = 0;
286                int incount = 0;
287                int i = 0;
288                struct splitstr* ret1 = NULL;
289                ret1 = strsplit(tmpstr, "\n", &count);
290
291                if(ret1 != NULL)
292                {
293                        int max = count;
294                        for(i = 0; i < max; i++)
295                        {
296                                debug(99, "ret1[i].part=%s", ret1[i].part);
297                                if(ostrstr(ret1[i].part, "videoId") != NULL)
298                                {
299                                        pic = string_resub("\"url\": \"", "\"", ret1[i].part, 0);
300                                        id = string_resub("\"videoId\": \"", "\"", ret1[i].part, 0);
301                                        title = string_resub("\"title\": \"", "\"", ret1[i].part, 0);
302
303                                        debug(99, "title=%s", title);
304                                        debug(99, "id=%s", id);
305                                        debug(99, "pic=%s", pic);
306
307                                        int rcret = waitrc(NULL, 10, 0);
308                                        if(rcret == getrcconfigint("rcexit", NULL)) break;
309
310                                        if(id != NULL)
311                                        {
312                                                incount += 1;
313                                                ip = ostrcat("www.youtube.com", NULL, 0, 0);
314                                                path = ostrcat("watch?v=", id, 0, 0);
315
316                                                line = ostrcat(line, title, 1, 0);
317                                                line = ostrcat(line, "#http://www.youtube.com/get_video_info?&video_id=", 1, 0);
318                                                line = ostrcat(line, id, 1, 0);
319//                                              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);
320//                                              line = ostrcat(line, id, 1, 0);
321//                                              line = ostrcat(line, "&cbrver=40.0.2214.115&width=1920&cosver=6.1&ssl_stream=1", 1, 0);
322                                                line = ostrcat(line, "#", 1, 0);
323                                                line = ostrcat(line, pic, 1, 0);
324                                                line = ostrcat(line, "#youtube_search_", 1, 0);
325                                                line = ostrcat(line, oitoa(incount + time(NULL)), 1, 0);
326                                                line = ostrcat(line, ".jpg#YouTube - Search#4\n", 1, 0);
327                                                free(ip), ip = NULL;
328                                                free(path), path = NULL;
329                                                free(title), title = NULL;
330                                        }
331                                }
332                        }
333                        free(ret1), ret1 = NULL;
334
335                        if(line != NULL)
336                        {
337                                menu = ostrcat("/tmp/tithek/youtube.search.list", NULL, 0, 0);
338                                writesys(menu, line, 0);
339                                struct tithek* tnode = (struct tithek*)listbox->select->handle;
340                                createtithek(tnode, tnode->title, menu, tnode->pic, tnode->localname, tnode->menutitle, tnode->flag);
341                                ret = 0;
342                        }
343                }
344                free(tmpstr), tmpstr = NULL;
345        }
346        free(search), search = NULL;
347        return ret;
348}
349
350int youtube_search_local(struct skin* grid, struct skin* listbox, struct skin* countlabel, struct skin* load, char* link, char* title, char* searchstr, int flag)
351{
352        char* tmpstr = NULL, *tmpstr1 = NULL, *line = NULL, *menu = NULL, *search = NULL;
353        int ret = 1, count = 0, i = 0;
354
355        if(listbox == NULL || listbox->select == NULL || listbox->select->handle == NULL)
356                return ret;
357
358        if(searchstr == NULL)
359                search = textinputhist(_("Search"), " ", "searchhist");
360        else
361                search = textinputhist(_("Search"), searchstr, "searchhist");
362
363        if(search != NULL)
364        {
365                drawscreen(load, 0, 0);
366
367                strstrip(search);
368                string_tolower(search);
369
370                tmpstr = gethttp("atemio.dyndns.tv", "/mediathek/youtube/streams/youtube.all-sorted.list", 80, NULL, HTTPAUTH, 5000, NULL, 0);
371
372                struct splitstr* ret1 = NULL;
373                ret1 = strsplit(tmpstr, "\n", &count);
374
375                if(ret1 != NULL)
376                {
377                        int max = count;
378                        for(i = 0; i < max; i++)
379                        {
380                       
381                                tmpstr1 = ostrcat(ret1[i].part, NULL, 0, 0);
382                                tmpstr1 = stringreplacecharonce(tmpstr1, '#', '\0');
383                                string_tolower(tmpstr1);
384
385                                if(ostrstr(tmpstr1, search) != NULL)
386                                {
387                                        printf("found: %s\n", ret1[i].part);
388                                        int rcret = waitrc(NULL, 10, 0);
389                                        if(rcret == getrcconfigint("rcexit", NULL)) break;
390
391                                        line = ostrcat(line, ret1[i].part, 1, 0);
392                                        line = ostrcat(line, "\n", 0, 0);
393                                }
394                                free(tmpstr1), tmpstr1 = NULL;                         
395                        }
396                        free(ret1), ret1 = NULL;
397
398                        if(line != NULL)
399                        {
400                                line = string_replace_all("http://atemio.dyndns.tv/", "http://imageshack.us/md/up/grd/", line, 1);
401                                menu = ostrcat("/tmp/tithek/youtube.search.list", NULL, 0, 0);
402                                writesys(menu, line, 0);
403                                struct tithek* tnode = (struct tithek*)listbox->select->handle;
404                                createtithek(tnode, tnode->title, menu, tnode->pic, tnode->localname, tnode->menutitle, tnode->flag);
405                                ret = 0;
406                        }
407                }
408                free(tmpstr), tmpstr = NULL;
409        }
410        free(search), search = NULL;
411        return ret;
412}
413
414#endif
Note: See TracBrowser for help on using the repository browser.