source: titan/plugins/tithek/solarmovie.h @ 30012

Last change on this file since 30012 was 30012, checked in by obi, 8 years ago

fix solarmovie

File size: 16.1 KB
Line 
1#ifndef SOLARMOVIE_H
2#define SOLARMOVIE_H
3
4char* solarmovie(char* link)
5{
6        debug(99, "link: %s", link);
7        char* tmpstr = NULL, *tmpstr1 = NULL, *pos = NULL, *url = NULL, *streamurl = NULL, *tmphost = NULL, *tmppath = NULL;
8        char* error = NULL;
9
10        if(link == NULL || ostrncmp("http://", link, 7)) return NULL;
11
12        tmphost = string_replace("http://", "", (char*)link, 0);
13
14        if(tmphost != NULL)
15                pos = strchr(tmphost, '/');
16        if(pos != NULL)
17        {
18                pos[0] = '\0';
19                tmppath = pos + 1;
20        }
21       
22        char* send = ostrcat("GET /", NULL, 0, 0);
23        send = ostrcat(send, tmppath, 1, 0);
24        send = ostrcat(send, " HTTP/1.1\r\nHost: ", 1, 0);
25        send = ostrcat(send, tmphost, 1, 0);
26        send = ostrcat(send, "\r\nUser-Agent: Mozilla/5.0 (X11; Linux i686) AppleWebKit/535.1 (KHTML, like Gecko) Chrome/13.0.782.99 Safari/535.1\r\nConnection: close\r\nAccept-Encoding: gzip\r\n\r\n", 1, 0);
27        debug(99, "send: %s", send);
28
29        tmpstr = gethttpreal(tmphost, tmppath, 80, NULL, NULL, NULL, 0, send, NULL, 5000, 0);
30        debug(99, "tmpstr: %s", tmpstr);
31        free(send); send = NULL;
32
33        if(tmpstr == NULL)
34        {
35                textbox(_("Message"), _("The page is temporarily unavailable") , _("OK"), getrcconfigint("rcok", NULL), _("EXIT"), getrcconfigint("rcexit", NULL), NULL, 0, NULL, 0, 1200, 200, 0, 0);
36                goto end;
37        }
38
39        if(ostrstr(tmpstr, "<h2>404</h2>") != NULL)
40        {
41                error = string_resub("<strong>", "</strong>", tmpstr, 0);
42                string_deltags(error);
43                stringreplacechar(error, '|', '\0');
44                error = strstrip(error);
45                if(error == NULL || strlen(error) == 0)
46                        error = ostrcat(_("The page is temporarily unavailable"), error, 0, 1);
47                textbox(_("Message"), error, _("OK"), getrcconfigint("rcok", NULL), _("EXIT"), getrcconfigint("rcexit", NULL), NULL, 0, NULL, 0, 1200, 400, 0, 0);
48                goto end;
49        }
50           
51        string_strip_whitechars(tmpstr);
52        if(ostrstr(tmpstr, "<div class=\"thirdPartyEmbContainer\">") != NULL)
53        {
54                tmpstr1 = string_resub("<div class=\"thirdPartyEmbContainer\">", "</div>", tmpstr, 0);
55                stringreplacechar(tmpstr1, '\n', ' ');
56
57                url = oregex(".*(http://.*).*\"", tmpstr1);
58                stringreplacechar(url, '"', '\0');
59
60                if(url == NULL)
61                        url = string_resub("<center><iframe src=\"", "\"", tmpstr1, 0);
62                if(url == NULL)
63                        url = string_resub("<center><IFRAME SRC=\"", "\"", tmpstr1, 0);
64
65                if(url == NULL || ostrncmp("http://", url, 7) == 1)
66                {
67                        free(url); url = NULL;
68                        url = oregex(".*src=\"(http://.*)&width.*", tmpstr1);
69                }
70        }
71        else
72        {
73                //char* tmpurl = oregex(".*<iframe name=\"service_frame\" class=\"service_frame\" src=\"(http://.*)\".*", tmpstr);
74                //url = oregex("(http://.*)\".*", tmpurl);
75                //free(tmpurl); tmpurl == NULL;
76                url = string_resub("<iframe name=\"service_frame\" class=\"service_frame\" src=\"", "\"", tmpstr, 0);
77                url = string_replace_all("embed", "file", url, 1);
78        }
79
80        debug(99, "url: %s", url);
81        streamurl = hoster(url);
82
83end:
84
85        free(error), error = NULL;
86        free(url), url = NULL;
87        free(tmpstr), tmpstr = NULL;
88        free(tmpstr1), tmpstr1 = NULL;
89        free(tmphost), tmphost = NULL;
90//      free(tmppath), tmppath = NULL;
91
92        return streamurl;
93}
94
95int solarmovie_search(struct skin* grid, struct skin* listbox, struct skin* countlabel, struct skin* load, char* link, char* title, char* searchstr, int flag)
96{
97        int debuglevel = getconfigint("debuglevel", NULL);
98        int ret = 1;
99        int incount = 0;
100               
101        if(listbox == NULL || listbox->select == NULL || listbox->select->handle == NULL)
102                return ret;
103
104        char* search = NULL;
105        if(searchstr == NULL)
106                search = textinputhist(_("Search"), " ", "searchhist");
107        else
108                search = textinputhist(_("Search"), searchstr, "searchhist");
109       
110        if(search != NULL)
111        {
112                drawscreen(load, 0, 0);
113                char* tmpstr = NULL;
114                char* tmpstr1 = NULL;
115                char* line = NULL;
116                char* pic = NULL;
117                char* title = NULL;
118                char* url = NULL;
119                char* ip = NULL;
120                char* path = NULL;
121                char* menu = NULL;
122                char* file = NULL;
123                char* file1 = NULL;
124                search = strstrip(search);
125                search = stringreplacechar(search, ' ', '+');
126                debug(99, "search: %s", search);
127
128                ip = ostrcat("www.solarmovie.is", NULL, 0, 0);
129                if(flag == 0)
130                        path = ostrcat("movie/search/", search, 0, 0);
131                else
132                        path = ostrcat("tv/search/", search, 0, 0);
133
134                tmpstr = gethttp(ip, path, 80, NULL, NULL, 10000, NULL, 0);
135                titheklog(debuglevel, "/tmp/solarmovie_tmpstr", NULL, NULL, NULL, tmpstr);
136
137                while(ostrstr(tmpstr, "<div class=\"typicalGrey coverGroup\">") != NULL)
138                {
139                        int rcret = waitrc(NULL, 10, 0);
140                        if(rcret == getrcconfigint("rcexit", NULL)) break;
141
142                        incount += 1;
143                        if(debuglevel == 99)
144                        {
145                                file = ostrcat("/tmp/solarmovie_tmpstr", oitoa(incount), 0, 1);
146                                writesys(file, tmpstr, 0);
147                        }
148                               
149                        tmpstr1 = string_resub("<div class=\"typicalGrey coverGroup\">", "</div>", tmpstr, 0);
150
151                        if(debuglevel == 99)
152                        {
153                                file1 = ostrcat("/tmp/solarmovie_tmpstr_resub", oitoa(incount), 0, 1);
154                                writesys(file1, tmpstr1, 0);
155                        }
156
157                        path = string_resub("href=\"", "\"", tmpstr1, 0);
158                        pic = string_resub("<img src=\"", "\"", tmpstr1, 0);
159                        title = string_resub("<a title=\"", "\"", tmpstr1, 0);
160       
161                        url = ostrcat("http://www.solarmovie.is", path, 0, 0);
162       
163                        debug(99, "---------------------------");
164                        debug(99, "pic: %s", pic);
165                        debug(99, "title: %s", title);
166                        debug(99, "url: %s", url);                                     
167                        debug(99, "---------------------------");
168       
169                        if(url != NULL)
170                        {
171                                line = ostrcat(line, title, 1, 0);
172                                line = ostrcat(line, "#", 1, 0);
173                                line = ostrcat(line, url, 1, 0);
174                                line = ostrcat(line, "#", 1, 0);
175                                line = ostrcat(line, pic, 1, 0);
176                                line = ostrcat(line, "#solarmovie_search_", 1, 0);
177                                line = ostrcat(line, oitoa(incount + time(NULL)), 1, 0);
178                                line = ostrcat(line, ".jpg#SolarMovie - Search#28\n", 1, 0);
179                        }
180                        free(url), url = NULL;
181                        free(path), path = NULL;
182                        free(title), title = NULL;
183                        free(pic), pic = NULL;         
184                        free(file), file = NULL;
185                        free(file1), file1 = NULL;
186
187                        tmpstr = string_replace("typicalGrey coverGroup", "", tmpstr, 1);
188                        free(tmpstr1), tmpstr1 = NULL;
189                }
190
191                if(line != NULL)
192                {
193                        line = string_replace_all("http://atemio.dyndns.tv/", "http://imageshack.us/md/up/grd/", line, 1);
194                        menu = ostrcat("/tmp/tithek/solarmovie.search.list", NULL, 0, 0);
195                        writesys(menu, line, 0);
196                        free(line); line = NULL;
197                       
198                        struct tithek* tnode = (struct tithek*)listbox->select->handle;
199                        createtithek(tnode, tnode->title,  menu, tnode->pic, tnode->localname, tnode->menutitle, tnode->flag);
200                        ret = 0;
201                }
202
203                free(tmpstr), tmpstr = NULL;
204                free(ip), ip = NULL;
205        }
206        free(search), search = NULL;
207        return ret;
208}
209
210int solarmovie_search_local(struct skin* grid, struct skin* listbox, struct skin* countlabel, struct skin* load, char* link, char* title, char* searchstr, int flag)
211{
212        char* tmpstr = NULL, *tmpstr1 = NULL, *line = NULL, *menu = NULL, *search = NULL;
213        int ret = 1, count = 0, i = 0;
214
215        if(listbox == NULL || listbox->select == NULL || listbox->select->handle == NULL)
216                return ret;
217
218        if(searchstr == NULL)
219                search = textinputhist(_("Search"), " ", "searchhist");
220        else
221                search = textinputhist(_("Search"), searchstr, "searchhist");
222
223        if(search != NULL)
224        {
225                drawscreen(load, 0, 0);
226
227                strstrip(search);
228                string_tolower(search);
229
230                tmpstr = gethttp("atemio.dyndns.tv", "/mediathek/solarmovie/streams/solarmovie.all-sorted.list", 80, NULL, HTTPAUTH, 5000, NULL, 0);
231
232                struct splitstr* ret1 = NULL;
233                ret1 = strsplit(tmpstr, "\n", &count);
234
235                if(ret1 != NULL)
236                {
237                        int max = count;
238                        for(i = 0; i < max; i++)
239                        {
240                       
241                                tmpstr1 = ostrcat(ret1[i].part, NULL, 0, 0);
242                                tmpstr1 = stringreplacecharonce(tmpstr1, '#', '\0');
243                                string_tolower(tmpstr1);
244
245                                if(ostrstr(tmpstr1, search) != NULL)
246                                {
247                                        printf("found: %s\n", ret1[i].part);
248                                        int rcret = waitrc(NULL, 10, 0);
249                                        if(rcret == getrcconfigint("rcexit", NULL)) break;
250
251                                        line = ostrcat(line, ret1[i].part, 1, 0);
252                                        line = ostrcat(line, "\n", 0, 0);
253                                }
254                                free(tmpstr1), tmpstr1 = NULL;                         
255                        }
256                        free(ret1), ret1 = NULL;
257
258                        if(line != NULL)
259                        {
260                                line = string_replace_all("http://atemio.dyndns.tv/", "http://imageshack.us/md/up/grd/", line, 1);
261                                menu = ostrcat("/tmp/tithek/solarmovie.search.list", NULL, 0, 0);
262                                writesys(menu, line, 0);
263                                struct tithek* tnode = (struct tithek*)listbox->select->handle;
264                                createtithek(tnode, tnode->title, menu, tnode->pic, tnode->localname, tnode->menutitle, tnode->flag);
265                                ret = 0;
266                        }
267                }
268                free(tmpstr), tmpstr = NULL;
269        }
270        free(search), search = NULL;
271        return ret;
272}
273
274int solarmovie_hoster(struct skin* grid, struct skin* listbox, struct skin* countlabel, struct skin* load, char* link, char* title)
275{
276        debug(99, "link: %s", link);
277        int debuglevel = getconfigint("debuglevel", NULL);
278        int ret = 1, series = 0;
279        char* pos = NULL, *etitle = NULL, *episode = NULL, *session = NULL, *update = NULL, *quality = NULL, *id = NULL, *line = NULL, *hname = NULL, *tmpstr = NULL, *url = NULL, *tmpstr1 = NULL, *tmphost = NULL, *tmphname = NULL;
280        char* pichname = NULL, *tmppath = NULL;
281        unlink("/tmp/tithek/get");
282        unlink("/tmp/tithek/get_zcat");
283        unlink("/tmp/tithek/get_zcat1");
284
285        if(listbox == NULL || listbox->select == NULL || listbox->select->handle == NULL)
286                return ret;
287
288        drawscreen(load, 0, 0);
289
290        tmphost = string_replace("http://", "", (char*)link, 0);
291
292        if(tmphost != NULL)
293                pos = strchr(tmphost, '/');
294        if(pos != NULL)
295        {
296                pos[0] = '\0';
297                tmppath = pos + 1;
298        }
299
300        tmpstr = gethttp(tmphost, tmppath, 80, NULL, NULL, 10000, NULL, 0);
301       
302        if(tmpstr == NULL)
303        {
304                textbox(_("Message"), _("This file doesn't exist, or has been removed") , _("OK"), getrcconfigint("rcok", NULL), _("EXIT"), getrcconfigint("rcexit", NULL), NULL, 0, NULL, 0, 1200, 200, 0, 0);
305                goto end;
306        }
307//      if(debuglevel == 99) system("cp -a /tmp/tithek/get /tmp/solarmovie1_tmpstr_get");
308
309//      tmpstr = command("cat /tmp/tithek/get");
310/*
311        if(ostrstr(tmpstr, "<!DOCTYPE") == NULL)
312        {
313                cmd = ostrcat(cmd, "cat /tmp/tithek/get | zcat", 1, 0);
314                debug(99, "cmd: %s", cmd);
315                free(tmpstr), tmpstr = NULL;
316                tmpstr = command(cmd);
317               
318                writesys("/tmp/tithek/get_zcat", tmpstr, 0);
319                free(cmd), cmd = NULL;
320        }
321//      else
322//              system("cp -a /tmp/tithek/get /tmp/tithek/get_zcat");
323*/
324
325writesys("/tmp/tithek/get_zcat", tmpstr, 0);
326
327
328
329        titheklog(debuglevel, "/tmp/solarmovie2_tmpstr_zcat", NULL, NULL, NULL, tmpstr);
330
331        if(ostrstr(link, "/tv/") != NULL && ostrstr(link, "/season-") == NULL && ostrstr(link, "/episode-") == NULL)   
332                series = 1;
333        else
334                series = 0;
335
336printf("series: %d\n", series);
337
338        if(series == 0)
339        {
340printf("11111111111111111111111111111\n");
341                series = 0;
342                if(tmpstr != NULL)
343                {
344//                      free(tmpstr), tmpstr = NULL;
345//                      tmpstr = command("cat /tmp/tithek/get_zcat");
346                        char* tmpcat = string_resub("<tbody>", "</tbody>", tmpstr, 0);
347       
348                        char* ptmpcat = ostrstr(tmpcat, "<td class=\"qualit");
349                        int i = 0, incount = 0;
350                        while(ptmpcat != NULL)
351                        {
352                                i++;
353                                tmpstr1 = ostrcat(tmpstr1, string_resub("<td class=\"qualit", "<div class=\"linkDetails\">", ptmpcat, 0), 1, 1);
354                                ptmpcat += 5;
355                                ptmpcat = ostrstr(ptmpcat, "<td class=\"qualit");
356       
357                                if(ptmpcat != NULL)
358                                {
359//                                      id = string_resub("<a href=\"/link/show/", "/", tmpstr1, 0);
360//                                      id = oregex(".*/link/show/(.*)/\">.*", tmpstr1);
361//                                      id = oregex(".*/link/show/(.*)/.*\">.*", tmpstr1);
362                                        char* tmpid = oregex(".*<a href=\"/link/(.*)/.*", tmpstr1);
363//                                      debug(99, "tmpid: %s", tmpid);
364                                        id = string_resub("show/", "/", tmpid, 0);
365                                        free(tmpid), tmpid = NULL;
366//                                      debug(99, "id: %s", id);
367//                                      debug(99, "#######################################################");
368
369
370                                        quality = string_resub("yCell\">", "</td>", tmpstr1, 0);
371                                        update = string_resub("oddCell\">", "</td>", tmpstr1, 0);
372                                        string_remove_whitechars(quality);
373                                        strstrip(quality);
374                                       
375//                                      tmphname = oregex(".*/\">(.*)</a>.*", tmpstr1);
376                                        tmphname = oregex(".*<a href=\"/link/show/.*\">(.*)</a>.*", tmpstr1);
377
378                                        string_remove_whitechars(tmphname);
379                                        strstrip(tmphname);
380
381                                        pichname = ostrcat(tmphname, NULL, 0, 0);
382                                        string_tolower(pichname);
383                                        pichname = stringreplacecharonce(pichname, '.', '\0');
384
385                                        int type = 43;
386                                        debug(99, "(%d/\?\?) %s id: %s quality: %s update: %s pic: %s", i, tmphname, id, quality, update, pichname);
387
388                                        incount += 1;
389                                        line = ostrcat(line, tmphname, 1, 0);
390                                        if(quality != NULL)
391                                        {
392                                                line = ostrcat(line, " (", 1, 0);                                       
393                                                line = ostrcat(line, quality, 1, 0);                                   
394                                                line = ostrcat(line, ")", 1, 0);                                       
395                                        }
396                                        if(update != NULL)
397                                        {
398                                                line = ostrcat(line, " (", 1, 0);                                       
399                                                line = ostrcat(line, update, 1, 0);                                     
400                                                line = ostrcat(line, ")", 1, 0);                                       
401                                        }                                       
402                                        line = ostrcat(line, "#", 1, 0);
403                                        line = ostrcat(line, "http://www.solarmovie.is/link/play/", 1, 0);
404                                        line = ostrcat(line, id, 1, 0);
405                                        line = ostrcat(line, "#", 1, 0);
406                                        line = ostrcat(line, "http://atemio.dyndns.tv/mediathek/menu/", 1, 0);
407                                        line = ostrcat(line, pichname, 1, 0);
408                                        line = ostrcat(line, ".jpg#solarmovie_", 1, 0);
409                                        line = ostrcat(line, pichname, 1, 0);
410                                        line = ostrcat(line, ".jpg#Solarmovie - ", 1, 0);
411                                        line = ostrcat(line, title, 1, 0);
412                                        line = ostrcat(line, "#", 1, 0);
413                                        line = ostrcat(line, oitoa(type), 1, 0);
414                                        line = ostrcat(line, "\n", 1, 0);
415                                        free(hname), hname = NULL;
416                                                               
417                                        free(pichname), pichname = NULL;               
418                                        free(tmphname), tmphname = NULL;
419                                        free(id), id = NULL;           
420                                }
421                        }
422                        free(tmpcat); tmpcat = NULL;
423                }       
424        }
425        else
426        {
427printf("22222222222222222222222222222222\n");
428       
429                series = 1;
430                if(tmpstr != NULL)
431                {
432//writesys("/tmp/tithek/get_zcat", tmpstr, 0);
433
434                        free(tmpstr), tmpstr = NULL;
435                        tmpstr = command("cat /tmp/tithek/get_zcat | grep episode- | grep -v Episode | grep -v 'linkCount typicalGrey'");
436                        writesys("/var/usr/local/share/titan/plugins/tithek/solarmovie8_tmpstr", tmpstr, 0);
437
438                        int count = 0;
439                        struct splitstr* ret1 = NULL;
440                        ret1 = strsplit(tmpstr, "\n", &count);
441                        int max = count;
442                        int i = 0, incount = 0;
443                        for(i = 0; i < max; i++)
444                        {
445//<a href="/tv/avatar-the-last-airbender-2005/season-3/episode-2/">The Headband</a>
446                                session = oregex(".*/season-([0-9]{1,2})/episode-.*", ret1[i].part);
447                                episode = oregex(".*/episode-([0-9]{1,2})/.*", ret1[i].part);
448                                etitle = oregex(".*>(.*)<.*", ret1[i].part);
449                                url = string_resub("\"", "\"", ret1[i].part, 0);
450
451                                incount += 1;
452                                line = ostrcat(line, _("Season"), 1, 0);
453                                line = ostrcat(line, " ", 1, 0);
454                                line = ostrcat(line, session, 1, 0);
455                                line = ostrcat(line, " ", 1, 0);
456                                line = ostrcat(line, _("Episode"), 1, 0);
457                                line = ostrcat(line, " ", 1, 0);
458                                line = ostrcat(line, episode, 1, 0);
459
460//                              line = ostrcat(line, "(s", 1, 0);
461//                              line = ostrcat(line, session, 1, 0);
462//                              line = ostrcat(line, "e", 1, 0);
463//                              line = ostrcat(line, episode, 1, 0);
464//                              line = ostrcat(line, ") ", 1, 0);
465//                              line = ostrcat(line, etitle, 1, 0);
466
467                                line = ostrcat(line, "#http://www.solarmovie.is", 1, 0);
468                                line = ostrcat(line, url, 1, 0);
469//                              line = ostrcat(line, ";", 1, 0);
470//                              line = ostrcat(line, session, 1, 0);
471//                              line = ostrcat(line, ";", 1, 0);
472//                              line = ostrcat(line, episode, 1, 0);
473                                line = ostrcat(line, "#", 1, 0);
474                                line = ostrcat(line, "http://atemio.dyndns.tv/mediathek/menu/s", 1, 0);
475                                line = ostrcat(line, session, 1, 0);
476                                line = ostrcat(line, "e", 1, 0);
477                                line = ostrcat(line, episode, 1, 0);
478                                line = ostrcat(line, ".jpg", 1, 0);                                                                                                                             
479                                line = ostrcat(line, "#s", 1, 0);
480                                line = ostrcat(line, session, 1, 0);
481                                line = ostrcat(line, "e", 1, 0);
482                                line = ostrcat(line, episode, 1, 0);
483                                line = ostrcat(line, ".jpg#Solarmovie - ", 1, 0);
484                                line = ostrcat(line, title, 1, 0);
485                                line = ostrcat(line, "#28\n", 1, 0);
486                                free(session), session = NULL;
487                                free(episode), episode = NULL;
488                                free(url), url = NULL; 
489                                free(etitle), etitle = NULL;   
490                        }
491                }
492        }
493        free(tmpstr), tmpstr = NULL;
494
495        if(line != NULL)
496        {
497                line = string_replace_all("http://atemio.dyndns.tv/", "http://imageshack.us/md/up/grd/", line, 1);
498                if(series == 0)
499                        tmpstr = ostrcat("/tmp/tithek/solarmovie.hoster.list", NULL, 0, 0);
500                else
501                        tmpstr = ostrcat("/tmp/tithek/solarmovie.hoster.ser.list", NULL, 0, 0);
502                writesys(tmpstr, line, 0);
503
504                titheklog(debuglevel, "/tmp/solarmovie8_line", NULL, NULL, NULL, line);
505                free(line); line = NULL;
506                                       
507                struct tithek* tnode = (struct tithek*)listbox->select->handle;
508                createtithek(tnode, tnode->title,  tmpstr, tnode->pic, tnode->localname, tnode->menutitle, tnode->flag);
509                ret = 0;
510        }
511end:
512        free(tmphost), tmphost = NULL;
513//      free(tmppath), tmppath = NULL;
514               
515        return ret;
516}
517#endif
Note: See TracBrowser for help on using the repository browser.