source: titan/plugins/tithek/tithek.h @ 22199

Last change on this file since 22199 was 22199, checked in by obi, 6 years ago

[tithek] add mlehd parser

File size: 59.0 KB
Line 
1#ifndef TITHEK_H
2#define TITHEK_H
3
4#define HTTPAUTH "aXBrLUdaRmg6RkhaVkJHaG56ZnZFaEZERlRHenVpZjU2NzZ6aGpHVFVHQk5Iam0="
5
6#define TITHEKPATH "/tmp/tithek"
7int tithekdownloadrun = 0;
8int tithekdownloadcount = 0;
9int tithekrun = 0;
10int tithekexit = 0;
11
12//flag 0        - menu
13//flag 1        - menu pay hidden tithek_pay=0/1 0=hidden
14//flag 2        - http (default streamurl)
15//flag 3        - menu cover
16//flag 4        - youtube
17//flag 5        - rtl2now
18//flag 6        - superrtlnow
19//flag 7        - rtlnow
20//flag 8        - voxnow
21//flag 9        - youtube suche 10
22//flag 10       - youtube suche 25
23//flag 11       - youtube suche 50
24//flag 12       - myvideo
25//flag 13       - myvideo search 50
26//flag 14       - hoster putlocker/sockshare
27//flag 15       - hoster filenuke
28//flag 16       - superrtlnow pay
29//flag 17       - rtlnow pay
30//flag 18       - voxnow pay
31//flag 19       - rtl2now pay
32//flag 20       - hoster StreamCloud
33//flag 21       - kinox search
34//flag 22       - kinox hoster
35//flag 23       - kinox hoster serie
36//flag 24       - hoster flashx
37//flag 25       - hoster vidstream
38//flag 26       - hoster xvidstage
39//flag 27       - hoster nowvideo
40//flag 28       - solarmovie hoster
41//flag 29       - solarmovie search movie
42//flag 30       - solarmovie search serie
43//flag 31       - kinox search cast
44//flag 32       - kinox search cast results
45//flag 33       - movie4k search
46//flag 34       - movie4k hoster de
47//flag 35       - movie4k hoster other
48//flag 36       - movie4k hoster series
49//flag 37       - mlehd
50
51//flag 50       - beeg
52//flag 66   - coming soon dummy
53//flag 1000 - menu pincode
54//flag 9999 - menu hidden codecpack
55
56struct tithek
57{
58        char* title;
59        char* link;
60        char* pic;
61        char* localname;
62        char* menutitle;       
63        int flag;
64        struct tithek* prev;
65        struct tithek* next;
66};
67struct tithek *tithek = NULL;
68
69
70void freetithekcontent(struct tithek* node)
71{
72        if(node == NULL) return;
73
74        free(node->title); node->title = NULL;
75        node->link = NULL;
76        node->pic = NULL;
77        node->localname = NULL;
78        node->menutitle = NULL;
79        node->flag = 0;
80}
81
82int addtithekcontent(struct tithek* node, char *line, int len, int count, int pay)
83{
84        int ret = 0, i = 0, skip = 0;
85        char* tmpstr = NULL, *flag = NULL, *cmd = NULL, *tmp = NULL;
86        if(node == NULL) return 1;
87
88        if(len > 0) tmpstr = malloc(len + 1);
89        if(tmpstr != NULL)
90        {
91                memcpy(tmpstr, line, len);
92                tmpstr[len] = '\0';
93
94                node->title = tmpstr;
95
96                while(tmpstr[0] != '\0')
97                {
98                        if(tmpstr[0] == '#')
99                        {
100                                tmpstr[0] = '\0';
101                                tmpstr++;
102                                switch(ret)
103                                {
104                                        case 0: node->link = tmpstr; break;
105                                        case 1: node->pic = tmpstr; break;
106                                        case 2: node->localname = tmpstr; break;
107                                        case 3: node->menutitle = tmpstr; break;
108                                        case 4: flag = tmpstr; break;
109                                }
110
111                                ret++;
112                        }
113                        else
114                                tmpstr++;
115                }
116        }
117
118        if(ret != 5)
119        {
120                if(count > 0)
121                {
122                        err("tithek line %d not ok (ret=%d)", count, ret);
123                }
124                else
125                {
126                        err("add tithek (ret=%d)", ret);
127                }
128                freetithekcontent(node);
129                return 1;
130        }
131
132        if(flag != NULL) node->flag = atoi(flag);
133
134        if(node->flag == 9999 && !file_exist("/var/swap/etc/.codecpack"))
135                skip = 1;
136        else if(node->flag == 16 && pay == 0)
137                skip = 1;
138        else if(node->flag == 17 && pay == 0)
139                skip = 1;
140        else if(node->flag == 18 && pay == 0)
141                skip = 1;
142        else if(node->flag == 19 && pay == 0)
143                skip = 1;
144        else if(node->flag == 1 && pay == 0)
145                skip = 1;
146        else if(node->flag == 35 && pay == 0)
147                skip = 1;
148        else if(node->flag == 9999)
149        {
150/*
151                //cmd = ostrcat(cmd, "wget -s http://", 1, 0);
152                cmd = ostrcat(cmd, "kin", 1, 0);
153                cmd = ostrcat(cmd, "ox", 1, 0);
154                cmd = ostrcat(cmd, ".", 1, 0);
155                cmd = ostrcat(cmd, "to", 1, 0);
156
157                //if(system(cmd) != 0)
158                for(i = 0; i < 3; i++)
159                {
160                        free(tmp); tmp = NULL;
161                        tmp = gethttp(cmd, "/", 80, NULL, NULL, 10000, NULL, 0);
162                        if(tmp != NULL) break;
163                }
164                if(tmp == NULL)
165                        skip = 1;
166
167*/
168        }
169
170        if(skip == 1)
171        {
172                freetithekcontent(node);
173                return 1;
174        }
175
176        free(tmp); tmp = NULL;
177        free(cmd), cmd = NULL;
178               
179        return 0;
180}
181
182struct tithek* addtithek(char *line, int len, int count, struct tithek* last, int pay)
183{
184        //debug(1000, "in");
185        struct tithek *newnode = NULL, *prev = NULL, *node = NULL;
186        int ret = 0;
187
188        if(line == NULL) return NULL;
189
190        newnode = (struct tithek*)calloc(1, sizeof(struct tithek));
191        if(newnode == NULL)
192        {
193                err("no memory");
194                return NULL;
195        }
196
197        ret = addtithekcontent(newnode, line, len, count, pay);
198        if(ret == 1)
199        {
200                free(newnode);
201                return NULL;
202        }
203
204        node = tithek;
205
206        if(last == NULL)
207        {
208                while(node != NULL)
209                {
210                        prev = node;
211                        node = node->next;
212                }
213        }
214        else
215        {
216                prev = last;
217                node = last->next;
218        }
219
220        if(prev == NULL)
221                tithek = newnode;
222        else
223        {
224                prev->next = newnode;
225                newnode->prev = prev;
226        }
227        newnode->next = node;
228        if(node != NULL) node->prev = newnode;
229
230        //debug(1000, "out");
231        return newnode;
232}
233
234struct tithek* createtithek(struct tithek* update, char* title, char* link, char* pic, char* localname, char* menutitle, int flag)
235{
236        int pay = 0;
237        struct tithek* tnode = NULL;
238        char* tmpstr = NULL;
239       
240        pay = getconfigint("tithek_pay", NULL);
241
242        title = stringreplacechar(title, '#', ' ');
243        link = stringreplacechar(link, '#', ' ');
244        pic = stringreplacechar(pic, '#', ' ');
245        localname = stringreplacechar(localname, '#', ' ');
246        menutitle = stringreplacechar(menutitle, '#', ' ');
247       
248        tmpstr = ostrcat(tmpstr, title, 1, 0);
249        tmpstr = ostrcat(tmpstr, "#", 1, 0);
250        tmpstr = ostrcat(tmpstr, link, 1, 0);
251        tmpstr = ostrcat(tmpstr, "#", 1, 0);
252        tmpstr = ostrcat(tmpstr, pic, 1, 0);
253        tmpstr = ostrcat(tmpstr, "#", 1, 0);
254        tmpstr = ostrcat(tmpstr, localname, 1, 0);
255        tmpstr = ostrcat(tmpstr, "#", 1, 0);
256        tmpstr = ostrcat(tmpstr, menutitle, 1, 0);
257        tmpstr = ostrcat(tmpstr, "#", 1, 0);
258        tmpstr = ostrcat(tmpstr, oitoa(flag), 1, 1);
259
260        tmpstr = string_replace_all("\n", "", tmpstr, 1);
261        tmpstr = string_replace_all("\r", "", tmpstr, 1);
262
263        if(update != NULL)
264        {
265                freetithekcontent(update);
266                addtithekcontent(update, tmpstr, strlen(tmpstr), 1, pay);
267                tnode = update;
268        }
269        else
270                tnode = addtithek(tmpstr, strlen(tmpstr), 1, NULL, pay);
271
272        free(tmpstr);
273
274        return tnode;
275}
276
277int readtithek(const char* filename)
278{
279        debug(1000, "in");
280        FILE *fd = NULL;
281        char *fileline = NULL;
282        int linecount = 0, len = 0, pay = 0;
283        struct tithek* last = NULL, *tmplast = NULL;
284
285        fileline = malloc(MINMALLOC);
286        if(fileline == NULL)
287        {
288                err("no memory");
289                return 1;
290        }
291
292        fd = fopen(filename, "r");
293        if(fd == NULL)
294        {
295                perr("can't open %s", filename);
296                free(fileline);
297                return 1;
298        }
299
300        pay = getconfigint("tithek_pay", NULL);
301
302        while(fgets(fileline, MINMALLOC, fd) != NULL)
303        {
304                if(fileline[0] == '\n')
305                        continue;
306                len = strlen(fileline) - 1;
307                if(fileline[len] == '\n')
308                        fileline[len] = '\0';
309                if(fileline[len - 1] == '\r')
310                        fileline[len - 1] = '\0';
311
312                linecount++;
313
314                if(last == NULL) last = tmplast;
315                last = addtithek(fileline, len + 2, linecount, last, pay);
316                if(last != NULL) tmplast = last;
317        }
318
319        free(fileline);
320        fclose(fd);
321        return linecount;
322}
323
324int deltithek(char* link)
325{
326        debug(1000, "in");
327        int ret = 1;
328
329        struct tithek *node = tithek, *prev = tithek;
330
331        while(node != NULL)
332        {
333                if(ostrcmp(link, node->link) == 0)
334                {
335                        ret = 0;
336                        if(node == tithek)
337                        {
338                                tithek = node->next;
339                                if(tithek != NULL)
340                                        tithek->prev = NULL;
341                        }
342                        else
343                        {
344                                prev->next = node->next;
345                                if(node->next != NULL)
346                                        node->next->prev = prev;
347                        }
348
349                        freetithekcontent(node);
350
351                        free(node);
352                        node = NULL;
353
354                        break;
355                }
356
357                prev = node;
358                node = node->next;
359        }
360
361        debug(1000, "out");
362        return ret;
363}
364
365void freetithek()
366{
367        debug(1000, "in");
368        struct tithek *node = tithek, *prev = tithek;
369
370        while(node != NULL)
371        {
372                prev = node;
373                node = node->next;
374                if(prev != NULL)
375                        deltithek(prev->link);
376        }
377
378        debug(1000, "out");
379}
380
381void tithekdownloadthread(struct stimerthread* timernode, struct download* node, int flag)
382{
383        int defpic = 0;
384
385        tithekdownloadcount++;
386
387        if(node != NULL)
388        {
389                m_lock(&status.tithekmutex, 20);
390                if(file_exist(node->filename))
391                {
392                        m_unlock(&status.tithekmutex, 20);
393                        goto end;
394                }
395
396                FILE *fd; fd = fopen(node->filename, "w");
397                if(fd != NULL) fclose(fd);
398                m_unlock(&status.tithekmutex, 20);
399
400                gethttpreal(node->host, node->page, node->port, node->filename, node->auth, NULL, 0, NULL, NULL, node->timeout, 0);
401
402                if(tithekrun == 0)
403                        unlink(node->filename);
404                else
405                {
406                        //check file size
407                        /*
408                        off64_t checkpic = getfilesize(node->filename);
409                        if(checkpic < 200) defpic = 1;
410                        */
411
412                        //check file is gif or html
413                        if(defpic == 0)
414                        {
415                                char* tmp = NULL;
416                                tmp = readbintomem(node->filename, 3);
417                                if(ostrncmp("GIF", tmp, 3) == 0) defpic = 1; //gif
418                                if(ostrncmp("<", tmp, 1) == 0) defpic = 1; //html
419                                free(tmp); tmp = NULL;
420                        }
421
422                        if(defpic == 1)
423                        {
424                                m_lock(&status.tithekmutex, 20);
425                                unlink(node->filename);
426                                symlink("/var/usr/local/share/titan/plugins/tithek/default.jpg", node->filename);
427                                m_unlock(&status.tithekmutex, 20);
428                        }
429                }
430
431end:
432                free(node->host); node->host = NULL;
433                free(node->page); node->page = NULL;
434                free(node->filename); node->filename = NULL;
435                free(node->auth); node->auth = NULL;
436        }
437
438        free(node); node = NULL;
439
440        tithekdownloadcount--;
441        tithekdownloadrun = 1;
442}
443
444char* tithekdownload(char* link, char* localname, char* pw, int pic, int flag)
445{
446        int ret = 1, port = 80, timeout = 10000;
447        char* ip = NULL, *pos = NULL, *path = NULL;
448        char* tmpstr = NULL, *localfile = NULL;
449
450        if(link == NULL) return NULL;
451
452        ip = string_replace("http://", "", (char*)link, 0);
453        // tithek security
454        ip = string_replace_all("imageshack.us/md/up/grd/", "atemio.dyndns.tv/", ip, 1);
455
456        if(ip != NULL)
457                pos = strchr(ip, '/');
458        if(pos != NULL)
459        {
460                pos[0] = '\0';
461                path = pos + 1;
462        }
463
464        if(ostrstr(ip, ":") != NULL)
465        {
466                ip = oregex("http://(.*):.*", link);
467                port = atoi(oregex("http://.*:(.*)/.*", link));
468        }
469
470        tmpstr = ostrcat(path, NULL, 0, 0);
471
472        if(flag == 0)
473        {
474                localfile = ostrcat(TITHEKPATH, "/", 0, 0);
475                if(localname == NULL)
476                        localfile = ostrcat(localfile, basename(tmpstr), 1, 0);
477                else
478                        localfile = ostrcat(localfile, localname, 1, 0);
479        }
480        else
481        {
482                localfile = ostrcat(getconfig("rec_streampath", NULL), "/", 0, 0);
483                if(localname == NULL)
484                        localfile = ostrcat(localfile, basename(tmpstr), 1, 0);
485                else
486                        localfile = ostrcat(localfile, localname, 1, 0);
487        }
488
489/*
490        debug(99, "---------------------------------------");
491        debug(99, "link: %s", link);
492        debug(99, "localname: %s", localname);
493        debug(99, "---------------------------------------");
494        debug(99, "ip: %s", ip);
495        debug(99, "port: %d", port);
496        debug(99, "path: %s", path);
497        debug(99, "localfile: %s", localfile);
498//      debug(99, "pw: %s", pw);
499        debug(99, "---------------------------------------");
500*/
501        if(flag == 0)
502        {
503                if(localfile != NULL && !file_exist(localfile))
504                {
505                        if(pic == 1)
506                        {
507                                if(tithekdownloadcount >= 24) //start max 24 threads
508                                        gethttp(ip, path, port, localfile, pw, timeout, NULL, 0);
509                                else
510                                {
511                                        //dnode is freed in thread
512                                        struct download* dnode = calloc(1, sizeof(struct download));
513                                        if(dnode != NULL)
514                                        {
515                                                dnode->host = ostrcat(ip, NULL, 0, 0);
516                                                dnode->page = ostrcat(path, NULL, 0, 0);
517                                                dnode->port = port;
518                                                dnode->filename = ostrcat(localfile, NULL, 0, 0);
519                                                dnode->auth = ostrcat(pw, NULL, 0, 0);
520                                                dnode->connfd = -1;
521                                                dnode->ret = -1;
522                                                dnode->timeout = timeout;
523                                                addtimer(&tithekdownloadthread, START, 100, 1, (void*)dnode, NULL, NULL);
524                                        }
525                                }
526                        }
527                        else
528                                gethttp(ip, path, port, localfile, pw, timeout, NULL, 0);                       
529                }
530        }
531        else
532        {
533       
534                if(localfile != NULL && file_exist(localfile))
535                        ret = textbox(_("Message"), _("File exist, overwrite?"), _("OK"), getrcconfigint("rcok", NULL), _("EXIT"), getrcconfigint("rcexit", NULL), NULL, 0, NULL, 0, 600, 200, 0, 0);
536
537                if(localfile != NULL && ret == 1)
538                        screendownload("Download", ip, path, port, localfile, pw, timeout, 0);
539        }
540
541        free(ip); ip = NULL;
542        free(tmpstr); tmpstr = NULL;
543
544        return localfile;
545}
546
547int createtithekplay(char* titheklink, struct skin* grid, struct skin* listbox, struct skin* countlabel, int flag)
548{
549        int gridbr = 0, posx = 0, count = 0, sumcount = 0, count1 = 0, pagecount = 0, skip = 0;
550        int localfile = 0;
551        struct skin* tmp = NULL;
552        char* tithekfile = NULL;
553        char* tmpstr = NULL;
554
555        if(!ostrncmp("http://", titheklink, 7))
556                tithekfile = tithekdownload(titheklink, NULL, HTTPAUTH, 0, 0);
557        else
558        {
559                tithekfile = ostrcat(titheklink, NULL, 0, 0);
560                localfile = 1;
561        }
562
563        delmarkedscreennodes(grid, 1);
564        freetithek();
565//      if(readtithek(tithekfile) != 0) return 1;
566        int linecount = readtithek(tithekfile);
567//      if(linecount == 0) return 1;
568       
569        struct tithek* titheknode = tithek;
570
571        int height = 500;
572        int width = 590;
573        int picheight = 480;
574        int picwidth = 570;
575        int zcount = 2;
576        int fontsize = 25;
577        int pcount = 2;
578
579        if(getconfigint("tithek_cover", NULL) == 0 || getconfigint("tithek_view", NULL) == 0)
580        {
581                if(linecount > 2)
582                {
583                        height = 280;
584                        width = 390;
585                        picheight = 230;
586                        picwidth = 370;
587                        zcount = 3;
588                        fontsize = 20;
589                        pcount = 6;
590                }
591         
592                if(linecount > 8)
593                {
594                        height = 180;
595                        width = 295;
596                        picheight = 130;
597                        picwidth = 270;
598                        zcount = 4;
599                        fontsize = 18;
600                        pcount = 12;
601                }
602
603                if(linecount > 19)
604                {
605                        height = 140;
606                        width = 235;
607                        picheight = 90;
608                        picwidth = 210;
609                        zcount = 5;
610                        fontsize = 16;
611                        pcount = 20;
612                }
613       
614                if(linecount > 25)
615                {
616                        height = 111;
617                        width = 196;
618                        picheight = 60;
619                        picwidth = 150;
620                        zcount = 6;
621                        fontsize = 14;
622                        pcount = 30;
623                }
624        }
625       
626        if((getconfigint("tithek_cover", NULL) == 1 && flag == 3) || (getconfigint("tithek_view", NULL) == 1 && flag != 3))
627        {
628                height = 500;
629                width = 590;
630                picheight = 480;
631                picwidth = 570;
632                zcount = 2;
633                fontsize = 25;
634                pcount = 2;
635        }
636
637        if((getconfigint("tithek_cover", NULL) == 2 && flag == 3) || (getconfigint("tithek_view", NULL) == 2 && flag != 3))
638        {
639                height = 280;
640                width = 390;
641                picheight = 230;
642                picwidth = 370;
643                zcount = 3;
644                fontsize = 20;
645                pcount = 6;
646        }
647
648        if((getconfigint("tithek_cover", NULL) == 3 && flag == 3) || (getconfigint("tithek_view", NULL) == 3 && flag != 3))
649        {
650                height = 180;
651                width = 295;
652                picheight = 130;
653                picwidth = 270;
654                zcount = 4;
655                fontsize = 18;
656                pcount = 12;
657        }
658
659        if((getconfigint("tithek_cover", NULL) == 4 && flag == 3) || (getconfigint("tithek_view", NULL) == 4 && flag != 3))
660        {
661                height = 140;
662                width = 235;
663                picheight = 90;
664                picwidth = 210;
665                zcount = 5;
666                fontsize = 16;
667                pcount = 20;
668        }
669
670        if((getconfigint("tithek_cover", NULL) == 5 && flag == 3) || (getconfigint("tithek_view", NULL) == 5 && flag != 3))
671        {
672                height = 111;
673                width = 196;
674                picheight = 60;
675                picwidth = 150;
676                zcount = 6;
677                fontsize = 14;
678                pcount = 30;
679        }
680
681        if(getconfigint("tithek_pic_ratio", NULL) == 1)
682        {
683                picwidth = 2;
684                picheight = 2;
685        }
686                       
687        while(titheknode != NULL)
688        {
689                tmp = addlistbox(grid, listbox, tmp, 1);
690                if(tmp != NULL)
691                {
692                        skip = 0;
693                        sumcount++;
694                        count++;
695                        count1++;
696                        if(gridbr == 0)
697                                tmp->type = GRIDBR;
698                        gridbr = 1;
699                        tmp->wrap = YES;
700
701                        tmp->picheight = picheight;
702                        tmp->picwidth = picwidth;
703                                                               
704                        tmp->fontsize = fontsize;
705                        tmp->height = height;
706                        tmp->width = width;
707                        tmp->prozwidth = 0;
708                        //tmp->bgcol = 0xffffff;
709                        tmp->bgspace = 1;
710                        tmp->vspace = 10;
711                        tmp->hspace = 10;
712                        tmp->posx = posx;
713                        //tmp->fontcol = 0x0000ff;
714                        tmp->halign = CENTER;
715                        tmp->valign = TEXTBOTTOM;
716                        changetext(tmp, titheknode->title);
717                        tmp->handle = (char*)titheknode;
718                        posx += tmp->width;
719                        if(count >= zcount)
720                        {
721                                count = 0;
722                                posx = 0;
723                                gridbr = 0;
724                        }
725                       
726                        if(count1 >= pcount)
727                        {
728                                count1 = 0;
729                                pagecount++;
730                                skip = 1;
731                        }
732                }
733                titheknode = titheknode->next;
734        }
735
736        if(skip == 0)
737                pagecount++;
738
739        tmpstr = oitoa(sumcount);
740
741        char* tmpstr1 = ostrcat(_("found"), NULL, 0, 0);
742        tmpstr1 = ostrcat(tmpstr1, " ", 1, 0);
743        tmpstr1 = ostrcat(tmpstr1, tmpstr, 1, 0);
744        free(tmpstr); tmpstr = NULL;
745        tmpstr1 = ostrcat(tmpstr1, " ", 1, 0);
746        tmpstr1 = ostrcat(tmpstr1, _("Results"), 1, 0);
747        changetext(countlabel, tmpstr1);
748        free(tmpstr1); tmpstr1 = NULL;
749
750        if(localfile == 0)
751                unlink(tithekfile);
752       
753        free(tithekfile); tithekfile = NULL;
754        return pagecount;
755}
756
757void removefav(char* title, char* link, char* pic, char* localname, char* menutitle, int flag)
758{
759        int count = 0, i = 0;
760        char* tmpstr = NULL, *tmpstr1 = NULL, *input = NULL;
761        struct splitstr* ret = NULL;
762
763        input = ostrcat(input, title, 1, 0);
764        input = ostrcat(input, "#", 1, 0);
765        input = ostrcat(input, link, 1, 0);
766        input = ostrcat(input, "#", 1, 0);
767        input = ostrcat(input, pic, 1, 0);
768        input = ostrcat(input, "#", 1, 0);
769        input = ostrcat(input, localname, 1, 0);
770        input = ostrcat(input, "#", 1, 0);
771        input = ostrcat(input, menutitle, 1, 0);
772        input = ostrcat(input, "#", 1, 0);
773        input = ostrcat(input, oitoa(flag), 1, 1);
774       
775        tmpstr = readfiletomem(getconfig("tithek_fav", NULL), 0);
776       
777        ret = strsplit(tmpstr, "\n", &count);
778
779        if(ret != NULL)
780        {
781                for(i = 0; i < count; i++)
782                {
783                        if(ostrcmp((ret[i]).part, input) != 0)
784                        {
785                                tmpstr1 = ostrcat(tmpstr1, ret[i].part, 1, 0);
786                                tmpstr1 = ostrcat(tmpstr1, "\n", 1, 0);
787                        }
788                        else
789                                printf("remove: %s\n", ret[i].part);
790                }
791        }
792
793        if(tmpstr1 != NULL && strlen(tmpstr1) > 0)
794                tmpstr1[strlen(tmpstr1) - 1] = '\0';
795
796        if(tmpstr1 == NULL)
797                writesys(getconfig("tithek_fav", NULL), "", 0);
798        else
799                writesys(getconfig("tithek_fav", NULL), tmpstr1, 0);
800
801        free(ret); ret = NULL;
802        free(tmpstr); tmpstr = NULL;
803        free(tmpstr1); tmpstr1 = NULL;
804        free(input); input = NULL;
805}
806
807void addfav(char* title, char* link, char* pic, char* localname, char* menutitle, int flag)
808{
809        int count = 0, i = 0;
810        char* tmpstr = NULL, *tmpstr1 = NULL, *input = NULL;
811        struct splitstr* ret = NULL;
812
813        input = ostrcat(input, title, 1, 0);
814        input = ostrcat(input, "#", 1, 0);
815        input = ostrcat(input, link, 1, 0);
816        input = ostrcat(input, "#", 1, 0);
817        input = ostrcat(input, pic, 1, 0);
818        input = ostrcat(input, "#", 1, 0);
819        input = ostrcat(input, localname, 1, 0);
820        input = ostrcat(input, "#", 1, 0);
821        input = ostrcat(input, menutitle, 1, 0);
822        input = ostrcat(input, "#", 1, 0);
823        input = ostrcat(input, oitoa(flag), 1, 1);
824        // tithek security
825        input = string_replace_all("http://atemio.dyndns.tv/", "http://imageshack.us/md/up/grd/", input, 1);
826       
827        tmpstr1 = ostrcat(tmpstr1, input, 1, 0);
828        tmpstr1 = ostrcat(tmpstr1, "\n", 1, 0);
829
830        tmpstr = readfiletomem(getconfig("tithek_fav", NULL), 0);
831       
832        ret = strsplit(tmpstr, "\n", &count);
833
834        if(ret != NULL)
835        {
836                for(i = 0; i < count; i++)
837                {
838                        if(ostrcmp((ret[i]).part, input) != 0)
839                        {
840                                tmpstr1 = ostrcat(tmpstr1, ret[i].part, 1, 0);
841                                tmpstr1 = ostrcat(tmpstr1, "\n", 1, 0);
842                        }
843                }
844        }
845
846        if(tmpstr1 != NULL && strlen(tmpstr1) > 0)
847                tmpstr1[strlen(tmpstr1) - 1] = '\0';
848
849        writesys(getconfig("tithek_fav", NULL), tmpstr1, 0);
850
851        free(ret); ret = NULL;
852        free(tmpstr); tmpstr = NULL;
853        free(tmpstr1); tmpstr1 = NULL;
854        free(input); input = NULL;
855}
856
857void cacheplay(char* link, char* filename, int flag)
858{
859        struct skin* load = getscreen("loadingproz");
860        struct skin* proztext = getscreennode(load, "proztext");
861
862        drawscreen(load, 0, 0); 
863        int port = 80, count = 0, mcount = 0;
864        off64_t size = 0, msize = 0;
865        char* host = NULL, *pos = NULL, *path = NULL, *file = NULL, *tmpstr = NULL;
866        host = string_replace("http://", "", (char*)link, 0);
867
868        if(host != NULL)
869                pos = strchr(host, '/');
870        if(pos != NULL)
871        {
872                pos[0] = '\0';
873                path = pos + 1;
874        }
875
876        file = ostrcat(getconfig("rec_streampath", NULL), "/.cache.", 0, 0);
877        file = ostrcat(file, filename, 1, 0);
878
879        if(ostrstr(host, ":") != NULL)
880        {
881                host = oregex("http://(.*):.*", link);
882                port = atoi(oregex("http://.*:(.*)/.*", link));
883        }
884
885        debug(99, "---------------------------------------");
886        debug(99, "link: %s", link);
887        debug(99, "---------------------------------------");
888        debug(99, "host: %s", host);
889        debug(99, "port: %d", port);
890        debug(99, "path: %s", path);
891        debug(99, "local: %s", file);
892        debug(99, "---------------------------------------");
893       
894       
895        struct download* dnode = NULL;
896        dnode = calloc(1, sizeof(struct download));
897        if(dnode == NULL)
898        {
899                err("no mem");
900                return;
901        }               
902        dnode->host = host;
903        dnode->page = path;
904        dnode->port = port;
905        dnode->filename = file;
906        dnode->auth = NULL;
907        dnode->connfd = -1;
908        dnode->ret = -1;
909        dnode->timeout = 30000;
910       
911        addtimer(&gethttpstruct, START, 1000, 1, (void*)dnode, NULL, NULL);
912
913        if(flag == 1)
914        {
915                mcount = 120;
916                msize = 10485760;
917        }
918        else if(flag == 2)
919        {
920                mcount = 240; 
921                msize = 20971520;
922        }
923        else if(flag == 3)
924        {
925                mcount = 360; 
926                msize = 31457280;
927        }
928                       
929        while(count < mcount || size >= msize)
930        {
931                sleep(1);
932                count++;
933                if(file_exist(file))
934                        size = getfilesize(file);
935
936                int proz = 0;
937                int proz1 = size * 100 / msize;
938                debug(99, "size (%dprozent)", proz1);
939
940                int proz2 = count * 100 / mcount;
941                debug(99, "time (%dprozent)", proz2);
942               
943                if(proz1 > proz2)
944                        proz = proz1;
945                else
946                        proz = proz2;
947
948                debug(99, "cacheing...(%lldkb) (%dprozent)", size / 1024, proz);
949
950                if(size >= msize)
951                        break;
952                if(count >= mcount)
953                        break;
954               
955                tmpstr = ostrcat(_("please wait..."), " (", 0, 0);
956                tmpstr = ostrcat(tmpstr, oitoa(proz), 1, 1);
957                tmpstr = ostrcat(tmpstr, "%)", 1, 0);
958                clearscreen(load);
959                changetext(proztext, tmpstr);
960                drawscreen(load, 0, 0);
961                free(tmpstr), tmpstr = NULL;
962        }
963
964        screenplay(file, filename, 2, 0);
965        sockclose(&dnode->connfd);
966        free(dnode); dnode = NULL;
967
968        tmpstr = ostrcat(tmpstr, _("Remove Cachefile ?"), 1, 0);
969        tmpstr = ostrcat(tmpstr, "\n\n", 1, 0);
970        tmpstr = ostrcat(tmpstr, file, 1, 0);
971       
972        if(textbox(_("Message"), tmpstr, _("OK"), getrcconfigint("rcok", NULL), _("EXIT"), getrcconfigint("rcexit", NULL), NULL, 0, NULL, 0, 600, 200, 0, 0) == 1)
973        {
974                unlink(file);
975        }
976        free(tmpstr), tmpstr = NULL;
977        free(file), file = NULL;
978        free(host), host = NULL;
979}
980
981void backgrounddl(char* link, char* filename)
982{
983        int port = 80, ret = 0;
984        char* host = NULL, *pos = NULL, *path = NULL, *file = NULL, *tmpstr = NULL;
985        host = string_replace("http://", "", (char*)link, 0);
986
987        if(host != NULL)
988                pos = strchr(host, '/');
989        if(pos != NULL)
990        {
991                pos[0] = '\0';
992                path = pos + 1;
993        }
994
995        file = ostrcat(getconfig("rec_streampath", NULL), "/", 0, 0);
996        file = ostrcat(file, filename, 1, 0);
997
998        if(ostrstr(host, ":") != NULL)
999        {
1000                host = oregex("http://(.*):.*", link);
1001                port = atoi(oregex("http://.*:(.*)/.*", link));
1002        }
1003
1004        debug(99, "---------------------------------------");
1005        debug(99, "link: %s", link);
1006        debug(99, "---------------------------------------");
1007        debug(99, "host: %s", host);
1008        debug(99, "port: %d", port);
1009        debug(99, "path: %s", path);
1010        debug(99, "local: %s", file);
1011        debug(99, "---------------------------------------");
1012       
1013        ret = startbgdownload(host, path, port, file, NULL, 30000, 1);
1014        if(ret == 1)
1015                textbox(_("Message"), _("Can't start download.\nPlease try later."), _("OK"), getrcconfigint("rcok", NULL), _("EXIT"), getrcconfigint("rcexit", NULL), NULL, 0, NULL, 0, 600, 200, 0, 0);
1016                                       
1017        free(tmpstr), tmpstr = NULL;
1018        free(file), file = NULL;
1019        free(host), host = NULL;
1020}
1021       
1022void submenu(struct skin* listbox, struct skin* load, char* title)
1023{
1024        int flag = 0;
1025        if(status.security == 1 || checkbox("WHITEBOX") == 1)
1026        {
1027                drawscreen(load, 0, 0); 
1028                char* tmpstr = ostrcat(((struct tithek*)listbox->select->handle)->link, NULL, 0, 0);
1029                char* tmpstr1 = NULL;
1030
1031                if(((struct tithek*)listbox->select->handle)->flag == 2)
1032                {
1033                        if(tmpstr != NULL) tmpstr1 = ostrcat(tmpstr, NULL, 0, 0);
1034                }                                               
1035                else if(((struct tithek*)listbox->select->handle)->flag == 4)
1036                {
1037                        if(tmpstr != NULL) tmpstr1 = youtube(tmpstr, NULL, NULL, 1);
1038                }                                               
1039                else if(((struct tithek*)listbox->select->handle)->flag == 5)
1040                {
1041                        if(tmpstr != NULL) tmpstr1 = rtl2now(tmpstr, "http://rtl2now.rtl2.de", "rtl2now", 1);
1042                }
1043                else if(((struct tithek*)listbox->select->handle)->flag == 6)
1044                {
1045                        if(tmpstr != NULL) tmpstr1 = rtl2now(tmpstr, "http://www.superrtlnow.de", "superrtlnow", 1);
1046                }
1047                else if(((struct tithek*)listbox->select->handle)->flag == 7)
1048                {
1049                        if(tmpstr != NULL) tmpstr1 = rtl2now(tmpstr, "http://rtl-now.rtl.de", "rtlnow", 1);
1050                }
1051                else if(((struct tithek*)listbox->select->handle)->flag == 8)
1052                {
1053                        if(tmpstr != NULL) tmpstr1 = rtl2now(tmpstr, "http://www.voxnow.de", "voxnow", 1);
1054                }
1055                else if(((struct tithek*)listbox->select->handle)->flag == 12)
1056                {
1057                        if(tmpstr != NULL) tmpstr1 = myvideo(tmpstr, NULL, NULL, 1);
1058                }
1059                else if(((struct tithek*)listbox->select->handle)->flag == 14)
1060                {
1061                        if(tmpstr != NULL) tmpstr1 = kinox(tmpstr, NULL, NULL, 1);
1062                }
1063                else if(((struct tithek*)listbox->select->handle)->flag == 15)
1064                {
1065                        if(tmpstr != NULL) tmpstr1 = kinox(tmpstr, NULL, NULL, 2);
1066                }
1067                else if(((struct tithek*)listbox->select->handle)->flag == 16)
1068                {
1069                        if(tmpstr != NULL) tmpstr1 = rtl2now(tmpstr, "http://www.superrtlnow.de", "superrtlnow", 1);
1070                }
1071                else if(((struct tithek*)listbox->select->handle)->flag == 17)
1072                {
1073                        if(tmpstr != NULL) tmpstr1 = rtl2now(tmpstr, "http://rtl-now.rtl.de", "rtlnow", 1);
1074                }
1075                else if(((struct tithek*)listbox->select->handle)->flag == 18)
1076                {
1077                        if(tmpstr != NULL) tmpstr1 = rtl2now(tmpstr, "http://www.voxnow.de", "voxnow", 1);
1078                }
1079                else if(((struct tithek*)listbox->select->handle)->flag == 19)
1080                {
1081                        if(tmpstr != NULL) tmpstr1 = rtl2now(tmpstr, "http://rtl2now.rtl2.de", "rtl2now", 1);
1082                }
1083                else if(((struct tithek*)listbox->select->handle)->flag == 20)
1084                {
1085                        if(tmpstr != NULL) tmpstr1 = kinox(tmpstr, NULL, NULL, 3);
1086                }
1087                else if(((struct tithek*)listbox->select->handle)->flag == 24)
1088                {
1089                        if(tmpstr != NULL) tmpstr1 = kinox(tmpstr, NULL, NULL, 4);
1090                }
1091                else if(((struct tithek*)listbox->select->handle)->flag == 25)
1092                {
1093                        if(tmpstr != NULL) tmpstr1 = kinox(tmpstr, NULL, NULL, 5);
1094                }
1095                else if(((struct tithek*)listbox->select->handle)->flag == 26)
1096                {
1097                        if(tmpstr != NULL) tmpstr1 = kinox(tmpstr, NULL, NULL, 6);
1098                }
1099                else if(((struct tithek*)listbox->select->handle)->flag == 27)
1100                {
1101                        if(tmpstr != NULL) tmpstr1 = kinox(tmpstr, NULL, NULL, 7);
1102                }
1103                else if(((struct tithek*)listbox->select->handle)->flag == 37)
1104                {
1105                        if(tmpstr != NULL) tmpstr1 = mlehd(tmpstr);
1106                }
1107                else if(((struct tithek*)listbox->select->handle)->flag == 50)
1108                {
1109                        if(tmpstr != NULL) tmpstr1 = beeg(tmpstr);
1110                }
1111
1112                free(tmpstr); tmpstr = NULL;
1113
1114                if(ostrcmp(title, "TiThek - Internet Radio") == 0)
1115                        flag = 4;
1116
1117                if(tmpstr1 != NULL)
1118                {
1119                        char* filename = ostrcat(title, "_", 0, 0);
1120                        filename = ostrcat(filename, ((struct tithek*)listbox->select->handle)->title, 1, 0);
1121                        filename = ostrcat(filename, ".mp4", 1, 0);
1122                        filename = string_replace_all(" ", ".", filename, 1);
1123                        filename = string_replace_all("-", "_", filename, 1);
1124                        filename = string_replace_all("._.", "_", filename, 1);
1125                        debug(99, "filename: %s", filename);
1126                               
1127                        char* keyconf = NULL;
1128                        char* skintitle = "Choice Playback";
1129                        struct menulist* mlist = NULL, *mbox = NULL;
1130                       
1131                        addmenulist(&mlist, "Streaming Playback (default)", NULL, NULL, 0, 0);
1132                       
1133                        if(!ostrncmp("http://", tmpstr1, 7))
1134                        {
1135                                if(flag == 4)
1136                                {
1137                                        addmenulist(&mlist, "Streaming Playback Caching (0.5MB)", NULL, NULL, 0, 0);
1138                                        addmenulist(&mlist, "Streaming Playback Caching (1MB)", NULL, NULL, 0, 0);
1139                                }       
1140                                else if(!ostrncmp("http://", tmpstr1, 7))
1141                                {
1142//                                      addmenulist(&mlist, "Streaming Playback Caching (1MB)", NULL, NULL, 0, 0);
1143//                                      addmenulist(&mlist, "Streaming Playback Caching (2MB)", NULL, NULL, 0, 0);
1144//                                      addmenulist(&mlist, "Streaming Playback Caching (3MB)", NULL, NULL, 0, 0);
1145//                                      addmenulist(&mlist, "Streaming Playback Caching (4MB)", NULL, NULL, 0, 0);
1146                                        addmenulist(&mlist, "Streaming Playback Caching (5MB)", NULL, NULL, 0, 0);
1147                                        addmenulist(&mlist, "Streaming Playback Caching (7.5MB)", NULL, NULL, 0, 0);
1148                                        addmenulist(&mlist, "Streaming Playback Caching (10MB)", NULL, NULL, 0, 0);
1149                                        if(file_exist(getconfig("rec_streampath", NULL)))
1150                                        {
1151//                                              addmenulist(&mlist, "File Caching Playback (10MB / 120s)", NULL, NULL, 0, 0);
1152//                                              addmenulist(&mlist, "File Caching Playback (20MB / 240s)", NULL, NULL, 0, 0);
1153//                                              addmenulist(&mlist, "File Caching Playback (30MB / 360s)", NULL, NULL, 0, 0);
1154//                                              if(file_exist("/var/swap/etc/.tithekdownload") || status.expertmodus >= 11)
1155                                                if(file_exist("/var/swap/etc/.codecpack"))
1156                                                {
1157                                                        addmenulist(&mlist, "Download Full File", NULL, NULL, 0, 0);
1158                                                        addmenulist(&mlist, "Download Full File (background)", NULL, NULL, 0, 0);
1159                                                }
1160                                        }
1161                                }
1162                        }
1163                        mbox = menulistbox(mlist, NULL, skintitle, NULL, NULL, 1, 0);
1164                        if(mbox != NULL) keyconf = mbox->name;
1165                        if(ostrcmp(keyconf, "Streaming Playback (default)") == 0)
1166                        {
1167                                addconfigtmp("playerbuffersize", "0");
1168                                screenplay(tmpstr1, filename, 2, flag);
1169                                delconfigtmp("playerbuffersize");
1170                        }
1171                        else if(ostrcmp(keyconf, "Streaming Playback Caching (0.5MB)") == 0)
1172                        {
1173                                addconfigtmp("playerbuffersize", "524288");
1174                                screenplay(tmpstr1, filename, 2, flag);
1175                                delconfigtmp("playerbuffersize");
1176                        }
1177                        else if(ostrcmp(keyconf, "Streaming Playback Caching (1MB)") == 0)
1178                        {
1179                                addconfigtmp("playerbuffersize", "1048576");
1180                                screenplay(tmpstr1, filename, 2, flag);
1181                                delconfigtmp("playerbuffersize");
1182                        }
1183                        else if(ostrcmp(keyconf, "Streaming Playback Caching (2MB)") == 0)
1184                        {
1185                                addconfigtmp("playerbuffersize", "2097152");
1186                                screenplay(tmpstr1, filename, 2, flag);
1187                                delconfigtmp("playerbuffersize");
1188                        }
1189                        else if(ostrcmp(keyconf, "Streaming Playback Caching (3MB)") == 0)
1190                        {
1191                                addconfigtmp("playerbuffersize", "3145728");
1192                                screenplay(tmpstr1, filename, 2, flag);
1193                                delconfigtmp("playerbuffersize");
1194                        }
1195                        else if(ostrcmp(keyconf, "Streaming Playback Caching (4MB)") == 0)
1196                        {
1197                                addconfigtmp("playerbuffersize", "4194304");
1198                                screenplay(tmpstr1, filename, 2, flag);
1199                                delconfigtmp("playerbuffersize");
1200                        }
1201                        else if(ostrcmp(keyconf, "Streaming Playback Caching (5MB)") == 0)
1202                        {
1203                                addconfigtmp("playerbuffersize", "5242880");
1204                                screenplay(tmpstr1, filename, 2, flag);
1205                                delconfigtmp("playerbuffersize");
1206                        }
1207                        else if(ostrcmp(keyconf, "Streaming Playback Caching (7.5MB)") == 0)
1208                        {
1209                                addconfigtmp("playerbuffersize", "7864320");
1210                                screenplay(tmpstr1, filename, 2, flag);
1211                                delconfigtmp("playerbuffersize");
1212                        }
1213                        else if(ostrcmp(keyconf, "Streaming Playback Caching (10MB)") == 0)
1214                        {
1215                                addconfigtmp("playerbuffersize", "10485760");
1216                                screenplay(tmpstr1, filename, 2, flag);
1217                                delconfigtmp("playerbuffersize");
1218                        }
1219                        else if(ostrcmp(keyconf, "File Caching Playback (10MB / 120s)") == 0)
1220                        {
1221                                cacheplay(tmpstr1, filename, 1);
1222                        }
1223                        else if(ostrcmp(keyconf, "File Caching Playback (20MB / 240s)") == 0)
1224                        {
1225                                cacheplay(tmpstr1, filename, 2);
1226                        }
1227                        else if(ostrcmp(keyconf, "File Caching Playback (30MB / 360s)") == 0)
1228                        {
1229                                cacheplay(tmpstr1, filename, 3);
1230                        }
1231                        else if(ostrcmp(keyconf, "Download Full File") == 0)
1232                        {
1233                                char* search = textinput("Search", filename);
1234                                if(search != NULL)
1235                                {       
1236                                        char* tmpstr2 = tithekdownload(tmpstr1, search, NULL, 0, 1);
1237//                                              drawscreen(grid, 0, 0);
1238                                        free(tmpstr2); tmpstr2 = NULL;
1239                               
1240                                        if(textbox(_("Message"), _("Start playback"), _("OK"), getrcconfigint("rcok", NULL), _("EXIT"), getrcconfigint("rcexit", NULL), NULL, 0, NULL, 0, 600, 200, 0, 0) == 1)
1241                                        {
1242                                                tmpstr2 = ostrcat(getconfig("rec_streampath", NULL), "/", 0, 0);
1243                                                tmpstr2 = ostrcat(tmpstr2, search, 1, 0);
1244                                                screenplay(tmpstr2, filename, 2, flag);
1245                                                free(tmpstr2); tmpstr2 = NULL;
1246                                        }
1247                                }
1248                                free(search), search = NULL;
1249                        }
1250                        else if(ostrcmp(keyconf, "Download Full File (background)") == 0)
1251                        {
1252                                char* search = textinput("Search", filename);
1253                                if(search != NULL)
1254                                        backgrounddl(tmpstr1, search);
1255                                free(search), search = NULL;
1256                        }
1257                         
1258                        free(filename), filename = NULL;
1259                        freemenulist(mlist, 1); mlist = NULL;
1260                }
1261                else
1262                        textbox(_("Message"), _("Can't get Streamurl !"), _("OK"), getrcconfigint("rcok", NULL), _("EXIT"), getrcconfigint("rcexit", NULL), NULL, 0, NULL, 0, 600, 200, 0, 0);
1263               
1264                free(tmpstr1); tmpstr1 = NULL;
1265        }
1266        else
1267                textbox(_("Message"), _("Registration needed, please contact Atemio !"), _("OK"), getrcconfigint("rcok", NULL), _("EXIT"), getrcconfigint("rcexit", NULL), NULL, 0, NULL, 0, 1000, 200, 0, 0);
1268}
1269
1270void screentithekplay(char* titheklink, char* title, int first)
1271{
1272        if(!file_exist("/var/swap/player"))
1273                mkdir("/var/swap/player", 0777); 
1274
1275        char* disclaimer = NULL;
1276        disclaimer = ostrcat(disclaimer, "/var/swap/player/tithek_disclaimer_accepted", 1, 0);
1277                               
1278        if(!file_exist(disclaimer))
1279        {
1280                char* tmpstr = gethttp("atemio.dyndns.tv", "/mediathek/disclaimer.txt", 80, NULL, HTTPAUTH, 5000, NULL, 0);
1281                if(textbox(_("TitanNit Tithek disclaimer"), _(tmpstr), _("OK"), getrcconfigint("rcok", NULL), _("EXIT"), getrcconfigint("rcexit", NULL), NULL, 0, NULL, 0, 1100, 650, 0, 0) == 1)
1282                {
1283                        writesys(disclaimer, tmpstr, 0);                               
1284                        free(tmpstr), tmpstr = NULL;
1285                }
1286                else
1287                {
1288                        free(tmpstr), tmpstr = NULL;
1289                        free(disclaimer), disclaimer = NULL;
1290                        return;
1291                }
1292        }
1293        free(disclaimer), disclaimer = NULL;
1294
1295        int rcret = -1, oaktline = 1, oaktpage = -1, ogridcol = 0;
1296
1297        writesysint("/proc/sys/vm/drop_caches", 3, 0); 
1298       
1299        if(first == 1)
1300        {
1301                delallfiles("/tmp/tithek", NULL); 
1302                mkdir("/tmp/tithek", 777);
1303                if(status.mcaktiv == 0)
1304                {
1305                        rcret = servicestop(status.aktservice, 1, 1);
1306                        if(rcret == 1) return;
1307                }
1308        }
1309
1310        struct skin* grid = getscreen("titheklist");
1311        struct skin* listbox = getscreennode(grid, "listbox");
1312        struct skin* countlabel = getscreennode(grid, "countlabel");
1313        struct skin* countpage = getscreennode(grid, "countpage");
1314        struct skin* load = getscreen("loading");
1315        struct skin* tmp = NULL;
1316        char* tithekpic = NULL;
1317       
1318        if(titheklink == NULL) return;
1319       
1320        listbox->aktpage = -1;
1321        listbox->aktline = 1;
1322        listbox->gridcol = 0;
1323        listbox->select = NULL;
1324
1325        int pagecount = createtithekplay(titheklink, grid, listbox, countlabel, first);
1326        if(pagecount == 0) return;
1327
1328        changetitle(grid, _(title));
1329        drawscreen(grid, 0, 0);
1330        addscreenrc(grid, listbox);
1331                               
1332        while(1)
1333        {
1334                changetitle(grid, _(title));
1335                if(listbox->select != NULL && listbox->select->handle != NULL)
1336                {
1337                        tmp = listbox->select;
1338                        while(tmp != NULL)
1339                        {
1340
1341                                if(tmp->pagecount != listbox->aktpage) break;
1342
1343                                char* tmpstr = ostrcat(_("Page"), NULL, 0, 0);
1344                                tmpstr = ostrcat(tmpstr, " ( ", 1, 0);
1345                                tmpstr = ostrcat(tmpstr, oitoa(tmp->pagecount), 1, 1);
1346                                tmpstr = ostrcat(tmpstr, " / ", 1, 0);
1347                                tmpstr = ostrcat(tmpstr, oitoa(pagecount), 1, 1);
1348                                tmpstr = ostrcat(tmpstr, _(" )"), 1, 0);
1349                                changetext(countpage, tmpstr);
1350                                free(tmpstr); tmpstr = NULL;
1351       
1352                                if(tmp->handle != NULL)
1353                                {
1354                                        tithekpic = tithekdownload(((struct tithek*)tmp->handle)->pic, ((struct tithek*)tmp->handle)->localname, "aXBrLUdaRmg6RkhaVkJHaG56ZnZFaEZERlRHenVpZjU2NzZ6aGpHVFVHQk5Iam0=", 1, 0);
1355
1356                                        /* not working with thread download
1357                                        off64_t checkpic = getfilesize(tithekpic);
1358                       
1359                                        if(checkpic < 1000)
1360                                        {
1361                                                free(tithekpic); tithekpic = NULL;
1362                                                tithekpic = ostrcat("/var/usr/local/share/titan/plugins/tithek/default.jpg", NULL, 0, 0);
1363                                        }
1364                                        */
1365                       
1366                                        changepic(tmp, tithekpic);
1367                                        free(tithekpic); tithekpic = NULL;
1368                                }
1369                                tmp = tmp->prev;
1370                        }
1371                        tmp = listbox->select;
1372                        if(tmp != NULL) tmp = tmp->next;
1373                        while(tmp != NULL)
1374                        {
1375                                if(tmp->pagecount != listbox->aktpage) break;
1376                                if(tmp->handle != NULL)
1377                                {
1378                                        tithekpic = tithekdownload(((struct tithek*)tmp->handle)->pic, ((struct tithek*)tmp->handle)->localname, "aXBrLUdaRmg6RkhaVkJHaG56ZnZFaEZERlRHenVpZjU2NzZ6aGpHVFVHQk5Iam0=", 1, 0);
1379
1380                                        /* not working with thread download
1381                                        off64_t checkpic = getfilesize(tithekpic);
1382
1383                                        if(checkpic < 1000)
1384                                        {
1385                                                free(tithekpic); tithekpic = NULL;
1386                                                tithekpic = ostrcat("/var/usr/local/share/titan/plugins/tithek/default.jpg", NULL, 0, 0);
1387                                        }
1388                                        */
1389
1390                                        changepic(tmp, tithekpic);
1391                                        free(tithekpic); tithekpic = NULL;
1392                                }
1393                                tmp = tmp->next;
1394                        }
1395                }
1396               
1397                int count = getfilecount(TITHEKPATH);
1398                if(count > 500)
1399                        delallfiles(TITHEKPATH, ".jpg");
1400
1401                drawscreen(grid, 0, 0);
1402waitrcstart:
1403                rcret = waitrc(grid, 2000, 2);
1404
1405                if(rcret == RCTIMEOUT)
1406                {
1407                        if(tithekdownloadrun == 1)
1408                        {
1409                                tithekdownloadrun = 0;
1410                                drawscreen(grid, 0, 0);
1411                        }
1412                        goto waitrcstart;
1413                }
1414
1415                if(rcret == getrcconfigint("rcblue", NULL))
1416                {
1417                        tithekexit = 1;
1418                        break;
1419                }
1420
1421                if(rcret == getrcconfigint("rcexit", NULL)) break;
1422                if(rcret == getrcconfigint("rcmenu", NULL))
1423                {
1424                        screentithek_settings();
1425
1426                        int pagecount = createtithekplay(titheklink, grid, listbox, countlabel, first);
1427                        if(pagecount == 0 || tithekexit == 1) break;
1428
1429                        listbox->aktpage = oaktpage;
1430                        listbox->aktline = oaktline;
1431                        listbox->gridcol = ogridcol;
1432                        addscreenrc(grid, listbox);
1433                        drawscreen(grid, 0, 0);
1434                }
1435               
1436                if(rcret == getrcconfigint("rcred", NULL))
1437                {
1438                        if(listbox->select != NULL && listbox->select->handle != NULL)
1439                        {
1440
1441                                char* tmpstr = ostrcat(((struct tithek*)listbox->select->handle)->title, NULL, 0, 0);
1442                                debug(99, "tmpstr: %s", tmpstr);
1443                                tmpstr = string_replace("-1 (de)", "", tmpstr, 1);
1444                                tmpstr = string_replace("-1 (en)", "", tmpstr, 1);
1445                                tmpstr = string_replace("-1 (\?\?)", "", tmpstr, 1);
1446                                tmpstr = string_replace("-2 (de)", "", tmpstr, 1);
1447                                tmpstr = string_replace("-2 (en)", "", tmpstr, 1);
1448                                tmpstr = string_replace("-2 (\?\?)", "", tmpstr, 1);
1449                                tmpstr = string_replace("-3 (de)", "", tmpstr, 1);
1450                                tmpstr = string_replace("-3 (en)", "", tmpstr, 1);
1451                                tmpstr = string_replace("-3 (\?\?)", "", tmpstr, 1);
1452                                tmpstr = string_replace(" (de)", "", tmpstr, 1);
1453                                tmpstr = string_replace(" (en)", "", tmpstr, 1);
1454                                tmpstr = string_replace(" (\?\?)", "", tmpstr, 1);
1455                                tmpstr = string_replace_all("_", " ", tmpstr, 1);
1456                                tmpstr = string_replace_all("-", " ", tmpstr, 1);
1457                                tmpstr = string_replace_all(".", " ", tmpstr, 1);                               
1458                                debug(99, "tmpstr: %s", tmpstr);
1459
1460                                int check = playrcred(tmpstr, NULL, 1, 0, 99);
1461                                if(check == 2)
1462                                {
1463                                        if(kinox_search(grid, listbox, countlabel, load, ((struct tithek*)listbox->select->handle)->link, "KinoX - Search", tmpstr, 0) == 0)
1464                                        {
1465                                                oaktpage = listbox->aktpage;
1466                                                oaktline = listbox->aktline;
1467                                                ogridcol = listbox->gridcol;
1468                                                char* tmpstr = ostrcat(((struct tithek*)listbox->select->handle)->link, NULL, 0, 0);
1469                                                char* tmpstr1 = ostrcat("KinoX - Search", " - ", 0, 0);
1470                                                char* tmpstr2 = ostrcat(tmpstr1, ((struct tithek*)listbox->select->handle)->title, 1, 0);
1471                                                screentithekplay(tmpstr, tmpstr2, 0);
1472                                                free(tmpstr); tmpstr = NULL;
1473                                                free(tmpstr2); tmpstr2 = NULL;
1474                       
1475                                                int pagecount = createtithekplay(titheklink, grid, listbox, countlabel, 0);
1476                                                if(pagecount == 0 || tithekexit == 1) break;
1477
1478                                                listbox->aktpage = oaktpage;
1479                                                listbox->aktline = oaktline;
1480                                                listbox->gridcol = ogridcol;
1481                                                addscreenrc(grid, listbox);
1482                                        }
1483                                }
1484                                else if(check == 3)
1485                                {
1486                                        if(solarmovie_search(grid, listbox, countlabel, load, ((struct tithek*)listbox->select->handle)->link, "SolarMovies - Movie - Search", tmpstr, 0) == 0)
1487                                        {
1488                                                oaktpage = listbox->aktpage;
1489                                                oaktline = listbox->aktline;
1490                                                ogridcol = listbox->gridcol;
1491                                                char* tmpstr = ostrcat(((struct tithek*)listbox->select->handle)->link, NULL, 0, 0);
1492                                                char* tmpstr1 = ostrcat("SolarMovies - Movie - Search", " - ", 0, 0);
1493                                                char* tmpstr2 = ostrcat(tmpstr1, ((struct tithek*)listbox->select->handle)->title, 1, 0);
1494                                                screentithekplay(tmpstr, tmpstr2, 0);
1495                                                free(tmpstr); tmpstr = NULL;
1496                                                free(tmpstr2); tmpstr2 = NULL;
1497                       
1498                                                int pagecount = createtithekplay(titheklink, grid, listbox, countlabel, 0);
1499                                                if(pagecount == 0 || tithekexit == 1) break;
1500
1501                                                listbox->aktpage = oaktpage;
1502                                                listbox->aktline = oaktline;
1503                                                listbox->gridcol = ogridcol;
1504                                                addscreenrc(grid, listbox);
1505                                        }
1506                                }
1507                                else if(check == 4)
1508                                {
1509                                        if(solarmovie_search(grid, listbox, countlabel, load, ((struct tithek*)listbox->select->handle)->link, "SolarMovies - Tv - Search", tmpstr, 1) == 0)
1510                                        {
1511                                                oaktpage = listbox->aktpage;
1512                                                oaktline = listbox->aktline;
1513                                                ogridcol = listbox->gridcol;
1514                                                char* tmpstr = ostrcat(((struct tithek*)listbox->select->handle)->link, NULL, 0, 0);
1515                                                char* tmpstr1 = ostrcat("SolarMovies - Tv - Search", " - ", 0, 0);
1516                                                char* tmpstr2 = ostrcat(tmpstr1, ((struct tithek*)listbox->select->handle)->title, 1, 0);
1517                                                screentithekplay(tmpstr, tmpstr2, 0);
1518                                                free(tmpstr); tmpstr = NULL;
1519                                                free(tmpstr2); tmpstr2 = NULL;
1520                       
1521                                                int pagecount = createtithekplay(titheklink, grid, listbox, countlabel, 0);
1522                                                if(pagecount == 0 || tithekexit == 1) break;
1523
1524                                                listbox->aktpage = oaktpage;
1525                                                listbox->aktline = oaktline;
1526                                                listbox->gridcol = ogridcol;
1527                                                addscreenrc(grid, listbox);
1528                                        }
1529                                }
1530                                else if(check == 5)
1531                                {
1532                                        if(youtube_search(grid, listbox, countlabel, load, ((struct tithek*)listbox->select->handle)->link, "Youtube - Search", tmpstr) == 0)
1533                                        {
1534                                                oaktpage = listbox->aktpage;
1535                                                oaktline = listbox->aktline;
1536                                                ogridcol = listbox->gridcol;
1537                                                char* tmpstr = ostrcat(((struct tithek*)listbox->select->handle)->link, NULL, 0, 0);
1538                                                char* tmpstr1 = ostrcat("Youtube - Search", " - ", 0, 0);
1539                                                char* tmpstr2 = ostrcat(tmpstr1, ((struct tithek*)listbox->select->handle)->title, 1, 0);
1540                                                screentithekplay(tmpstr, tmpstr2, 0);
1541                                                free(tmpstr); tmpstr = NULL;
1542                                                free(tmpstr2); tmpstr2 = NULL;
1543                       
1544                                                int pagecount = createtithekplay(titheklink, grid, listbox, countlabel, 0);
1545                                                if(pagecount == 0 || tithekexit == 1) break;
1546
1547                                                listbox->aktpage = oaktpage;
1548                                                listbox->aktline = oaktline;
1549                                                listbox->gridcol = ogridcol;
1550                                                addscreenrc(grid, listbox);
1551                                        }
1552                                }
1553                                else if((((struct tithek*)listbox->select->handle)->flag == 13))
1554                                {
1555                                        if(myvideo_search(grid, listbox, countlabel, load, ((struct tithek*)listbox->select->handle)->link, "MyVideo - Search", tmpstr) == 0)
1556                                        {
1557                                                oaktpage = listbox->aktpage;
1558                                                oaktline = listbox->aktline;
1559                                                ogridcol = listbox->gridcol;
1560                                                char* tmpstr = ostrcat(((struct tithek*)listbox->select->handle)->link, NULL, 0, 0);
1561                                                char* tmpstr1 = ostrcat("MyVideo - Search", " - ", 0, 0);
1562                                                char* tmpstr2 = ostrcat(tmpstr1, ((struct tithek*)listbox->select->handle)->title, 1, 0);
1563                                                screentithekplay(tmpstr, tmpstr2, 0);
1564                                                free(tmpstr); tmpstr = NULL;
1565                                                free(tmpstr2); tmpstr2 = NULL;
1566                       
1567                                                int pagecount = createtithekplay(titheklink, grid, listbox, countlabel, 0);
1568                                                if(pagecount == 0 || tithekexit == 1) break;
1569
1570                                                listbox->aktpage = oaktpage;
1571                                                listbox->aktline = oaktline;
1572                                                listbox->gridcol = ogridcol;
1573                                                addscreenrc(grid, listbox);
1574                                        }
1575                                }
1576
1577                                free(tmpstr), tmpstr = NULL;
1578                        }
1579                }
1580                else if(rcret == getrcconfigint("rcok", NULL))
1581                {
1582                        if(listbox->select != NULL && listbox->select->handle != NULL)
1583                        {
1584                                clearscreen(grid);
1585
1586                                if((((struct tithek*)listbox->select->handle)->flag == 2) || (((struct tithek*)listbox->select->handle)->flag == 4) || (((struct tithek*)listbox->select->handle)->flag == 5) || (((struct tithek*)listbox->select->handle)->flag == 6) || (((struct tithek*)listbox->select->handle)->flag == 7) || (((struct tithek*)listbox->select->handle)->flag == 8) || (((struct tithek*)listbox->select->handle)->flag == 12) || (((struct tithek*)listbox->select->handle)->flag == 14) || (((struct tithek*)listbox->select->handle)->flag == 15) || (((struct tithek*)listbox->select->handle)->flag == 16) || (((struct tithek*)listbox->select->handle)->flag == 17) || (((struct tithek*)listbox->select->handle)->flag == 18) || (((struct tithek*)listbox->select->handle)->flag == 19) || (((struct tithek*)listbox->select->handle)->flag == 20) || (((struct tithek*)listbox->select->handle)->flag == 24) || (((struct tithek*)listbox->select->handle)->flag == 25) || (((struct tithek*)listbox->select->handle)->flag == 26) || (((struct tithek*)listbox->select->handle)->flag == 27) || (((struct tithek*)listbox->select->handle)->flag == 37) || (((struct tithek*)listbox->select->handle)->flag == 50))
1587                                {
1588                                        submenu(listbox, load, title);
1589                                        drawscreen(grid, 0, 0);
1590                                }
1591                                else if((((struct tithek*)listbox->select->handle)->flag == 9) || (((struct tithek*)listbox->select->handle)->flag == 10) || (((struct tithek*)listbox->select->handle)->flag == 11))
1592                                {
1593                                        if(youtube_search(grid, listbox, countlabel, load, ((struct tithek*)listbox->select->handle)->link, ((struct tithek*)listbox->select->handle)->title, NULL) == 0)
1594                                        {
1595                                                oaktpage = listbox->aktpage;
1596                                                oaktline = listbox->aktline;
1597                                                ogridcol = listbox->gridcol;
1598                                                char* tmpstr = ostrcat(((struct tithek*)listbox->select->handle)->link, NULL, 0, 0);
1599                                                char* tmpstr1 = ostrcat(((struct tithek*)listbox->select->handle)->menutitle, " - ", 0, 0);
1600                                                char* tmpstr2 = ostrcat(tmpstr1, ((struct tithek*)listbox->select->handle)->title, 1, 0);
1601                                                screentithekplay(tmpstr, tmpstr2, 0);
1602                                                free(tmpstr); tmpstr = NULL;
1603                                                free(tmpstr2); tmpstr2 = NULL;
1604                       
1605                                                int pagecount = createtithekplay(titheklink, grid, listbox, countlabel, 0);
1606                                                if(pagecount == 0 || tithekexit == 1) break;
1607
1608                                                listbox->aktpage = oaktpage;
1609                                                listbox->aktline = oaktline;
1610                                                listbox->gridcol = ogridcol;
1611                                                addscreenrc(grid, listbox);
1612                                        }
1613                                }
1614                                else if((((struct tithek*)listbox->select->handle)->flag == 13))
1615                                {
1616                                        if(myvideo_search(grid, listbox, countlabel, load, ((struct tithek*)listbox->select->handle)->link, ((struct tithek*)listbox->select->handle)->title, NULL) == 0)
1617                                        {
1618                                                oaktpage = listbox->aktpage;
1619                                                oaktline = listbox->aktline;
1620                                                ogridcol = listbox->gridcol;
1621                                                char* tmpstr = ostrcat(((struct tithek*)listbox->select->handle)->link, NULL, 0, 0);
1622                                                char* tmpstr1 = ostrcat(((struct tithek*)listbox->select->handle)->menutitle, " - ", 0, 0);
1623                                                char* tmpstr2 = ostrcat(tmpstr1, ((struct tithek*)listbox->select->handle)->title, 1, 0);
1624                                                screentithekplay(tmpstr, tmpstr2, 0);
1625                                                free(tmpstr); tmpstr = NULL;
1626                                                free(tmpstr2); tmpstr2 = NULL;
1627                       
1628                                                int pagecount = createtithekplay(titheklink, grid, listbox, countlabel, 0);
1629                                                if(pagecount == 0 || tithekexit == 1) break;
1630
1631                                                listbox->aktpage = oaktpage;
1632                                                listbox->aktline = oaktline;
1633                                                listbox->gridcol = ogridcol;
1634                                                addscreenrc(grid, listbox);
1635                                        }
1636                                }
1637                                else if((((struct tithek*)listbox->select->handle)->flag == 21))
1638                                {
1639                                        if(kinox_search(grid, listbox, countlabel, load, ((struct tithek*)listbox->select->handle)->link, ((struct tithek*)listbox->select->handle)->title, NULL, 0) == 0)
1640                                        {
1641                                                oaktpage = listbox->aktpage;
1642                                                oaktline = listbox->aktline;
1643                                                ogridcol = listbox->gridcol;
1644                                                char* tmpstr = ostrcat(((struct tithek*)listbox->select->handle)->link, NULL, 0, 0);
1645                                                char* tmpstr1 = ostrcat(((struct tithek*)listbox->select->handle)->menutitle, " - ", 0, 0);
1646                                                char* tmpstr2 = ostrcat(tmpstr1, ((struct tithek*)listbox->select->handle)->title, 1, 0);
1647                                                screentithekplay(tmpstr, tmpstr2, 0);
1648                                                free(tmpstr); tmpstr = NULL;
1649                                                free(tmpstr2); tmpstr2 = NULL;
1650
1651                                                int pagecount = createtithekplay(titheklink, grid, listbox, countlabel, 0);
1652                                                if(pagecount == 0 || tithekexit == 1) break;
1653
1654                                                listbox->aktpage = oaktpage;
1655                                                listbox->aktline = oaktline;
1656                                                listbox->gridcol = ogridcol;
1657                                                addscreenrc(grid, listbox);
1658                                        }
1659                                }
1660                                else if(((struct tithek*)listbox->select->handle)->flag == 29)
1661                                {
1662                                        if(solarmovie_search(grid, listbox, countlabel, load, ((struct tithek*)listbox->select->handle)->link, ((struct tithek*)listbox->select->handle)->title, NULL, 0) == 0)
1663                                        {
1664                                                oaktpage = listbox->aktpage;
1665                                                oaktline = listbox->aktline;
1666                                                ogridcol = listbox->gridcol;
1667                                                char* tmpstr = ostrcat(((struct tithek*)listbox->select->handle)->link, NULL, 0, 0);
1668                                                char* tmpstr1 = ostrcat(((struct tithek*)listbox->select->handle)->menutitle, " - ", 0, 0);
1669                                                char* tmpstr2 = ostrcat(tmpstr1, ((struct tithek*)listbox->select->handle)->title, 1, 0);
1670                                                screentithekplay(tmpstr, tmpstr2, 0);
1671                                                free(tmpstr); tmpstr = NULL;
1672                                                free(tmpstr2); tmpstr2 = NULL;
1673
1674                                                int pagecount = createtithekplay(titheklink, grid, listbox, countlabel, 0);
1675                                                if(pagecount == 0 || tithekexit == 1) break;
1676
1677                                                listbox->aktpage = oaktpage;
1678                                                listbox->aktline = oaktline;
1679                                                listbox->gridcol = ogridcol;
1680                                                addscreenrc(grid, listbox);
1681                                        }
1682                                }
1683                                else if(((struct tithek*)listbox->select->handle)->flag == 30)
1684                                {
1685                                        if(solarmovie_search(grid, listbox, countlabel, load, ((struct tithek*)listbox->select->handle)->link, ((struct tithek*)listbox->select->handle)->title, NULL, 1) == 0)
1686                                        {
1687                                                oaktpage = listbox->aktpage;
1688                                                oaktline = listbox->aktline;
1689                                                ogridcol = listbox->gridcol;
1690                                                char* tmpstr = ostrcat(((struct tithek*)listbox->select->handle)->link, NULL, 0, 0);
1691                                                char* tmpstr1 = ostrcat(((struct tithek*)listbox->select->handle)->menutitle, " - ", 0, 0);
1692                                                char* tmpstr2 = ostrcat(tmpstr1, ((struct tithek*)listbox->select->handle)->title, 1, 0);
1693                                                screentithekplay(tmpstr, tmpstr2, 0);
1694                                                free(tmpstr); tmpstr = NULL;
1695                                                free(tmpstr2); tmpstr2 = NULL;
1696
1697                                                int pagecount = createtithekplay(titheklink, grid, listbox, countlabel, 0);
1698                                                if(pagecount == 0 || tithekexit == 1) break;
1699
1700                                                listbox->aktpage = oaktpage;
1701                                                listbox->aktline = oaktline;
1702                                                listbox->gridcol = ogridcol;
1703                                                addscreenrc(grid, listbox);
1704                                        }
1705                                }
1706                                else if((((struct tithek*)listbox->select->handle)->flag == 31))
1707                                {
1708                                        if(kinox_search_cast(grid, listbox, countlabel, load, ((struct tithek*)listbox->select->handle)->link, ((struct tithek*)listbox->select->handle)->title, NULL) == 0)
1709                                        {
1710                                                oaktpage = listbox->aktpage;
1711                                                oaktline = listbox->aktline;
1712                                                ogridcol = listbox->gridcol;
1713                                                char* tmpstr = ostrcat(((struct tithek*)listbox->select->handle)->link, NULL, 0, 0);
1714                                                char* tmpstr1 = ostrcat(((struct tithek*)listbox->select->handle)->menutitle, " - ", 0, 0);
1715                                                char* tmpstr2 = ostrcat(tmpstr1, ((struct tithek*)listbox->select->handle)->title, 1, 0);
1716                                                screentithekplay(tmpstr, tmpstr2, 0);
1717                                                free(tmpstr); tmpstr = NULL;
1718                                                free(tmpstr2); tmpstr2 = NULL;
1719
1720                                                int pagecount = createtithekplay(titheklink, grid, listbox, countlabel, 0);
1721                                                if(pagecount == 0 || tithekexit == 1) break;
1722
1723                                                listbox->aktpage = oaktpage;
1724                                                listbox->aktline = oaktline;
1725                                                listbox->gridcol = ogridcol;
1726                                                addscreenrc(grid, listbox);
1727                                        }
1728                                }
1729                                else if((((struct tithek*)listbox->select->handle)->flag == 32))
1730                                {
1731                                        if(kinox_search(grid, listbox, countlabel, load, ((struct tithek*)listbox->select->handle)->link, ((struct tithek*)listbox->select->handle)->title, NULL, 1) == 0)
1732                                        {
1733                                                oaktpage = listbox->aktpage;
1734                                                oaktline = listbox->aktline;
1735                                                ogridcol = listbox->gridcol;
1736                                                char* tmpstr = ostrcat(((struct tithek*)listbox->select->handle)->link, NULL, 0, 0);
1737                                                char* tmpstr1 = ostrcat(((struct tithek*)listbox->select->handle)->menutitle, " - ", 0, 0);
1738                                                char* tmpstr2 = ostrcat(tmpstr1, ((struct tithek*)listbox->select->handle)->title, 1, 0);
1739                                                screentithekplay(tmpstr, tmpstr2, 0);
1740                                                free(tmpstr); tmpstr = NULL;
1741                                                free(tmpstr2); tmpstr2 = NULL;
1742
1743                                                int pagecount = createtithekplay(titheklink, grid, listbox, countlabel, 0);
1744                                                if(pagecount == 0 || tithekexit == 1) break;
1745
1746                                                listbox->aktpage = oaktpage;
1747                                                listbox->aktline = oaktline;
1748                                                listbox->gridcol = ogridcol;
1749                                                addscreenrc(grid, listbox);
1750                                        }
1751                                }
1752                                else if((((struct tithek*)listbox->select->handle)->flag == 33))
1753                                {
1754                                        if(movie4k_search(grid, listbox, countlabel, load, ((struct tithek*)listbox->select->handle)->link, ((struct tithek*)listbox->select->handle)->title, NULL, 1) == 0)
1755                                        {
1756                                                oaktpage = listbox->aktpage;
1757                                                oaktline = listbox->aktline;
1758                                                ogridcol = listbox->gridcol;
1759                                                char* tmpstr = ostrcat(((struct tithek*)listbox->select->handle)->link, NULL, 0, 0);
1760                                                char* tmpstr1 = ostrcat(((struct tithek*)listbox->select->handle)->menutitle, " - ", 0, 0);
1761                                                char* tmpstr2 = ostrcat(tmpstr1, ((struct tithek*)listbox->select->handle)->title, 1, 0);
1762                                                screentithekplay(tmpstr, tmpstr2, 0);
1763                                                free(tmpstr); tmpstr = NULL;
1764                                                free(tmpstr2); tmpstr2 = NULL;
1765
1766                                                int pagecount = createtithekplay(titheklink, grid, listbox, countlabel, 3);
1767                                                if(pagecount == 0 || tithekexit == 1) break;
1768
1769                                                listbox->aktpage = oaktpage;
1770                                                listbox->aktline = oaktline;
1771                                                listbox->gridcol = ogridcol;
1772                                                addscreenrc(grid, listbox);
1773                                        }
1774                                }
1775                                else if((((struct tithek*)listbox->select->handle)->flag == 34) || (((struct tithek*)listbox->select->handle)->flag == 35))
1776                                {
1777                                        if(movie4k_hoster(grid, listbox, countlabel, load, ((struct tithek*)listbox->select->handle)->link, ((struct tithek*)listbox->select->handle)->title) == 0)
1778                                        {
1779                                                oaktpage = listbox->aktpage;
1780                                                oaktline = listbox->aktline;
1781                                                ogridcol = listbox->gridcol;
1782                                                char* tmpstr = ostrcat(((struct tithek*)listbox->select->handle)->link, NULL, 0, 0);
1783                                                char* tmpstr1 = ostrcat(((struct tithek*)listbox->select->handle)->menutitle, " - ", 0, 0);
1784                                                char* tmpstr2 = ostrcat(tmpstr1, ((struct tithek*)listbox->select->handle)->title, 1, 0);
1785                                                screentithekplay(tmpstr, tmpstr2, 0);
1786                                                free(tmpstr); tmpstr = NULL;
1787                                                free(tmpstr2); tmpstr2 = NULL;
1788
1789                                                int pagecount = createtithekplay(titheklink, grid, listbox, countlabel, 0);
1790                                                if(pagecount == 0 || tithekexit == 1) break;
1791
1792                                                listbox->aktpage = oaktpage;
1793                                                listbox->aktline = oaktline;
1794                                                listbox->gridcol = ogridcol;
1795                                                addscreenrc(grid, listbox);
1796                                        }
1797                                }
1798                                else if((((struct tithek*)listbox->select->handle)->flag == 22))
1799                                {
1800                                        if(kinox_hoster(grid, listbox, countlabel, load, ((struct tithek*)listbox->select->handle)->link, ((struct tithek*)listbox->select->handle)->title) == 0)
1801                                        {
1802                                                oaktpage = listbox->aktpage;
1803                                                oaktline = listbox->aktline;
1804                                                ogridcol = listbox->gridcol;
1805                                                char* tmpstr = ostrcat(((struct tithek*)listbox->select->handle)->link, NULL, 0, 0);
1806                                                char* tmpstr1 = ostrcat(((struct tithek*)listbox->select->handle)->menutitle, " - ", 0, 0);
1807                                                char* tmpstr2 = ostrcat(tmpstr1, ((struct tithek*)listbox->select->handle)->title, 1, 0);
1808                                                screentithekplay(tmpstr, tmpstr2, 0);
1809                                                free(tmpstr); tmpstr = NULL;
1810                                                free(tmpstr2); tmpstr2 = NULL;
1811
1812                                                int pagecount = createtithekplay(titheklink, grid, listbox, countlabel, 3);
1813                                                if(pagecount == 0 || tithekexit == 1) break;
1814
1815                                                listbox->aktpage = oaktpage;
1816                                                listbox->aktline = oaktline;
1817                                                listbox->gridcol = ogridcol;
1818                                                addscreenrc(grid, listbox);
1819                                        }
1820                                }
1821                                else if((((struct tithek*)listbox->select->handle)->flag == 28))
1822                                {
1823                                        if(solarmovie_hoster(grid, listbox, countlabel, load, ((struct tithek*)listbox->select->handle)->link, ((struct tithek*)listbox->select->handle)->title) == 0)
1824                                        {
1825                                                oaktpage = listbox->aktpage;
1826                                                oaktline = listbox->aktline;
1827                                                ogridcol = listbox->gridcol;
1828                                                char* tmpstr = ostrcat(((struct tithek*)listbox->select->handle)->link, NULL, 0, 0);
1829                                                char* tmpstr1 = ostrcat(((struct tithek*)listbox->select->handle)->menutitle, " - ", 0, 0);
1830                                                char* tmpstr2 = ostrcat(tmpstr1, ((struct tithek*)listbox->select->handle)->title, 1, 0);
1831                                                screentithekplay(tmpstr, tmpstr2, 0);
1832                                                free(tmpstr); tmpstr = NULL;
1833                                                free(tmpstr2); tmpstr2 = NULL;
1834                       
1835                                                int pagecount = createtithekplay(titheklink, grid, listbox, countlabel, 3);
1836                                                if(pagecount == 0 || tithekexit == 1) break;
1837
1838                                                listbox->aktpage = oaktpage;
1839                                                listbox->aktline = oaktline;
1840                                                listbox->gridcol = ogridcol;
1841                                                addscreenrc(grid, listbox);
1842                                        }
1843                                }
1844                                else if((((struct tithek*)listbox->select->handle)->flag == 23))
1845                                {
1846                                        if(kinox_hoster_series(grid, listbox, countlabel, load, ((struct tithek*)listbox->select->handle)->link, ((struct tithek*)listbox->select->handle)->title) == 0)
1847                                        {
1848                                                oaktpage = listbox->aktpage;
1849                                                oaktline = listbox->aktline;
1850                                                ogridcol = listbox->gridcol;
1851                                                char* tmpstr = ostrcat(((struct tithek*)listbox->select->handle)->link, NULL, 0, 0);
1852                                                char* tmpstr1 = ostrcat(((struct tithek*)listbox->select->handle)->menutitle, " - ", 0, 0);
1853                                                char* tmpstr2 = ostrcat(tmpstr1, ((struct tithek*)listbox->select->handle)->title, 1, 0);
1854                                                screentithekplay(tmpstr, tmpstr2, 0);
1855                                                free(tmpstr); tmpstr = NULL;
1856                                                free(tmpstr2); tmpstr2 = NULL;
1857                       
1858                                                int pagecount = createtithekplay(titheklink, grid, listbox, countlabel, 0);
1859                                                if(pagecount == 0 || tithekexit == 1) break;
1860
1861                                                listbox->aktpage = oaktpage;
1862                                                listbox->aktline = oaktline;
1863                                                listbox->gridcol = ogridcol;
1864                                                addscreenrc(grid, listbox);
1865                                        }
1866                                }
1867                                else if((((struct tithek*)listbox->select->handle)->flag == 66))
1868                                {
1869                                        textbox(_("Message"), _("The hoster is not yet supported for the time !"), _("OK"), getrcconfigint("rcok", NULL), _("EXIT"), getrcconfigint("rcexit", NULL), NULL, 0, NULL, 0, 600, 200, 5, 0);
1870                                        continue;
1871                                }       
1872                                else if((((struct tithek*)listbox->select->handle)->flag == 3))
1873                                {
1874                                        int pincheck = 0;
1875                                        if(((struct tithek*)listbox->select->handle)->flag == 1000)
1876                                                pincheck = screenpincheck(0, NULL);
1877                                        if(pincheck == 0)
1878                                        {
1879                                                oaktpage = listbox->aktpage;
1880                                                oaktline = listbox->aktline;
1881                                                ogridcol = listbox->gridcol;
1882                                                char* tmpstr = ostrcat(((struct tithek*)listbox->select->handle)->link, NULL, 0, 0);
1883                                                char* tmpstr1 = ostrcat(((struct tithek*)listbox->select->handle)->menutitle, " - ", 0, 0);                                     
1884                                                char* tmpstr2 = ostrcat(tmpstr1, ((struct tithek*)listbox->select->handle)->title, 1, 0);
1885                                                screentithekplay(tmpstr, tmpstr2, 3);
1886                                                free(tmpstr); tmpstr = NULL;
1887                                                free(tmpstr2); tmpstr2 = NULL; 
1888
1889                                                int pagecount = createtithekplay(titheklink, grid, listbox, countlabel, 0);
1890                                                if(pagecount == 0 || tithekexit == 1) break;
1891
1892                                                listbox->aktpage = oaktpage;
1893                                                listbox->aktline = oaktline;
1894                                                listbox->gridcol = ogridcol;
1895                                                addscreenrc(grid, listbox);
1896                                        }
1897                                }
1898                                else
1899                                {
1900                                        int pincheck = 0;
1901                                        if(((struct tithek*)listbox->select->handle)->flag == 1000)
1902                                                pincheck = screenpincheck(0, NULL);
1903                                        if(pincheck == 0)
1904                                        {
1905                                                oaktpage = listbox->aktpage;
1906                                                oaktline = listbox->aktline;
1907                                                ogridcol = listbox->gridcol;
1908                                                char* tmpstr = ostrcat(((struct tithek*)listbox->select->handle)->link, NULL, 0, 0);
1909                                                char* tmpstr1 = ostrcat(((struct tithek*)listbox->select->handle)->menutitle, " - ", 0, 0);                                     
1910                                                char* tmpstr2 = ostrcat(tmpstr1, ((struct tithek*)listbox->select->handle)->title, 1, 0);
1911                                                screentithekplay(tmpstr, tmpstr2, 0);
1912                                                free(tmpstr); tmpstr = NULL;
1913                                                free(tmpstr2); tmpstr2 = NULL; 
1914
1915                                                int pagecount = createtithekplay(titheklink, grid, listbox, countlabel, 0);
1916                                                if(pagecount == 0 || tithekexit == 1) break;
1917
1918                                                listbox->aktpage = oaktpage;
1919                                                listbox->aktline = oaktline;
1920                                                listbox->gridcol = ogridcol;
1921                                                addscreenrc(grid, listbox);
1922                                        }
1923                                }
1924                                drawscreen(grid, 0, 0);
1925//                              sleep(1);
1926                        }                       
1927                }
1928                else if(rcret == getrcconfigint("rcyellow", NULL) && ostrcmp(title, "TiThek - Favoriten") == 0)
1929                {
1930                        if(textbox(_("Message"), _("Remove this Favorite ?"), _("OK"), getrcconfigint("rcok", NULL), _("EXIT"), getrcconfigint("rcexit", NULL), NULL, 0, NULL, 0, 600, 200, 5, 0) == 1)
1931                        {
1932                                removefav(((struct tithek*)listbox->select->handle)->title, ((struct tithek*)listbox->select->handle)->link, ((struct tithek*)listbox->select->handle)->pic, ((struct tithek*)listbox->select->handle)->localname, ((struct tithek*)listbox->select->handle)->menutitle, ((struct tithek*)listbox->select->handle)->flag);             
1933                                int pagecount = createtithekplay(titheklink, grid, listbox, countlabel, 0);
1934                                if(pagecount == 0) return;
1935                                       
1936                                drawscreen(grid, 0, 0);
1937                        }
1938                }
1939                else if(rcret == getrcconfigint("rcgreen", NULL) && ostrcmp(title, "TiThek - Favoriten") != 0)
1940                {
1941                        if(textbox(_("Message"), _("Add this link as Favorite ?"), _("OK"), getrcconfigint("rcok", NULL), _("EXIT"), getrcconfigint("rcexit", NULL), NULL, 0, NULL, 0, 600, 200, 5, 0) == 1)
1942                        {
1943                                addfav(((struct tithek*)listbox->select->handle)->title, ((struct tithek*)listbox->select->handle)->link, ((struct tithek*)listbox->select->handle)->pic, ((struct tithek*)listbox->select->handle)->localname, ((struct tithek*)listbox->select->handle)->menutitle, ((struct tithek*)listbox->select->handle)->flag);         
1944                        }
1945                }
1946        }
1947
1948        delmarkedscreennodes(grid, 1);
1949        delownerrc(grid);
1950        clearscreen(grid);
1951
1952        if(first == 1)
1953        {
1954                freetithek();
1955                delallfiles("/tmp/tithek", ".list");
1956                if(status.mcaktiv == 0)
1957                        servicecheckret(servicestart(status.lastservice->channel, NULL, NULL, 0), 0);
1958        }
1959}
1960
1961#endif
Note: See TracBrowser for help on using the repository browser.