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

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

[tithek} add first shellscript box parser for giga and add autoload for other sh parser

File size: 85.0 KB
Line 
1#ifndef TITHEK_H
2#define TITHEK_H
3
4#define TITHEKPATH "/tmp/tithek"
5int tithekdownloadrun = 0;
6int tithekdownloadcount = 0;
7int tithekrun = 0;
8int tithekexit = 0;
9int tithekmovie4k = 0;
10int tithekkinox = 0;
11int titheksolarmovie = 0;
12int tithekmlehd = 0;
13int amazonlogin = 0;
14
15//flag 0        - menu
16//flag 1        - menu pay hidden tithek_pay=0/1 0=hidden
17//flag 2        - http (default streamurl)
18//flag 3        - http radio
19//flag 4        - youtube
20//flag 5        - nowtv //rtl2now
21//flag 6        - nowtv pay //superrtlnow
22//flag 7        - nowtv local serach //rtlnow
23//flag 8        - nowtv search //voxnow
24//flag 9        - youtube suche 10
25//flag 10       - youtube suche 25
26//flag 11       - youtube suche 50
27//flag 12       - myvideo
28//flag 13       - myvideo search 50
29//flag 14       - kinox play
30//flag 15       - giga old: hoster filenuke
31//flag 16       - superrtlnow pay
32//flag 17       - rtlnow pay
33//flag 18       - voxnow pay
34//flag 19       - rtl2now pay
35//flag 20       - netstream old: hoster StreamCloud
36//flag 21       - kinox search
37//flag 22       - kinox hoster
38//flag 23       - kinox hoster serie
39//flag 24       - internetradio local serach
40//flag 25       - kinox local serach
41//flag 26       - movie4k local serach
42//flag 27       - solarmovie local serach
43//flag 28       - solarmovie hoster
44//flag 29       - solarmovie search movie
45//flag 30       - solarmovie search serie
46//flag 31       - kinox search cast
47//flag 32       - kinox search cast results
48//flag 33       - movie4k search : serie > open seasons and list episode flag=40 > hoster listed flag=34
49//flag 34       - movie4k hoster de
50//flag 35       - movie4k hoster other
51//flag 36       - movie4k series de > open seasons and list episode flag=39 > hoster listed flag=34
52//flag 37       - movie4k series other > open seasons and list episode flag=39 > hoster listed flag=34
53//flag 38       - mlehd
54//flag 39   - movie4k_hoster_listed
55//flag 40   - movie4k_hoster_series
56//flag 41   - movie4k
57//flag 42   - xvideos
58//flag 43       - solarmovie
59//flag 44       - myvideo Single charts
60//flag 45       - ard
61//flag 46       - ard
62//flag 47   - internettv local serach
63//flag 48   - youtube local serach
64//flag 49   - myvideo local serach
65//flag 50       - beeg
66//flag 51   - ard local serach
67//flag 52   - zdf local serach
68//flag 53   - tectime local serach
69//flag 54   - giga local serach
70//flag 55   - beeg local serach
71//flag 56   - rtl2now local serach
72//flag 57   - rtlnow local serach
73//flag 58   - superrtlnow local serach
74//flag 59   - voxnow local serach
75//flag 60   - xvideos local serach
76//flag 61   - mlehd local serach
77//flag 62   - netzkino local serach
78//flag 63   - filmon local serach
79//flag 64   - tvtoast
80//flag 65   - tvtoast local serach
81//flag 66   - coming soon dummy
82//flag 67   - rtlnitronow
83//flag 68   - rtlnitronow pay
84//flag 69   - rtlnitronow local search
85//flag 70   - ntvnow
86//flag 71   - ntvnow pay
87//flag 72   - ntvnow local search
88//flag 73   - watchmovies movie
89//flag 74   - watchmovies series
90//flag 75   - watchmovies local search
91//flag 75   - amazon
92//flag 76   - amazon movie search
93//flag 77   - amazon series search
94//flag 78   - amazon series listed search
95//flag 79   - amazon watchlist movie
96//flag 80   - amazon watchlist tv
97//flag 81   - amazon popularity.rank movie
98//flag 82   - amazon next page
99//flag 83   - amazon popularity.rank tv
100//flag 84   - amazon popularity.kids movie
101//flag 85   - amazon popularity.kids tv
102//flag 86   - amazon currently movie
103//flag 87   - amazon genre movie
104//flag 88   - amazon genre movie listed
105//flag 89   - amazon genre tv
106//flag 90   - amazon genre tv listed
107//flag 91   - streamlive
108//flag 92   - cricfree
109//flag 93   - liveonlinetv
110//flag 94   - movie2k 41 movie4k
111//flag 95       - movie2k 34 movie4k hoster de
112//flag 96       - movie2k 35 movie4k hoster other
113//flag 97   - movie2k 26 movie4k local serach
114
115//flag 100  - all local search
116//flag 1000 - menu pincode
117//flag 9999 - menu hidden codecpack
118
119// redmenu
120//check 1       - screenbgdownload(1)
121//check 2       - Search on KinoX
122//check 8       - Search on KinoX (local)
123//check 3       - Search on Solarmovies (movie)
124//check 4       - Search on Solarmovies (serie)
125//check 9       - Search on Solarmovies (local)
126//check 5       - Search on Youtube
127//check 10  - Search on Youtube (local)
128//check 6       - Search on MyVideo
129//check 11  - Search on MyVideo (local)
130//check 7       - Search on Movie4k
131//check 12  - Search on Movie4k (local)
132//check 13  - Search on InternetRadio (local)
133//check 14  - Search on InternetTv (local)
134//check 15      - Search on ARD (local)
135//check 16      - Search on ZDF (local)"
136//check 17      - Search on TecTime (local)
137//check 18      - Search on Giga (local)
138//check 19      - Search on Beeg (local)
139//check 20      - Search on NowTv (local)
140//check 21      - Search on All (local)
141
142//check 24      - Search on Xvideos (local)
143//check 25      - Search on Mle-HD (local)
144//check 26      - Search on Netzkino (local)
145//check 27      - Search on FilmOn (local)
146
147//removed
148//check 20      - Search on Rtl2-Now (local)
149//check 21      - Search on Rtl-Now (local)
150//check 22      - Search on SuperRTL-Now (local)
151//check 23      - Search on VOX-Now (local)
152//check 28      - Search on RtlNitro-Now (local)
153//check 29      - Search on NTV-Now (local)
154
155struct tithek
156{
157        char* title;
158        char* link;
159        char* pic;
160        char* localname;
161        char* menutitle;       
162        int flag;
163        struct tithek* prev;
164        struct tithek* next;
165};
166struct tithek *tithek = NULL;
167
168
169void freetithekcontent(struct tithek* node)
170{
171        if(node == NULL) return;
172
173        free(node->title); node->title = NULL;
174        node->link = NULL;
175        node->pic = NULL;
176        node->localname = NULL;
177        node->menutitle = NULL;
178        node->flag = 0;
179}
180
181int addtithekcontent(struct tithek* node, char *line, int len, int count, int pay)
182{
183        int ret = 0, i = 0, skip = 0, hid = 0, sos = 0;
184        char* tmpstr = NULL, *flag = NULL, *cmd = NULL, *tmp = NULL;
185        if(node == NULL) return 1;
186
187        if(len > 0) tmpstr = malloc(len + 1);
188        if(tmpstr != NULL)
189        {
190                memcpy(tmpstr, line, len);
191                tmpstr[len] = '\0';
192
193                node->title = tmpstr;
194
195                while(tmpstr[0] != '\0')
196                {
197                        if(tmpstr[0] == '#')
198                        {
199                                tmpstr[0] = '\0';
200                                tmpstr++;
201                                switch(ret)
202                                {
203                                        case 0: node->link = tmpstr; break;
204                                        case 1: node->pic = tmpstr; break;
205                                        case 2: node->localname = tmpstr; break;
206                                        case 3: node->menutitle = tmpstr; break;
207                                        case 4: flag = tmpstr; break;
208                                }
209
210                                ret++;
211                        }
212                        else
213                                tmpstr++;
214                }
215        }
216
217        if(ret != 5)
218        {
219                if(count > 0)
220                {
221                        err("tithek line %d not ok (ret=%d)", count, ret);
222                }
223                else
224                {
225                        err("add tithek (ret=%d)", ret);
226                }
227                freetithekcontent(node);
228                return 1;
229        }
230
231        if(flag != NULL) node->flag = atoi(flag);
232       
233        sos = getconfigint("sos", NULL);
234        hid = getconfigint("tithek_hid_xxx", NULL);
235        if(node->flag == 1000 && hid == 1)
236                skip = 1;
237        else if((node->flag == 9996 || node->flag == 9997 || node->flag == 9998 || node->flag == 9999) && !file_exist("/mnt/swapextensions/etc/.codecpack") && !file_exist("/var/swap/etc/.codecpack") && !file_exist("/var/etc/.codecpack"))
238                skip = 1;
239        else if(node->flag == 6 && pay == 0)
240                skip = 1;
241        else if(node->flag == 1 && pay == 0)
242                skip = 1;
243        else if(node->flag == 35 && pay == 0)
244                skip = 1;
245        else if(node->flag == 96 && pay == 0)
246                skip = 1;
247        else if(titheksolarmovie == 1 && node->flag == 9996 && sos == 0)
248        {
249                cmd = ostrcat(cmd, "cinema", 1, 0);
250                cmd = ostrcat(cmd, ".sola", 1, 0);
251                cmd = ostrcat(cmd, "rmovi", 1, 0);
252                cmd = ostrcat(cmd, "e.", 1, 0);
253                cmd = ostrcat(cmd, "ph", 1, 0);
254               
255                for(i = 0; i < 3; i++)
256                {
257                        free(tmp); tmp = NULL;
258                        tmp = gethttpreal(cmd, "/", 80, NULL, NULL, NULL, 0, NULL, NULL, 5000, 2);
259                        if(tmp != NULL) break;
260                }
261                if(tmp == NULL)
262                        skip = 1;
263
264                titheksolarmovie = 0;
265        }
266        else if(tithekmovie4k == 1 && node->flag == 9997 && sos == 0)
267        {
268                cmd = ostrcat(cmd, "ww", 1, 0);
269                cmd = ostrcat(cmd, "w.mov", 1, 0);
270                cmd = ostrcat(cmd, "ie4k", 1, 0);
271                cmd = ostrcat(cmd, ".", 1, 0);
272                cmd = ostrcat(cmd, "to", 1, 0);
273               
274                for(i = 0; i < 3; i++)
275                {
276                        free(tmp); tmp = NULL;
277                        tmp = gethttpreal(cmd, "/", 80, NULL, NULL, NULL, 0, NULL, NULL, 5000, 2);
278                        if(tmp != NULL) break;
279                }
280                if(tmp == NULL)
281                        skip = 1;
282
283                tithekmovie4k = 0;
284        }               
285        else if(tithekmlehd == 1 && node->flag == 9998 && sos == 0)
286        {
287                cmd = ostrcat(cmd, "ww", 1, 0);
288                cmd = ostrcat(cmd, "w.mle", 1, 0);
289                cmd = ostrcat(cmd, "-hd", 1, 0);
290                cmd = ostrcat(cmd, ".", 1, 0);
291                cmd = ostrcat(cmd, "se", 1, 0);
292               
293                for(i = 0; i < 3; i++)
294                {
295                        free(tmp); tmp = NULL;
296                        tmp = gethttpreal(cmd, "/", 80, NULL, NULL, NULL, 0, NULL, NULL, 5000, 2);
297                        if(tmp != NULL) break;
298                }
299                if(tmp == NULL)
300                        skip = 1;
301
302                tithekmlehd = 0;
303        }
304        else if(tithekkinox == 1 && node->flag == 9999 && sos == 0)
305        {
306                cmd = ostrcat(cmd, "kin", 1, 0);
307                cmd = ostrcat(cmd, "ox", 1, 0);
308                cmd = ostrcat(cmd, ".", 1, 0);
309                cmd = ostrcat(cmd, "me", 1, 0);
310               
311                for(i = 0; i < 3; i++)
312                {
313                        free(tmp); tmp = NULL;
314                        tmp = gethttpreal(cmd, "/", 80, NULL, NULL, NULL, 0, NULL, NULL, 5000, 2);
315                        if(tmp != NULL) break;
316                }
317                if(tmp == NULL)
318                        skip = 1;
319
320                tithekkinox = 0;
321        }
322
323        if(skip == 1)
324        {
325                freetithekcontent(node);
326                return 1;
327        }
328
329        free(tmp); tmp = NULL;
330        free(cmd), cmd = NULL;
331               
332        return 0;
333}
334
335struct tithek* addtithek(char *line, int len, int count, struct tithek* last, int pay)
336{
337        //debug(1000, "in");
338        struct tithek *newnode = NULL, *prev = NULL, *node = NULL;
339        int ret = 0;
340
341        if(line == NULL) return NULL;
342
343        newnode = (struct tithek*)calloc(1, sizeof(struct tithek));
344        if(newnode == NULL)
345        {
346                err("no memory");
347                return NULL;
348        }
349
350        ret = addtithekcontent(newnode, line, len, count, pay);
351        if(ret == 1)
352        {
353                free(newnode);
354                return NULL;
355        }
356
357        node = tithek;
358
359        if(last == NULL)
360        {
361                while(node != NULL)
362                {
363                        prev = node;
364                        node = node->next;
365                }
366        }
367        else
368        {
369                prev = last;
370                node = last->next;
371        }
372
373        if(prev == NULL)
374                tithek = newnode;
375        else
376        {
377                prev->next = newnode;
378                newnode->prev = prev;
379        }
380        newnode->next = node;
381        if(node != NULL) node->prev = newnode;
382
383        //debug(1000, "out");
384        return newnode;
385}
386
387struct tithek* createtithek(struct tithek* update, char* title, char* link, char* pic, char* localname, char* menutitle, int flag)
388{
389        int pay = 0;
390        struct tithek* tnode = NULL;
391        char* tmpstr = NULL;
392       
393        pay = getconfigint("tithek_pay", NULL);
394
395        title = stringreplacechar(title, '#', ' ');
396        link = stringreplacechar(link, '#', ' ');
397        pic = stringreplacechar(pic, '#', ' ');
398        localname = stringreplacechar(localname, '#', ' ');
399        menutitle = stringreplacechar(menutitle, '#', ' ');
400       
401        tmpstr = ostrcat(tmpstr, title, 1, 0);
402        tmpstr = ostrcat(tmpstr, "#", 1, 0);
403        tmpstr = ostrcat(tmpstr, link, 1, 0);
404        tmpstr = ostrcat(tmpstr, "#", 1, 0);
405        tmpstr = ostrcat(tmpstr, pic, 1, 0);
406        tmpstr = ostrcat(tmpstr, "#", 1, 0);
407        tmpstr = ostrcat(tmpstr, localname, 1, 0);
408        tmpstr = ostrcat(tmpstr, "#", 1, 0);
409        tmpstr = ostrcat(tmpstr, menutitle, 1, 0);
410        tmpstr = ostrcat(tmpstr, "#", 1, 0);
411        tmpstr = ostrcat(tmpstr, oitoa(flag), 1, 1);
412
413        tmpstr = string_replace_all("\n", "", tmpstr, 1);
414        tmpstr = string_replace_all("\r", "", tmpstr, 1);
415
416        if(update != NULL)
417        {
418                freetithekcontent(update);
419                addtithekcontent(update, tmpstr, strlen(tmpstr), 1, pay);
420                tnode = update;
421        }
422        else
423                tnode = addtithek(tmpstr, strlen(tmpstr), 1, NULL, pay);
424
425        free(tmpstr);
426
427        return tnode;
428}
429
430int readtithek(char* filename)
431{
432        debug(1000, "in");
433        FILE *fd = NULL;
434        char *fileline = NULL, *file = NULL;
435        int linecount = 0, len = 0, pay = 0;
436        struct tithek* last = NULL, *tmplast = NULL;
437
438        fileline = malloc(MINMALLOC);
439        if(fileline == NULL)
440        {
441                err("no memory");
442                return 1;
443        }
444
445//      if(cmpfilenameext(filename, ".sh") == 0)
446        if(ostrstr(filename, ".sh ") != NULL && ostrstr(filename, ".sh init") == NULL)
447        {
448                printf("[tithek] cmd: %s\n", filename);
449                debug(10, "cmd: %s", filename);
450                file = command(filename);
451                file = string_newline(file);
452                printf("[tithek] file: %s\n", file);
453                debug(10, "file: %s", file);
454        }
455        else
456                file = ostrcat(filename, NULL, 0, 0);   
457
458        fd = fopen(file, "r");
459        if(fd == NULL)
460        {
461                perr("can't open %s", file);
462                free(fileline);
463                return 1;
464        }
465
466        pay = getconfigint("tithek_pay", NULL);
467
468        while(fgets(fileline, MINMALLOC, fd) != NULL)
469        {
470                if(fileline[0] == '\n')
471                        continue;
472                len = strlen(fileline) - 1;
473                if(fileline[len] == '\n')
474                        fileline[len] = '\0';
475                if(fileline[len - 1] == '\r')
476                        fileline[len - 1] = '\0';
477
478                linecount++;
479
480                if(last == NULL) last = tmplast;
481                last = addtithek(fileline, len + 2, linecount, last, pay);
482                if(last != NULL) tmplast = last;
483        }
484
485        free(fileline);
486        fclose(fd);
487        return linecount;
488}
489
490int deltithek(char* link)
491{
492        debug(1000, "in");
493        int ret = 1;
494
495        struct tithek *node = tithek, *prev = tithek;
496
497        while(node != NULL)
498        {
499                if(ostrcmp(link, node->link) == 0)
500                {
501                        ret = 0;
502                        if(node == tithek)
503                        {
504                                tithek = node->next;
505                                if(tithek != NULL)
506                                        tithek->prev = NULL;
507                        }
508                        else
509                        {
510                                prev->next = node->next;
511                                if(node->next != NULL)
512                                        node->next->prev = prev;
513                        }
514
515                        freetithekcontent(node);
516
517                        free(node);
518                        node = NULL;
519
520                        break;
521                }
522
523                prev = node;
524                node = node->next;
525        }
526
527        debug(1000, "out");
528        return ret;
529}
530
531void freetithek()
532{
533        debug(1000, "in");
534        struct tithek *node = tithek, *prev = tithek;
535
536        while(node != NULL)
537        {
538                prev = node;
539                node = node->next;
540                if(prev != NULL)
541                        deltithek(prev->link);
542        }
543
544        debug(1000, "out");
545}
546
547void tithekdownloadthread(struct stimerthread* timernode, struct download* node, int flag)
548{
549        int defpic = 0;
550
551        tithekdownloadcount++;
552
553        if(node != NULL)
554        {
555                m_lock(&status.tithekmutex, 20);
556                if(file_exist(node->filename))
557                {
558                        m_unlock(&status.tithekmutex, 20);
559                        goto end;
560                }
561
562                FILE *fd; fd = fopen(node->filename, "w");
563                if(fd != NULL) fclose(fd);
564                m_unlock(&status.tithekmutex, 20);
565
566                gethttpreal(node->host, node->page, node->port, node->filename, node->auth, NULL, 0, NULL, NULL, node->timeout, 0);
567
568                if(tithekrun == 0)
569                        unlink(node->filename);
570                else
571                {
572                        //check file size
573                        /*
574                        off64_t checkpic = getfilesize(node->filename);
575                        if(checkpic < 200) defpic = 1;
576                        */
577
578                        //check file is gif or html
579                        if(defpic == 0)
580                        {
581                                char* tmp = NULL;
582                                tmp = readbintomem(node->filename, 3);
583                                if(ostrncmp("GIF", tmp, 3) == 0) defpic = 1; //gif
584                                if(ostrncmp("<", tmp, 1) == 0) defpic = 1; //html
585                                free(tmp); tmp = NULL;
586                        }
587
588                        if(defpic == 1)
589                        {
590                                m_lock(&status.tithekmutex, 20);
591                                unlink(node->filename);
592                                symlink("/var/usr/local/share/titan/plugins/tithek/default.jpg", node->filename);
593                                m_unlock(&status.tithekmutex, 20);
594                        }
595                }
596
597end:
598                free(node->host); node->host = NULL;
599                free(node->page); node->page = NULL;
600                free(node->filename); node->filename = NULL;
601                free(node->auth); node->auth = NULL;
602        }
603
604        free(node); node = NULL;
605
606        tithekdownloadcount--;
607        tithekdownloadrun = 1;
608}
609
610char* tithekdownload(char* link, char* localname, char* pw, int pic, int flag)
611{
612        int ret = 1, port = 80, timeout = 10000, ssl = 0;
613        char* ip = NULL, *pos = NULL, *path = NULL;
614        char* tmpstr = NULL, *localfile = NULL;
615
616        if(link == NULL) return NULL;
617        if(ostrncmp("http://", link, 7) && ostrncmp("https://", link, 8)) return NULL;
618
619        if(!ostrncmp("https://", link, 8))
620                ssl = 1;
621        else
622        {
623                ip = string_replace("http://", "", (char*)link, 0);
624       
625                // tithek security
626                ip = string_replace_all("imageshack.us/md/up/grd/", "atemio.dyndns.tv/", ip, 1);
627       
628                ip = string_replace_all("kinox.to", "kinox.me", ip, 1);
629                //ip = string_replace_all("movie4k.to", "movie4k.me", ip, 1);
630       
631                if(ip != NULL)
632                        pos = strchr(ip, '/');
633                if(pos != NULL)
634                {
635                        pos[0] = '\0';
636                        path = pos + 1;
637                }
638       
639                if(ostrstr(ip, ":") != NULL)
640                {
641                        ip = oregex("http://(.*):.*", link);
642                        port = atoi(oregex("http://.*:(.*)/.*", link));
643                }
644        }
645
646        tmpstr = ostrcat(path, NULL, 0, 0);
647
648        if(flag == 0)
649        {
650                localfile = ostrcat(TITHEKPATH, "/", 0, 0);
651                if(localname == NULL)
652                        localfile = ostrcat(localfile, basename(tmpstr), 1, 0);
653                else
654                        localfile = ostrcat(localfile, localname, 1, 0);
655        }
656        else
657        {
658                localfile = ostrcat(getconfig("rec_streampath", NULL), "/", 0, 0);
659                if(localname == NULL)
660                        localfile = ostrcat(localfile, basename(tmpstr), 1, 0);
661                else
662                        localfile = ostrcat(localfile, localname, 1, 0);
663        }
664        free(tmpstr); tmpstr = NULL;
665
666/*
667        debug(99, "---------------------------------------");
668        debug(99, "link: %s", link);
669        debug(99, "localname: %s", localname);
670        debug(99, "---------------------------------------");
671        debug(99, "ip: %s", ip);
672        debug(99, "port: %d", port);
673        debug(99, "path: %s", path);
674        debug(99, "localfile: %s", localfile);
675        debug(99, "pw: %s", pw);
676        debug(99, "---------------------------------------");
677*/
678        if(flag == 0)
679        {
680                if(localfile != NULL && !file_exist(localfile))
681                {
682                        if(pic == 1)
683                        {
684                                if(ssl == 1)
685                                        gethttps(link, localfile, NULL, NULL, NULL, NULL, 0);
686                                else if(tithekdownloadcount >= 24) //start max 24 threads
687                                        gethttp(ip, path, port, localfile, pw, timeout, NULL, 0);
688                                else
689                                {
690                                        //dnode is freed in thread
691                                        struct download* dnode = calloc(1, sizeof(struct download));
692                                        if(dnode != NULL)
693                                        {
694                                                dnode->host = ostrcat(ip, NULL, 0, 0);
695                                                dnode->page = ostrcat(path, NULL, 0, 0);
696                                                dnode->port = port;
697                                                dnode->filename = ostrcat(localfile, NULL, 0, 0);
698                                                dnode->auth = ostrcat(pw, NULL, 0, 0);
699                                                dnode->connfd = -1;
700                                                dnode->ret = -1;
701                                                dnode->timeout = timeout;
702                                                addtimer(&tithekdownloadthread, START, 100, 1, (void*)dnode, NULL, NULL);
703                                        }
704                                }
705                        }
706                        else
707                                gethttp(ip, path, port, localfile, pw, timeout, NULL, 0);                       
708                }
709        }
710        else
711        {
712       
713                if(localfile != NULL && file_exist(localfile))
714                        ret = textbox(_("Message"), _("File exist, overwrite?"), _("OK"), getrcconfigint("rcok", NULL), _("EXIT"), getrcconfigint("rcexit", NULL), NULL, 0, NULL, 0, 600, 200, 0, 0);
715
716                if(localfile != NULL && ret == 1)
717                        screendownload("Download", ip, path, port, localfile, pw, timeout, 0);
718        }
719
720        free(ip); ip = NULL;
721        free(tmpstr); tmpstr = NULL;
722
723        return localfile;
724}
725
726int createtithekplay(char* titheklink, struct skin* grid, struct skin* listbox, struct skin* countlabel, int flag)
727{
728        int gridbr = 0, posx = 0, count = 0, sumcount = 0, count1 = 0, pagecount = 0, skip = 0;
729        int localfile = 0;
730        struct skin* tmp = NULL;
731        char* tithekfile = NULL;
732        char* tmpstr = NULL;
733
734        if(!ostrncmp("http://", titheklink, 7))
735                tithekfile = tithekdownload(titheklink, NULL, HTTPAUTH, 0, 0);
736        else
737        {
738                tithekfile = ostrcat(titheklink, NULL, 0, 0);
739                localfile = 1;
740        }
741
742//      amazon_init(titheklink, tithekfile);
743//init locale parser
744        localscript_init(titheklink, tithekfile);
745
746        delmarkedscreennodes(grid, 1);
747        freetithek();
748//      if(readtithek(tithekfile) != 0) return 1;
749        int linecount = readtithek(tithekfile);
750//      if(linecount == 0) return 1;
751       
752        struct tithek* titheknode = tithek;
753
754        int height = 500;
755        int width = 590;
756        int picheight = 480;
757        int picwidth = 570;
758        int zcount = 2;
759        int fontsize = 25;
760        int pcount = 2;
761
762        if(getconfigint("tithek_cover", NULL) == 0 || getconfigint("tithek_view", NULL) == 0)
763        {
764                if(linecount > 2)
765                {
766                        height = 280;
767                        width = 390;
768                        picheight = 230;
769                        picwidth = 370;
770                        zcount = 3;
771                        fontsize = 20;
772                        pcount = 6;
773                }
774         
775                if(linecount > 8)
776                {
777                        height = 180;
778                        width = 295;
779                        picheight = 130;
780                        picwidth = 270;
781                        zcount = 4;
782                        fontsize = 18;
783                        pcount = 12;
784                }
785
786                if(linecount > 19)
787                {
788                        height = 140;
789                        width = 235;
790                        picheight = 90;
791                        picwidth = 210;
792                        zcount = 5;
793                        fontsize = 16;
794                        pcount = 20;
795                }
796       
797                if(linecount > 25)
798                {
799                        height = 111;
800                        width = 196;
801                        picheight = 60;
802                        picwidth = 150;
803                        zcount = 6;
804                        fontsize = 14;
805                        pcount = 30;
806                }
807        }
808       
809        if((getconfigint("tithek_cover", NULL) == 1 && flag == 0) || (getconfigint("tithek_view", NULL) == 1 && flag != 0))
810        {
811                height = 500;
812                width = 590;
813                picheight = 480;
814                picwidth = 570;
815                zcount = 2;
816                fontsize = 25;
817                pcount = 2;
818        }
819
820        if((getconfigint("tithek_cover", NULL) == 2 && flag == 0) || (getconfigint("tithek_view", NULL) == 2 && flag != 0))
821        {
822                height = 280;
823                width = 390;
824                picheight = 230;
825                picwidth = 370;
826                zcount = 3;
827                fontsize = 20;
828                pcount = 6;
829        }
830
831        if((getconfigint("tithek_cover", NULL) == 3 && flag == 0) || (getconfigint("tithek_view", NULL) == 3 && flag != 0))
832        {
833                height = 180;
834                width = 295;
835                picheight = 130;
836                picwidth = 270;
837                zcount = 4;
838                fontsize = 18;
839                pcount = 12;
840        }
841
842        if((getconfigint("tithek_cover", NULL) == 4 && flag == 0) || (getconfigint("tithek_view", NULL) == 4 && flag != 0))
843        {
844                height = 140;
845                width = 235;
846                picheight = 90;
847                picwidth = 210;
848                zcount = 5;
849                fontsize = 16;
850                pcount = 20;
851        }
852
853        if((getconfigint("tithek_cover", NULL) == 5 && flag == 0) || (getconfigint("tithek_view", NULL) == 5 && flag != 0))
854        {
855                height = 111;
856                width = 196;
857                picheight = 60;
858                picwidth = 150;
859                zcount = 6;
860                fontsize = 14;
861                pcount = 30;
862        }
863
864        if((getconfigint("tithek_cover", NULL) == 6 && flag == 0) || (getconfigint("tithek_view", NULL) == 6 && flag != 0))
865        {
866                height = 50;
867                width = 1160;
868                picheight = 48;
869                picwidth = 1100;
870                zcount = 1;
871                fontsize = 25;
872                pcount = 1;
873        }
874
875        if(getconfigint("tithek_pic_ratio", NULL) == 1)
876        {
877                picwidth = 2;
878                picheight = 2;
879        }
880
881        while(titheknode != NULL)
882        {
883                tmp = addlistbox(grid, listbox, tmp, 1);
884                if(tmp != NULL)
885                {
886                        skip = 0;
887                        sumcount++;
888                        count++;
889                        count1++;
890                        if(gridbr == 0)
891                                tmp->type = GRIDBR;
892                        gridbr = 1;
893                        tmp->wrap = YES;
894
895                        tmp->picheight = picheight;
896                        tmp->picwidth = picwidth;
897                                                               
898                        tmp->fontsize = fontsize;
899                        tmp->height = height;
900                        tmp->width = width;
901                        tmp->prozwidth = 0;
902                        //tmp->bgcol = 0xffffff;
903                        tmp->bgspace = 1;
904                        tmp->vspace = 10;
905                        tmp->hspace = 10;
906                        tmp->posx = posx;
907                        //tmp->fontcol = 0x0000ff;
908                        tmp->halign = CENTER;
909                        tmp->valign = TEXTBOTTOM;
910                        changetext(tmp, titheknode->title);
911                        tmp->handle = (char*)titheknode;
912                        posx += tmp->width;
913                        if(count >= zcount)
914                        {
915                                count = 0;
916                                posx = 0;
917                                gridbr = 0;
918                        }
919                       
920                        if(count1 >= pcount)
921                        {
922                                count1 = 0;
923                                pagecount++;
924                                skip = 1;
925                        }
926                }
927                titheknode = titheknode->next;
928        }
929
930        if(skip == 0)
931                pagecount++;
932
933        tmpstr = oitoa(sumcount);
934
935        char* tmpstr1 = ostrcat(_("found"), NULL, 0, 0);
936        tmpstr1 = ostrcat(tmpstr1, " ", 1, 0);
937        tmpstr1 = ostrcat(tmpstr1, tmpstr, 1, 0);
938        free(tmpstr); tmpstr = NULL;
939        tmpstr1 = ostrcat(tmpstr1, " ", 1, 0);
940        tmpstr1 = ostrcat(tmpstr1, _("Results"), 1, 0);
941        changetext(countlabel, tmpstr1);
942        free(tmpstr1); tmpstr1 = NULL;
943
944        if(localfile == 0)
945                unlink(tithekfile);
946       
947        free(tithekfile); tithekfile = NULL;
948        return pagecount;
949}
950
951void removefav(char* title, char* link, char* pic, char* localname, char* menutitle, int flag)
952{
953        int count = 0, i = 0;
954        char* tmpstr = NULL, *tmpstr1 = NULL, *input = NULL;
955        struct splitstr* ret = NULL;
956
957        input = ostrcat(input, title, 1, 0);
958        input = ostrcat(input, "#", 1, 0);
959        input = ostrcat(input, link, 1, 0);
960        input = ostrcat(input, "#", 1, 0);
961        input = ostrcat(input, pic, 1, 0);
962        input = ostrcat(input, "#", 1, 0);
963        input = ostrcat(input, localname, 1, 0);
964        input = ostrcat(input, "#", 1, 0);
965        input = ostrcat(input, menutitle, 1, 0);
966        input = ostrcat(input, "#", 1, 0);
967        input = ostrcat(input, oitoa(flag), 1, 1);
968       
969        tmpstr = readfiletomem(getconfig("tithek_fav", NULL), 0);
970       
971        ret = strsplit(tmpstr, "\n", &count);
972
973        if(ret != NULL)
974        {
975                for(i = 0; i < count; i++)
976                {
977                        if(ostrcmp((ret[i]).part, input) != 0)
978                        {
979                                tmpstr1 = ostrcat(tmpstr1, ret[i].part, 1, 0);
980                                tmpstr1 = ostrcat(tmpstr1, "\n", 1, 0);
981                        }
982                        else
983                                printf("remove: %s\n", ret[i].part);
984                }
985        }
986
987        if(tmpstr1 != NULL && strlen(tmpstr1) > 0)
988                tmpstr1[strlen(tmpstr1) - 1] = '\0';
989
990        if(tmpstr1 == NULL)
991                writesys(getconfig("tithek_fav", NULL), "", 0);
992        else
993                writesys(getconfig("tithek_fav", NULL), tmpstr1, 0);
994
995        if(!ostrncmp("/", link, 1))
996        {
997                free(tmpstr1); tmpstr1 = NULL;
998                tmpstr1 = ostrcat("rm -f ", link, 0, 0);
999                system(tmpstr1);
1000        }
1001
1002        free(ret); ret = NULL;
1003        free(tmpstr); tmpstr = NULL;
1004        free(tmpstr1); tmpstr1 = NULL;
1005        free(input); input = NULL;
1006}
1007
1008void addfav(char* title, char* link, char* pic, char* localname, char* menutitle, int flag)
1009{
1010        int count = 0, i = 0;
1011        char* tmpstr = NULL, *tmpstr1 = NULL, *input = NULL;
1012        struct splitstr* ret = NULL;
1013
1014        char* savefile = NULL;
1015
1016        struct menulist* mlist = NULL, *mbox = NULL;
1017        char* favlist = command("ls -1 /mnt/config/favorite*");
1018        printf("favlist: %s\n", favlist);
1019        ret = strsplit(favlist, "\n", &count);
1020
1021        if(ret != NULL)
1022        {
1023                for(i = 0; i < count; i++)
1024                {
1025                        char* cmd = ostrcat("cat ", getconfig("tithek_fav", NULL), 0, 0);
1026                        cmd = ostrcat(cmd, " | grep '#", 1, 0);
1027                        cmd = ostrcat(cmd, (ret[i]).part, 1, 0);
1028
1029                        cmd = ostrcat(cmd, "#' | cut -d'#' -f1", 1, 0);
1030                        printf("cmd: %s\n", cmd);
1031                        tmpstr = command(cmd);
1032                        if(tmpstr == NULL)
1033                                tmpstr = ostrcat(_("Favorites"), NULL, 0, 0);
1034                        addmenulist(&mlist, tmpstr, (ret[i]).part, NULL, 0, 0);
1035                        printf("(ret[i]).part: %s\n", (ret[i]).part);
1036                        printf("tmpstr: %s\n", tmpstr);
1037                        free(tmpstr), tmpstr = NULL;
1038                        free(cmd), cmd = NULL;
1039                }
1040
1041        }
1042        else
1043                addmenulist(&mlist, "Favorites", getconfig("tithek_fav", NULL), NULL, 0, 0);
1044
1045        free(ret), ret = NULL;
1046
1047        mbox = menulistbox(mlist, NULL, NULL, NULL, NULL, NULL, 1, 0);
1048        if(mbox != NULL)
1049        {
1050                printf("mbox->name %s\n", mbox->name);
1051                printf("mbox->text %s\n", mbox->text);
1052                savefile = ostrcat(mbox->text, NULL, 0, 0);
1053        }
1054        else
1055                savefile = ostrcat(getconfig("tithek_fav", NULL), NULL, 0, 0);
1056                               
1057        input = ostrcat(input, title, 1, 0);
1058        input = ostrcat(input, "#", 1, 0);
1059        input = ostrcat(input, link, 1, 0);
1060        input = ostrcat(input, "#", 1, 0);
1061        input = ostrcat(input, pic, 1, 0);
1062        input = ostrcat(input, "#", 1, 0);
1063        input = ostrcat(input, localname, 1, 0);
1064        input = ostrcat(input, "#", 1, 0);
1065        input = ostrcat(input, menutitle, 1, 0);
1066        input = ostrcat(input, "#", 1, 0);
1067        input = ostrcat(input, oitoa(flag), 1, 1);
1068        // tithek security
1069        input = string_replace_all("http://atemio.dyndns.tv/", "http://imageshack.us/md/up/grd/", input, 1);
1070       
1071        tmpstr1 = ostrcat(tmpstr1, input, 1, 0);
1072        tmpstr1 = ostrcat(tmpstr1, "\n", 1, 0);
1073
1074        tmpstr = readfiletomem(savefile, 0);
1075
1076        ret = strsplit(tmpstr, "\n", &count);
1077
1078        if(ret != NULL)
1079        {
1080                for(i = 0; i < count; i++)
1081                {
1082                        if(ostrcmp((ret[i]).part, input) != 0)
1083                        {
1084                                tmpstr1 = ostrcat(tmpstr1, ret[i].part, 1, 0);
1085                                tmpstr1 = ostrcat(tmpstr1, "\n", 1, 0);
1086                        }
1087                }
1088        }
1089
1090        if(tmpstr1 != NULL && strlen(tmpstr1) > 0)
1091                tmpstr1[strlen(tmpstr1) - 1] = '\0';
1092
1093        writesys(savefile, tmpstr1, 0);
1094
1095        if(!ostrncmp("/", link, 1))
1096        {
1097                free(tmpstr1); tmpstr1 = NULL;
1098                tmpstr1 = ostrcat("touch ", link, 0, 0);
1099                system(tmpstr1);
1100        }
1101
1102        free(mbox); mbox = NULL;
1103        free(ret); ret = NULL;
1104        free(tmpstr); tmpstr = NULL;
1105        free(tmpstr1); tmpstr1 = NULL;
1106        free(input); input = NULL;
1107}
1108
1109void editfav(char* title, char* link, char* pic, char* localname, char* menutitle, int flag)
1110{
1111        int rcret = 0, type = 0;
1112        struct skin* tithekedit = getscreen("tithekedit");
1113        struct skin* listbox = getscreennode(tithekedit, "listbox");
1114        struct skin* skin_title = getscreennode(tithekedit, "title");
1115        struct skin* skin_link = getscreennode(tithekedit, "link");
1116        struct skin* skin_pic = getscreennode(tithekedit, "pic");
1117        struct skin* skin_localname = getscreennode(tithekedit, "localname");
1118        struct skin* skin_menutitle = getscreennode(tithekedit, "menutitle");
1119        struct skin* skin_type = getscreennode(tithekedit, "type");
1120
1121        struct skin* tmp = NULL;
1122        struct skin* load = getscreen("loading");
1123
1124        changeinput(skin_title, title);
1125        changeinput(skin_link, link);
1126        changeinput(skin_pic, pic);
1127        changeinput(skin_localname, localname);
1128        changeinput(skin_menutitle, menutitle);
1129        changeinput(skin_type, oitoa(type));
1130
1131        addscreenrc(tithekedit, listbox);
1132        drawscreen(tithekedit, 0, 0);
1133
1134        tmp = listbox->select;
1135        while(1)
1136        {
1137                addscreenrc(tithekedit, tmp);
1138                rcret = waitrcext(tithekedit, 0, 0, 1000);
1139                delownerrc(tithekedit);
1140                addscreenrc(tithekedit, listbox);
1141                tmp = listbox->select;
1142
1143                if(rcret == getrcconfigint("rcexit", NULL)) break;
1144                if(rcret == getrcconfigint("rcok", NULL))
1145                {
1146                        drawscreen(load, 0, 0);
1147                        addfav(skin_title->ret, skin_link->ret, skin_pic->ret, skin_localname->ret, skin_menutitle->ret, atoi(skin_type->ret));
1148                        clearscreen(load);
1149                        break;
1150                }
1151        }
1152
1153        delownerrc(tithekedit);
1154        clearscreen(tithekedit);
1155}
1156
1157void cacheplay(char* link, char* filename, int flag)
1158{
1159        struct skin* load = getscreen("loadingproz");
1160        struct skin* proztext = getscreennode(load, "proztext");
1161
1162        drawscreen(load, 0, 0); 
1163        int port = 80, count = 0, mcount = 0;
1164        off64_t size = 0, msize = 0;
1165        char* host = NULL, *pos = NULL, *path = NULL, *file = NULL, *tmpstr = NULL;
1166        host = string_replace("http://", "", (char*)link, 0);
1167
1168        if(host != NULL)
1169                pos = strchr(host, '/');
1170        if(pos != NULL)
1171        {
1172                pos[0] = '\0';
1173                path = pos + 1;
1174        }
1175
1176        file = ostrcat(getconfig("rec_streampath", NULL), "/.cache.", 0, 0);
1177        file = ostrcat(file, filename, 1, 0);
1178
1179        if(ostrstr(host, ":") != NULL)
1180        {
1181                host = oregex("http://(.*):.*", link);
1182                port = atoi(oregex("http://.*:(.*)/.*", link));
1183        }
1184
1185        debug(99, "---------------------------------------");
1186        debug(99, "link: %s", link);
1187        debug(99, "---------------------------------------");
1188        debug(99, "host: %s", host);
1189        debug(99, "port: %d", port);
1190        debug(99, "path: %s", path);
1191        debug(99, "local: %s", file);
1192        debug(99, "---------------------------------------");
1193       
1194       
1195        struct download* dnode = NULL;
1196        dnode = calloc(1, sizeof(struct download));
1197        if(dnode == NULL)
1198        {
1199                err("no mem");
1200                return;
1201        }               
1202        dnode->host = host;
1203        dnode->page = path;
1204        dnode->port = port;
1205        dnode->filename = file;
1206        dnode->auth = NULL;
1207        dnode->connfd = -1;
1208        dnode->ret = -1;
1209        dnode->timeout = 30000;
1210       
1211        addtimer(&gethttpstruct, START, 1000, 1, (void*)dnode, NULL, NULL);
1212
1213        if(flag == 1)
1214        {
1215                mcount = 120;
1216                msize = 10485760;
1217        }
1218        else if(flag == 2)
1219        {
1220                mcount = 240; 
1221                msize = 20971520;
1222        }
1223        else if(flag == 3)
1224        {
1225                mcount = 360; 
1226                msize = 31457280;
1227        }
1228                       
1229        while(count < mcount || size >= msize)
1230        {
1231                sleep(1);
1232                count++;
1233                if(file_exist(file))
1234                        size = getfilesize(file);
1235
1236                int proz = 0;
1237                int proz1 = size * 100 / msize;
1238                debug(99, "size (%dprozent)", proz1);
1239
1240                int proz2 = count * 100 / mcount;
1241                debug(99, "time (%dprozent)", proz2);
1242               
1243                if(proz1 > proz2)
1244                        proz = proz1;
1245                else
1246                        proz = proz2;
1247
1248                debug(99, "cacheing...(%lldkb) (%dprozent)", size / 1024, proz);
1249
1250                if(size >= msize)
1251                        break;
1252                if(count >= mcount)
1253                        break;
1254               
1255                tmpstr = ostrcat(_("please wait..."), " (", 0, 0);
1256                tmpstr = ostrcat(tmpstr, oitoa(proz), 1, 1);
1257                tmpstr = ostrcat(tmpstr, "%)", 1, 0);
1258                clearscreen(load);
1259                changetext(proztext, tmpstr);
1260                drawscreen(load, 0, 0);
1261                free(tmpstr), tmpstr = NULL;
1262        }
1263
1264        screenplay(file, filename, 2, 0);
1265        sockclose(&dnode->connfd);
1266        free(dnode); dnode = NULL;
1267
1268        tmpstr = ostrcat(tmpstr, _("Remove Cachefile ?"), 1, 0);
1269        tmpstr = ostrcat(tmpstr, "\n\n", 1, 0);
1270        tmpstr = ostrcat(tmpstr, file, 1, 0);
1271       
1272        if(textbox(_("Message"), tmpstr, _("OK"), getrcconfigint("rcok", NULL), _("EXIT"), getrcconfigint("rcexit", NULL), NULL, 0, NULL, 0, 600, 200, 0, 0) == 1)
1273        {
1274                unlink(file);
1275        }
1276        free(tmpstr), tmpstr = NULL;
1277        free(file), file = NULL;
1278        free(host), host = NULL;
1279}
1280
1281void backgrounddl(char* link, char* filename)
1282{
1283        int port = 80, ret = 0;
1284        char* host = NULL, *pos = NULL, *path = NULL, *file = NULL, *tmpstr = NULL;
1285        host = string_replace("http://", "", (char*)link, 0);
1286
1287        if(host != NULL)
1288                pos = strchr(host, '/');
1289        if(pos != NULL)
1290        {
1291                pos[0] = '\0';
1292                path = pos + 1;
1293        }
1294
1295        file = ostrcat(getconfig("rec_streampath", NULL), "/", 0, 0);
1296        file = ostrcat(file, filename, 1, 0);
1297
1298        if(ostrstr(host, ":") != NULL)
1299        {
1300                host = oregex("http://(.*):.*", link);
1301                port = atoi(oregex("http://.*:(.*)/.*", link));
1302        }
1303
1304        debug(99, "---------------------------------------");
1305        debug(99, "link: %s", link);
1306        debug(99, "---------------------------------------");
1307        debug(99, "host: %s", host);
1308        debug(99, "port: %d", port);
1309        debug(99, "path: %s", path);
1310        debug(99, "local: %s", file);
1311        debug(99, "---------------------------------------");
1312               
1313        if(ostrstr(path, "|User-Agent=") != NULL)
1314        {
1315                stringreplacechar(path, '|', '\0');
1316                printf("page changed: %s\n", path);
1317
1318                char* cmd = NULL;
1319                cmd = ostrcat("wget --user-agent=\'Mozilla/5.0 (X11; Ubuntu; Linux i686; rv:30.0) Gecko/20100101 Firefox/30.0\' \'http://", host, 0, 0);
1320                cmd = ostrcat(cmd, "/", 1, 0);
1321                cmd = ostrcat(cmd, path, 1, 0);
1322                cmd = ostrcat(cmd, "\' -O \'", 1, 0);
1323                cmd = ostrcat(cmd, file, 1, 0);
1324                cmd = ostrcat(cmd, "\' &", 1, 0);
1325                printf("cmd: %s\n", cmd);
1326                ret = system(cmd);
1327                free(cmd), cmd = NULL;
1328        }
1329        else
1330                ret = startbgdownload(host, path, port, file, NULL, 30000, 1);
1331
1332        if(ret == 1)
1333                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);
1334                                       
1335        free(tmpstr), tmpstr = NULL;
1336        free(file), file = NULL;
1337        free(host), host = NULL;
1338}
1339       
1340void submenu(struct skin* listbox, struct skin* load, char* title)
1341{
1342        int flag = 0;
1343        char* tmpstr = NULL, *tmpstr1 = NULL, *tmpstr2 = NULL; 
1344        drawscreen(load, 0, 0);
1345        tmpstr = ostrcat(((struct tithek*)listbox->select->handle)->link, NULL, 0, 0);
1346        tmpstr2 = ostrcat(((struct tithek*)listbox->select->handle)->title, NULL, 0, 0);
1347               
1348        if(((struct tithek*)listbox->select->handle)->flag == 2)
1349        {
1350                if(tmpstr != NULL) tmpstr1 = ostrcat(tmpstr, NULL, 0, 0);
1351        }                                               
1352        else if(((struct tithek*)listbox->select->handle)->flag == 3)
1353        {
1354                flag = 4;
1355                if(tmpstr != NULL) tmpstr1 = ostrcat(tmpstr, NULL, 0, 0);
1356        }
1357        else if(((struct tithek*)listbox->select->handle)->flag == 4)
1358        {
1359                if(tmpstr != NULL) tmpstr1 = youtube_hoster(tmpstr);
1360        }                                               
1361        else if(((struct tithek*)listbox->select->handle)->flag == 5)
1362        {
1363                if(tmpstr != NULL) tmpstr1 = nowtv(tmpstr);
1364        }
1365        else if(((struct tithek*)listbox->select->handle)->flag == 6)
1366        {
1367                if(tmpstr != NULL) tmpstr1 = nowtv(tmpstr);
1368        }
1369        else if(((struct tithek*)listbox->select->handle)->flag == 12)
1370        {
1371                if(tmpstr != NULL) tmpstr1 = myvideo_hoster(tmpstr);
1372        }
1373        else if(((struct tithek*)listbox->select->handle)->flag == 14)
1374        {
1375                if(tmpstr != NULL) tmpstr1 = kinox(tmpstr);
1376        }
1377        else if(((struct tithek*)listbox->select->handle)->flag == 15)
1378        {
1379                if(tmpstr != NULL) tmpstr1 = giga(tmpstr);
1380        }
1381        else if(((struct tithek*)listbox->select->handle)->flag == 20)
1382        {
1383                if(tmpstr != NULL) tmpstr1 = nbastream(tmpstr);
1384        }
1385        else if(((struct tithek*)listbox->select->handle)->flag == 38)
1386        {
1387                if(tmpstr != NULL) tmpstr1 = mlehd(tmpstr);
1388        }
1389        else if(((struct tithek*)listbox->select->handle)->flag == 41)
1390        {
1391                if(tmpstr != NULL) tmpstr1 = movie4k(tmpstr);
1392        }
1393        else if(((struct tithek*)listbox->select->handle)->flag == 42)
1394        {
1395                if(tmpstr != NULL) tmpstr1 = xvideos(tmpstr);
1396        }
1397        else if(((struct tithek*)listbox->select->handle)->flag == 43)
1398        {
1399                if(tmpstr != NULL) tmpstr1 = solarmovie(tmpstr);
1400        }
1401        else if(((struct tithek*)listbox->select->handle)->flag == 45)
1402        {
1403                if(tmpstr != NULL) tmpstr1 = ard(tmpstr);
1404        }
1405        else if(((struct tithek*)listbox->select->handle)->flag == 46)
1406        {
1407                if(tmpstr != NULL) tmpstr1 = zdf(tmpstr);
1408        }
1409        else if(((struct tithek*)listbox->select->handle)->flag == 50)
1410        {
1411                if(tmpstr != NULL) tmpstr1 = beeg(tmpstr);
1412        }
1413        else if(((struct tithek*)listbox->select->handle)->flag == 64)
1414        {
1415                if(tmpstr != NULL) tmpstr1 = tvtoast(tmpstr);
1416        }
1417        else if(((struct tithek*)listbox->select->handle)->flag == 75)
1418        {
1419                if(tmpstr != NULL) tmpstr1 = amazon(tmpstr);
1420        }
1421        else if(((struct tithek*)listbox->select->handle)->flag == 91)
1422        {
1423                if(tmpstr != NULL) tmpstr1 = streamlive(tmpstr, -1);
1424        }
1425        else if(((struct tithek*)listbox->select->handle)->flag == 92)
1426        {
1427                if(tmpstr != NULL) tmpstr1 = cricfree(tmpstr, -1);
1428        }
1429        else if(((struct tithek*)listbox->select->handle)->flag == 93)
1430        {
1431                if(tmpstr != NULL) tmpstr1 = liveonlinetv(tmpstr, -1);
1432        }
1433        else if(((struct tithek*)listbox->select->handle)->flag == 94)
1434        {
1435                if(tmpstr != NULL) tmpstr1 = movie2k(tmpstr);
1436        }
1437
1438        free(tmpstr); tmpstr = NULL;
1439        free(tmpstr2); tmpstr2 = NULL;
1440
1441        if(ostrstr(title, "Internet Radio") != NULL)
1442                flag = 4;
1443
1444        if(ostrstr(tmpstr1, "&") != NULL)
1445        {
1446                printf("change streamurl from: %s\n", tmpstr1);
1447                tmpstr1 = string_replace_all("&amp;", "&", tmpstr1, 1);
1448                printf("change streamurl to: %s\n", tmpstr1);
1449        }
1450       
1451        if(tmpstr1 != NULL)
1452        {
1453                char* filename = ostrcat(title, "_", 0, 0);
1454                filename = ostrcat(filename, ((struct tithek*)listbox->select->handle)->title, 1, 0);
1455                filename = ostrcat(filename, ".mp4", 1, 0);
1456                filename = string_replace_all(" ", ".", filename, 1);
1457                filename = string_replace_all("-", "_", filename, 1);
1458                filename = string_replace_all("._.", "_", filename, 1);
1459                debug(99, "filename: %s", filename);
1460                       
1461                char* keyconf = NULL;
1462                char* skintitle = _("Choice Playback");
1463                struct menulist* mlist = NULL, *mbox = NULL;
1464
1465#ifndef MIPSEL
1466                addmenulist(&mlist, "Streaming Playback (default)", _("Streaming Playback (default)"), NULL, 0, 0);
1467#else
1468                // mipsel work, disable http direct streams without buffer, after 3mins no memory (memleak in player.h ?)
1469                if(ostrncmp("http://", tmpstr1, 7))
1470                        addmenulist(&mlist, "Streaming Playback (default)", _("Streaming Playback (default)"), NULL, 0, 0);
1471#endif
1472                if(!ostrncmp("http://", tmpstr1, 7))
1473                {
1474                        // wakeup hdd for downloading
1475                        wakeup_record_device();
1476                        if(flag == 4)
1477                        {
1478//#ifdef EPLAYER3
1479//                              addmenulist(&mlist, "Streaming Playback Caching (1MB)", _("Streaming Playback Caching (1MB)"), NULL, 0, 0);
1480//#else
1481//                              // mipsel work for radio
1482//                              addmenulist(&mlist, "Streaming Playback (default)", _("Streaming Playback (default)"), NULL, 0, 0);
1483//#endif
1484                        }       
1485                        else if(!ostrncmp("http://", tmpstr1, 7))
1486                        {
1487//#ifdef EPLAYER3
1488                                if(checkbox("UFS910") == 1 && !file_exist("/var/swapdir/swapfile"))
1489                                        addmenulist(&mlist, "Streaming Playback Caching (5MB)", _("Streaming Playback Caching (5MB)"), NULL, 0, 0);
1490                                else
1491                                {
1492                                        addmenulist(&mlist, "Streaming Playback Caching (10MB)", _("Streaming Playback Caching (10MB)"), NULL, 0, 0);
1493                                }
1494//#endif
1495                                if(file_exist(getconfig("rec_streampath", NULL)) && (file_exist("/mnt/swapextensions/etc/.codecpack") || file_exist("/var/swap/etc/.codecpack") || file_exist("/var/etc/.codecpack")))
1496                                {
1497/*
1498#ifndef EPLAYER3
1499                                        addmenulist(&mlist, "File Caching Playback (10MB / 120s)", _("File Caching Playback (10MB / 120s)"), NULL, 0, 0);
1500                                        addmenulist(&mlist, "File Caching Playback (20MB / 240s)", _("File Caching Playback (20MB / 240s)"), NULL, 0, 0);
1501                                        addmenulist(&mlist, "File Caching Playback (30MB / 360s)", _("File Caching Playback (30MB / 360s)"), NULL, 0, 0);
1502#endif
1503*/
1504                                        addmenulist(&mlist, "Download Full File", _("Download Full File"), NULL, 0, 0);
1505                                        addmenulist(&mlist, "Download Full File (background)", _("Download Full File (background)"), NULL, 0, 0);
1506                                }
1507                        }
1508                }
1509                mbox = menulistbox(mlist, NULL, skintitle, _("Choose your Streaming Playback Modus from the following list"), NULL, NULL, 1, 0);
1510                if(mbox != NULL) keyconf = mbox->name;
1511                debug(99, "tmpstr1: %s filename: %s flag: %d", tmpstr1, filename, flag);
1512                if(ostrcmp(keyconf, "Streaming Playback (default)") == 0)
1513                {
1514                        addconfigtmp("playerbuffersize", "0");
1515                        screenplay(tmpstr1, filename, 2, flag);
1516                        delconfigtmp("playerbuffersize");
1517                }
1518                else if(ostrcmp(keyconf, "Streaming Playback Caching (0.5MB)") == 0)
1519                {
1520                        addconfigtmp("playerbuffersize", "524288");
1521                        screenplay(tmpstr1, filename, 2, flag);
1522                        delconfigtmp("playerbuffersize");
1523                }
1524                else if(ostrcmp(keyconf, "Streaming Playback Caching (1MB)") == 0)
1525                {
1526                        addconfigtmp("playerbuffersize", "1048576");
1527                        screenplay(tmpstr1, filename, 2, flag);
1528                        delconfigtmp("playerbuffersize");
1529                }
1530                else if(ostrcmp(keyconf, "Streaming Playback Caching (2MB)") == 0)
1531                {
1532                        addconfigtmp("playerbuffersize", "2097152");
1533                        screenplay(tmpstr1, filename, 2, flag);
1534                        delconfigtmp("playerbuffersize");
1535                }
1536                else if(ostrcmp(keyconf, "Streaming Playback Caching (3MB)") == 0)
1537                {
1538                        addconfigtmp("playerbuffersize", "3145728");
1539                        screenplay(tmpstr1, filename, 2, flag);
1540                        delconfigtmp("playerbuffersize");
1541                }
1542                else if(ostrcmp(keyconf, "Streaming Playback Caching (4MB)") == 0)
1543                {
1544                        addconfigtmp("playerbuffersize", "4194304");
1545                        screenplay(tmpstr1, filename, 2, flag);
1546                        delconfigtmp("playerbuffersize");
1547                }
1548                else if(ostrcmp(keyconf, "Streaming Playback Caching (5MB)") == 0)
1549                {
1550                        addconfigtmp("playerbuffersize", "5242880");
1551                        screenplay(tmpstr1, filename, 2, flag);
1552                        delconfigtmp("playerbuffersize");
1553                }
1554                else if(ostrcmp(keyconf, "Streaming Playback Caching (7.5MB)") == 0)
1555                {
1556                        addconfigtmp("playerbuffersize", "7864320");
1557                        screenplay(tmpstr1, filename, 2, flag);
1558                        delconfigtmp("playerbuffersize");
1559                }
1560                else if(ostrcmp(keyconf, "Streaming Playback Caching (10MB)") == 0)
1561                {
1562                        addconfigtmp("playerbuffersize", "10485760");
1563                        screenplay(tmpstr1, filename, 2, flag);
1564                        delconfigtmp("playerbuffersize");
1565                }
1566                else if(ostrcmp(keyconf, "File Caching Playback (10MB / 120s)") == 0)
1567                {
1568                        cacheplay(tmpstr1, filename, 1);
1569                }
1570                else if(ostrcmp(keyconf, "File Caching Playback (20MB / 240s)") == 0)
1571                {
1572                        cacheplay(tmpstr1, filename, 2);
1573                }
1574                else if(ostrcmp(keyconf, "File Caching Playback (30MB / 360s)") == 0)
1575                {
1576                        cacheplay(tmpstr1, filename, 3);
1577                }
1578                else if(ostrcmp(keyconf, "Download Full File") == 0)
1579                {
1580                        char* search = textinput(_("Filename"), filename);
1581                        if(search != NULL)
1582                        {       
1583                                char* tmpstr2 = tithekdownload(tmpstr1, search, NULL, 0, 1);
1584//                                              drawscreen(grid, 0, 0);
1585                                free(tmpstr2); tmpstr2 = NULL;
1586                       
1587                                if(textbox(_("Message"), _("Start playback"), _("OK"), getrcconfigint("rcok", NULL), _("EXIT"), getrcconfigint("rcexit", NULL), NULL, 0, NULL, 0, 600, 200, 0, 0) == 1)
1588                                {
1589                                        tmpstr2 = ostrcat(getconfig("rec_streampath", NULL), "/", 0, 0);
1590                                        tmpstr2 = ostrcat(tmpstr2, search, 1, 0);
1591                                        screenplay(tmpstr2, filename, 2, flag);
1592                                        free(tmpstr2); tmpstr2 = NULL;
1593                                }
1594                        }
1595                        free(search), search = NULL;
1596                }
1597                else if(ostrcmp(keyconf, "Download Full File (background)") == 0)
1598                {
1599                        char* search = textinput(_("Filename"), filename);
1600                        if(search != NULL)
1601                                backgrounddl(tmpstr1, search);
1602                        free(search), search = NULL;
1603                }
1604                 
1605                free(filename), filename = NULL;
1606                freemenulist(mlist, 1); mlist = NULL;
1607        }
1608        else
1609                textbox(_("Message"), _("Can't get Streamurl !"), _("OK"), getrcconfigint("rcok", NULL), _("EXIT"), getrcconfigint("rcexit", NULL), NULL, 0, NULL, 0, 600, 200, 0, 0);
1610       
1611        free(tmpstr1); tmpstr1 = NULL;
1612}
1613
1614void screentithekplay(char* titheklink, char* title, int first)
1615{
1616        int savevol = 0;
1617        if(!file_exist("/mnt/swapextensions/player"))
1618                mkdir("/mnt/swapextensions/player", 0777); 
1619
1620        char* disclaimer = NULL;
1621        disclaimer = ostrcat(disclaimer, "/mnt/swapextensions/player/tithek_disclaimer_accepted", 1, 0);
1622                               
1623        if(!file_exist(disclaimer))
1624        {
1625                char* tmpstr = gethttp("atemio.dyndns.tv", "/mediathek/disclaimer.txt", 80, NULL, HTTPAUTH, 5000, NULL, 0);
1626                if(textbox(_("TitanNit Tithek disclaimer"), _(tmpstr), _("OK"), getrcconfigint("rcok", NULL), _("EXIT"), getrcconfigint("rcexit", NULL), NULL, 0, NULL, 0, 1100, 650, 0, 0) == 1)
1627                {
1628                        writesys(disclaimer, tmpstr, 0);                               
1629                        free(tmpstr), tmpstr = NULL;
1630                }
1631                else
1632                {
1633                        free(tmpstr), tmpstr = NULL;
1634                        free(disclaimer), disclaimer = NULL;
1635                        return;
1636                }
1637        }
1638        free(disclaimer), disclaimer = NULL;
1639
1640        int rcret = -1, oaktline = 1, oaktpage = -1, ogridcol = 0, pagecount = 0;
1641
1642        writesysint("/proc/sys/vm/drop_caches", 3, 0); 
1643
1644        if(first == 1)
1645        { 
1646                savevol = getvol();
1647
1648                mkdir("/tmp/tithek", 777);
1649                if(status.mcaktiv == 0)
1650                {
1651                        rcret = servicestop(status.aktservice, 1, 1);
1652                        if(rcret == 1) return;
1653                }
1654        }
1655
1656        struct skin* grid = getscreen("titheklist");
1657        struct skin* listbox = getscreennode(grid, "listbox");
1658        struct skin* countlabel = getscreennode(grid, "countlabel");
1659        struct skin* countpage = getscreennode(grid, "countpage");
1660        struct skin* b4 = getscreennode(grid, "b4");
1661        struct skin* b5 = getscreennode(grid, "b5");
1662        struct skin* load = getscreen("loading");
1663        struct skin* tmp = NULL;
1664        char* tithekpic = NULL;
1665
1666        b4->usesavebg = 1;
1667        b5->usesavebg = 1;
1668        drawscreen(grid, 2, 0);
1669
1670//      if(ostrcmp(title, _("Tithek - Mainmenu - Favoriten")) == 0)
1671        if(ostrstr(title, _("Tithek - Mainmenu - Favoriten")) != NULL)
1672        {
1673                changetext(b4, _("EDIT FAV"));
1674                b5->hidden = NO;
1675        }
1676        else
1677        {
1678                changetext(b4, _("ADD FAV"));
1679                b5->hidden = YES;
1680        }
1681
1682        drawscreen(load, 0, 0);
1683       
1684        if(titheklink == NULL) return;
1685       
1686        listbox->aktpage = -1;
1687        listbox->aktline = 1;
1688        listbox->gridcol = 0;
1689        listbox->select = NULL;
1690
1691        pagecount = createtithekplay(titheklink, grid, listbox, countlabel, first);
1692        if(pagecount == 0) return;
1693
1694        changetitle(grid, _(title));
1695        drawscreen(grid, 0, 0);
1696        addscreenrc(grid, listbox);
1697                               
1698        while(1)
1699        {
1700                changetitle(grid, _(title));
1701                changetext(countpage, NULL);
1702                if(listbox->select != NULL && listbox->select->handle != NULL)
1703                {
1704                        tmp = listbox->select;
1705                        while(tmp != NULL)
1706                        {
1707
1708                                if(tmp->pagecount != listbox->aktpage) break;
1709
1710                                char* tmpstr = ostrcat(_("Page"), NULL, 0, 0);
1711                                tmpstr = ostrcat(tmpstr, " ( ", 1, 0);
1712                                tmpstr = ostrcat(tmpstr, oitoa(tmp->pagecount), 1, 1);
1713                                tmpstr = ostrcat(tmpstr, " / ", 1, 0);
1714                                tmpstr = ostrcat(tmpstr, oitoa(pagecount), 1, 1);
1715                                tmpstr = ostrcat(tmpstr, " )", 1, 0);
1716                                changetext(countpage, tmpstr);
1717                                free(tmpstr); tmpstr = NULL;
1718
1719                                if(tmp->handle != NULL && getconfigint("tithek_view", NULL) != 6 && getconfigint("tithek_cover", NULL) != 6)
1720                                {
1721                                        tithekpic = tithekdownload(((struct tithek*)tmp->handle)->pic, ((struct tithek*)tmp->handle)->localname, "aXBrLUdaRmg6RkhaVkJHaG56ZnZFaEZERlRHenVpZjU2NzZ6aGpHVFVHQk5Iam0=", 1, 0);
1722
1723                                        /* not working with thread download
1724                                        off64_t checkpic = getfilesize(tithekpic);
1725                       
1726                                        if(checkpic < 1000)
1727                                        {
1728                                                free(tithekpic); tithekpic = NULL;
1729                                                tithekpic = ostrcat("/var/usr/local/share/titan/plugins/tithek/default.jpg", NULL, 0, 0);
1730                                        }
1731                                        */
1732                       
1733                                        changepic(tmp, tithekpic);
1734                                        free(tithekpic); tithekpic = NULL;
1735                                }
1736                                tmp = tmp->prev;
1737                        }
1738                        tmp = listbox->select;
1739                        if(tmp != NULL) tmp = tmp->next;
1740                        while(tmp != NULL)
1741                        {
1742                                if(tmp->pagecount != listbox->aktpage) break;
1743                                if(tmp->handle != NULL && getconfigint("tithek_view", NULL) != 6 && getconfigint("tithek_cover", NULL) != 6)
1744                                {
1745                                        tithekpic = tithekdownload(((struct tithek*)tmp->handle)->pic, ((struct tithek*)tmp->handle)->localname, "aXBrLUdaRmg6RkhaVkJHaG56ZnZFaEZERlRHenVpZjU2NzZ6aGpHVFVHQk5Iam0=", 1, 0);
1746
1747                                        /* not working with thread download
1748                                        off64_t checkpic = getfilesize(tithekpic);
1749
1750                                        if(checkpic < 1000)
1751                                        {
1752                                                free(tithekpic); tithekpic = NULL;
1753                                                tithekpic = ostrcat("/var/usr/local/share/titan/plugins/tithek/default.jpg", NULL, 0, 0);
1754                                        }
1755                                        */
1756
1757                                        changepic(tmp, tithekpic);
1758                                        free(tithekpic); tithekpic = NULL;
1759                                }
1760                                tmp = tmp->next;
1761                        }
1762                }
1763               
1764                int count = getfilecount(TITHEKPATH);
1765                if(count > 500)
1766                        delallfiles(TITHEKPATH, ".jpg");
1767
1768waitrcstart:
1769                drawscreen(grid, 0, 0);
1770
1771                rcret = waitrc(grid, 2000, 2);
1772
1773                if(rcret == RCTIMEOUT)
1774                {
1775                        if(tithekdownloadrun == 1)
1776                        {
1777                                tithekdownloadrun = 0;
1778                                drawscreen(grid, 0, 0);
1779                        }
1780                        goto waitrcstart;
1781                }
1782
1783                if(rcret == getrcconfigint("rcblue", NULL))
1784                {
1785                        tithekexit = 1;
1786                        break;
1787                }
1788
1789                if(rcret == getrcconfigint("rcexit", NULL)) break;
1790                if(rcret == getrcconfigint("rcmenu", NULL))
1791                {
1792                        screentithek_settings();
1793
1794                        pagecount = createtithekplay(titheklink, grid, listbox, countlabel, first);
1795                        if(pagecount == 0 || tithekexit == 1) break;
1796
1797                        listbox->aktpage = -1;
1798                        listbox->aktline = 1;
1799                        listbox->gridcol = 1;
1800                        addscreenrc(grid, listbox);
1801//                      drawscreen(grid, 0, 0);
1802                }
1803
1804//              if(ostrcmp(title, _("Tithek - Mainmenu - Favoriten")) == 0)
1805                if(ostrstr(title, _("Tithek - Mainmenu - Favoriten")) != NULL)
1806                {
1807//                      changetext(b4, _("EDIT FAV"));
1808                        b5->hidden = NO;
1809                }
1810                else
1811                {
1812//                      changetext(b4, _("ADD FAV"));
1813                        b5->hidden = YES;
1814                }
1815
1816                if(rcret == getrcconfigint("rcred", NULL))
1817                {
1818                        if(listbox->select != NULL && listbox->select->handle != NULL)
1819                        {
1820
1821                                char* tmpstr = ostrcat(((struct tithek*)listbox->select->handle)->title, NULL, 0, 0);
1822                                debug(99, "tmpstr: %s", tmpstr);
1823                                tmpstr = string_replace("-1 (de)", "", tmpstr, 1);
1824                                tmpstr = string_replace("-1 (en)", "", tmpstr, 1);
1825                                tmpstr = string_replace("-1 (\?\?)", "", tmpstr, 1);
1826                                tmpstr = string_replace("-2 (de)", "", tmpstr, 1);
1827                                tmpstr = string_replace("-2 (en)", "", tmpstr, 1);
1828                                tmpstr = string_replace("-2 (\?\?)", "", tmpstr, 1);
1829                                tmpstr = string_replace("-3 (de)", "", tmpstr, 1);
1830                                tmpstr = string_replace("-3 (en)", "", tmpstr, 1);
1831                                tmpstr = string_replace("-3 (\?\?)", "", tmpstr, 1);
1832                                tmpstr = string_replace(" (de)", "", tmpstr, 1);
1833                                tmpstr = string_replace(" (en)", "", tmpstr, 1);
1834                                tmpstr = string_replace(" (\?\?)", "", tmpstr, 1);
1835                                tmpstr = string_replace_all("_", " ", tmpstr, 1);
1836                                tmpstr = string_replace_all("-", " ", tmpstr, 1);
1837                                tmpstr = string_replace_all(".", " ", tmpstr, 1);                               
1838                                debug(99, "tmpstr: %s", tmpstr);
1839
1840                                int check = playrcred(tmpstr, NULL, 1, 0, 99);
1841                                if(check == 0 || check == 1000)
1842                                {
1843                                        char* search = textinputhist(_("Create sub folder"), " ", "searchhist");
1844                                        if(search != NULL)
1845                                        {
1846                                                strstrip(search);
1847                                                char* tmpstr = ostrcat(search, NULL, 0, 0);
1848                                                tmpstr = string_replace_all(" ", "_", tmpstr, 1);
1849                                                tmpstr = string_replace_all(".", "_", tmpstr, 1);
1850                                                tmpstr = string_replace_all("-", "_", tmpstr, 1);
1851                                                tmpstr = string_replace_all("._.", "_", tmpstr, 1);
1852                                                tmpstr = string_replace_all("__", "_", tmpstr, 1);
1853                                                string_tolower(tmpstr);
1854                                                strstrip(tmpstr);
1855                                                char* tmpstr1 = NULL;
1856                                                tmpstr1 = ostrcat(getconfig("tithek_fav", NULL), "_", 0, 0);
1857                                                tmpstr1 = ostrcat(tmpstr1, tmpstr, 1, 0);
1858                                                if(textbox(_("Message"), _("Add this sub folder as Favorite ?"), _("OK"), getrcconfigint("rcok", NULL), _("EXIT"), getrcconfigint("rcexit", NULL), NULL, 0, NULL, 0, 600, 200, 5, 0) == 1)
1859                                                        addfav(search, tmpstr1, "http://imageshack.us/md/up/grd/mediathek/menu/default.jpg", tmpstr, title, check);
1860                                                free(tmpstr), tmpstr = NULL;
1861                                                free(tmpstr1), tmpstr1 = NULL;
1862                                        }
1863                                        free(search), search = NULL;
1864
1865                                        pagecount = createtithekplay(titheklink, grid, listbox, countlabel, 0);
1866                                        if(pagecount == 0) return;
1867                                }
1868                                else if(check == 2)
1869                                {
1870                                        if(kinox_search(grid, listbox, countlabel, load, ((struct tithek*)listbox->select->handle)->link, "KinoX - Search", tmpstr, 0) == 0)
1871                                                if(screenlistbox(grid, listbox, countlabel, "KinoX - Search", titheklink, &pagecount, &tithekexit, &oaktpage, &oaktline, &ogridcol, 0, 0) == 0) break;
1872                                }
1873                                else if(check == 3)
1874                                {
1875                                        if(solarmovie_search(grid, listbox, countlabel, load, ((struct tithek*)listbox->select->handle)->link, "SolarMovies - Movie - Search", tmpstr, 0) == 0)
1876                                                if(screenlistbox(grid, listbox, countlabel, "SolarMovies - Movie - Search", titheklink, &pagecount, &tithekexit, &oaktpage, &oaktline, &ogridcol, 0, 0) == 0) break;
1877                                }
1878                                else if(check == 4)
1879                                {
1880                                        if(solarmovie_search(grid, listbox, countlabel, load, ((struct tithek*)listbox->select->handle)->link, "SolarMovies - Tv - Search", tmpstr, 1) == 0)
1881                                                if(screenlistbox(grid, listbox, countlabel, "SolarMovies - Tv - Search", titheklink, &pagecount, &tithekexit, &oaktpage, &oaktline, &ogridcol, 0, 0) == 0) break;
1882                                }
1883                                else if(check == 5)
1884                                {
1885                                        if(youtube_search(grid, listbox, countlabel, load, ((struct tithek*)listbox->select->handle)->link, "Youtube - Search", tmpstr) == 0)
1886                                                if(screenlistbox(grid, listbox, countlabel, "Youtube - Search", titheklink, &pagecount, &tithekexit, &oaktpage, &oaktline, &ogridcol, 0, 0) == 0) break;
1887                                }
1888                                else if(check == 6)
1889                                {
1890                                        if(myvideo_search(grid, listbox, countlabel, load, ((struct tithek*)listbox->select->handle)->link, "MyVideo - Search", tmpstr, 0) == 0)
1891                                                if(screenlistbox(grid, listbox, countlabel, "MyVideo - Search", titheklink, &pagecount, &tithekexit, &oaktpage, &oaktline, &ogridcol, 0, 0) == 0) break;
1892                                }
1893                                else if(check == 7)
1894                                {
1895                                        if(movie4k_search(grid, listbox, countlabel, load, ((struct tithek*)listbox->select->handle)->link, "KinoX - Search", tmpstr, 0) == 0)
1896                                                if(screenlistbox(grid, listbox, countlabel, "Movie4k - Search", titheklink, &pagecount, &tithekexit, &oaktpage, &oaktline, &ogridcol, 0, 0) == 0) break;
1897                                }
1898                                else if(check == 8)
1899                                {
1900                                        if(kinox_search_local(grid, listbox, countlabel, load, ((struct tithek*)listbox->select->handle)->link, "KinoX - Search (local)", tmpstr, 0) == 0)
1901                                                if(screenlistbox(grid, listbox, countlabel, "KinoX - Search (local)", titheklink, &pagecount, &tithekexit, &oaktpage, &oaktline, &ogridcol, 0, 0) == 0) break;
1902                                }
1903                                else if(check == 9)
1904                                {
1905                                        if(solarmovie_search_local(grid, listbox, countlabel, load, ((struct tithek*)listbox->select->handle)->link, "Solarmovies - Search (local)", tmpstr, 0) == 0)
1906                                                if(screenlistbox(grid, listbox, countlabel, "Solarmovies - Search (local)", titheklink, &pagecount, &tithekexit, &oaktpage, &oaktline, &ogridcol, 0, 0) == 0) break;
1907                                }
1908                                else if(check == 10)
1909                                {
1910                                        if(youtube_search_local(grid, listbox, countlabel, load, ((struct tithek*)listbox->select->handle)->link, "Youtube - Search (local)", tmpstr, 0) == 0)
1911                                                if(screenlistbox(grid, listbox, countlabel, "Youtube - Search (local)", titheklink, &pagecount, &tithekexit, &oaktpage, &oaktline, &ogridcol, 0, 0) == 0) break;
1912                                }
1913                                else if(check == 11)
1914                                {
1915                                        if(myvideo_search_local(grid, listbox, countlabel, load, ((struct tithek*)listbox->select->handle)->link, "MyVideo - Search (local)", tmpstr, 0) == 0)
1916                                                if(screenlistbox(grid, listbox, countlabel, "MyVideo - Search (local)", titheklink, &pagecount, &tithekexit, &oaktpage, &oaktline, &ogridcol, 0, 0) == 0) break;
1917                                }
1918                                else if(check == 12)
1919                                {
1920                                        if(movie4k_search_local(grid, listbox, countlabel, load, ((struct tithek*)listbox->select->handle)->link, "Movie4k - Search (local)", tmpstr, 0) == 0)
1921                                                if(screenlistbox(grid, listbox, countlabel, "Movie4k - Search (local)", titheklink, &pagecount, &tithekexit, &oaktpage, &oaktline, &ogridcol, 0, 0) == 0) break;
1922                                }
1923                                else if(check == 13)
1924                                {
1925                                        if(internetradio_search_local(grid, listbox, countlabel, load, ((struct tithek*)listbox->select->handle)->link, "Internetradio - Search (local)", tmpstr, 0) == 0)
1926                                                if(screenlistbox(grid, listbox, countlabel, "Internetradio - Search (local)", titheklink, &pagecount, &tithekexit, &oaktpage, &oaktline, &ogridcol, 0, 0) == 0) break;
1927                                }
1928                                else if(check == 14)
1929                                {
1930                                        if(internettv_search_local(grid, listbox, countlabel, load, ((struct tithek*)listbox->select->handle)->link, "Internettv - Search (local)", tmpstr, 0) == 0)
1931                                                if(screenlistbox(grid, listbox, countlabel, "Internettv - Search (local)", titheklink, &pagecount, &tithekexit, &oaktpage, &oaktline, &ogridcol, 0, 0) == 0) break;
1932                                }
1933                                else if(check == 15)
1934                                {
1935                                        if(ard_search_local(grid, listbox, countlabel, load, ((struct tithek*)listbox->select->handle)->link, "ARD - Search (local)", tmpstr, 0) == 0)
1936                                                if(screenlistbox(grid, listbox, countlabel, "ARD - Search (local)", titheklink, &pagecount, &tithekexit, &oaktpage, &oaktline, &ogridcol, 0, 0) == 0) break;
1937                                }
1938                                else if(check == 16)
1939                                {
1940                                        if(zdf_search_local(grid, listbox, countlabel, load, ((struct tithek*)listbox->select->handle)->link, "ZDF - Search (local)", tmpstr, 0) == 0)
1941                                                if(screenlistbox(grid, listbox, countlabel, "ZDF - Search (local)", titheklink, &pagecount, &tithekexit, &oaktpage, &oaktline, &ogridcol, 0, 0) == 0) break;
1942                                }
1943                                else if(check == 17)
1944                                {
1945                                        if(tectime_search_local(grid, listbox, countlabel, load, ((struct tithek*)listbox->select->handle)->link, "TecTime - Search (local)", tmpstr, 0) == 0)
1946                                                if(screenlistbox(grid, listbox, countlabel, "TecTime - Search (local)", titheklink, &pagecount, &tithekexit, &oaktpage, &oaktline, &ogridcol, 0, 0) == 0) break;
1947                                }
1948                                else if(check == 18)
1949                                {
1950                                        if(giga_search_local(grid, listbox, countlabel, load, ((struct tithek*)listbox->select->handle)->link, "Giga - Search (local)", tmpstr, 0) == 0)
1951                                                if(screenlistbox(grid, listbox, countlabel, "Giga - Search (local)", titheklink, &pagecount, &tithekexit, &oaktpage, &oaktline, &ogridcol, 0, 0) == 0) break;
1952                                }
1953                                else if(check == 19)
1954                                {
1955                                        if(beeg_search_local(grid, listbox, countlabel, load, ((struct tithek*)listbox->select->handle)->link, "Beeg - Search (local)", tmpstr, 0) == 0)
1956                                                if(screenlistbox(grid, listbox, countlabel, "Beeg - Search (local)", titheklink, &pagecount, &tithekexit, &oaktpage, &oaktline, &ogridcol, 0, 0) == 0) break;
1957                                }
1958                                else if(check == 20)
1959                                {
1960                                        if(nowtv_search_local(grid, listbox, countlabel, load, ((struct tithek*)listbox->select->handle)->link, "Rtl2Now - Search (local)", tmpstr, 0) == 0)
1961                                                if(screenlistbox(grid, listbox, countlabel, "NowTv - Search (local)", titheklink, &pagecount, &tithekexit, &oaktpage, &oaktline, &ogridcol, 0, 0) == 0) break;
1962                                }
1963                                else if(check == 21)
1964                                {
1965                                        if(all_search_local(grid, listbox, countlabel, load, ((struct tithek*)listbox->select->handle)->link, "Rtl-Now - Search (local)", tmpstr, 0) == 0)
1966                                                if(screenlistbox(grid, listbox, countlabel, "All - Search (local)", titheklink, &pagecount, &tithekexit, &oaktpage, &oaktline, &ogridcol, 0, 0) == 0) break;
1967                                }
1968                                else if(check == 24)
1969                                {
1970                                        if(xvideos_search_local(grid, listbox, countlabel, load, ((struct tithek*)listbox->select->handle)->link, "Xvideos - Search (local)", tmpstr, 0) == 0)
1971                                                if(screenlistbox(grid, listbox, countlabel, "Xvideos - Search (local)", titheklink, &pagecount, &tithekexit, &oaktpage, &oaktline, &ogridcol, 0, 0) == 0) break;
1972                                }
1973                                else if(check == 25)
1974                                {
1975                                        if(mlehd_search_local(grid, listbox, countlabel, load, ((struct tithek*)listbox->select->handle)->link, "Mle-HD - Search (local)", tmpstr, 0) == 0)
1976                                                if(screenlistbox(grid, listbox, countlabel, "Mle-HD - Search (local)", titheklink, &pagecount, &tithekexit, &oaktpage, &oaktline, &ogridcol, 0, 0) == 0) break;
1977                                }
1978                                else if(check == 26)
1979                                {
1980                                        if(netzkino_search_local(grid, listbox, countlabel, load, ((struct tithek*)listbox->select->handle)->link, "Netzkino - Search (local)", tmpstr, 0) == 0)
1981                                                if(screenlistbox(grid, listbox, countlabel, "Netzkino - Search (local)", titheklink, &pagecount, &tithekexit, &oaktpage, &oaktline, &ogridcol, 0, 0) == 0) break;
1982                                }
1983                                else if(check == 27)
1984                                {
1985                                        if(filmon_search_local(grid, listbox, countlabel, load, ((struct tithek*)listbox->select->handle)->link, "FilmOn - Search (local)", tmpstr, 0) == 0)
1986                                                if(screenlistbox(grid, listbox, countlabel, "FilmOn - Search (local)", titheklink, &pagecount, &tithekexit, &oaktpage, &oaktline, &ogridcol, 0, 0) == 0) break;
1987                                }
1988/*
1989why ?
1990                                else if((((struct tithek*)listbox->select->handle)->flag == 13))
1991                                {
1992                                        if(myvideo_search(grid, listbox, countlabel, load, ((struct tithek*)listbox->select->handle)->link, "MyVideo - Search", tmpstr, 0) == 0)
1993                                                if(screenlistbox(grid, listbox, countlabel, title, titheklink, &pagecount, &tithekexit, &oaktpage, &oaktline, &ogridcol, 0, 0) == 0) break;
1994                                }
1995*/
1996                                free(tmpstr), tmpstr = NULL;
1997                        }
1998                        else
1999                        {
2000                                int check = playrcred(NULL, NULL, 1, 0, 199);
2001                                if(check == 0 || check == 1000)
2002                                {
2003                                        char* search = textinputhist(_("Create sub folder"), " ", "searchhist");
2004                                        if(search != NULL)
2005                                        {
2006                                                strstrip(search);
2007                                                char* tmpstr = ostrcat(search, NULL, 0, 0);
2008                                                tmpstr = string_replace_all(" ", "_", tmpstr, 1);
2009                                                tmpstr = string_replace_all(".", "_", tmpstr, 1);
2010                                                tmpstr = string_replace_all("-", "_", tmpstr, 1);
2011                                                tmpstr = string_replace_all("._.", "_", tmpstr, 1);
2012                                                tmpstr = string_replace_all("__", "_", tmpstr, 1);
2013                                                string_tolower(tmpstr);
2014                                                strstrip(tmpstr);
2015                                                char* tmpstr1 = NULL;
2016                                                tmpstr1 = ostrcat(getconfig("tithek_fav", NULL), "_", 0, 0);
2017                                                tmpstr1 = ostrcat(tmpstr1, tmpstr, 1, 0);
2018                                                if(textbox(_("Message"), _("Add this sub folder as Favorite ?"), _("OK"), getrcconfigint("rcok", NULL), _("EXIT"), getrcconfigint("rcexit", NULL), NULL, 0, NULL, 0, 600, 200, 5, 0) == 1)
2019                                                        addfav(search, tmpstr1, "http://imageshack.us/md/up/grd/mediathek/menu/default.jpg", tmpstr, title, check);
2020                                                free(tmpstr), tmpstr = NULL;
2021                                                free(tmpstr1), tmpstr1 = NULL;
2022                                        }
2023                                        free(search), search = NULL;
2024       
2025                                        pagecount = createtithekplay(titheklink, grid, listbox, countlabel, 0);
2026                                        if(pagecount == 0) return;
2027                                }
2028                        }
2029                }
2030                else if(rcret == getrcconfigint("rcok", NULL))
2031                {
2032                        if(listbox->select != NULL && listbox->select->handle != NULL)
2033                        {
2034                                clearscreen(grid);
2035
2036                                if(((struct tithek*)listbox->select->handle)->flag == 2 || ((struct tithek*)listbox->select->handle)->flag == 3 || ((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 == 12 || ((struct tithek*)listbox->select->handle)->flag == 14 || ((struct tithek*)listbox->select->handle)->flag == 15 || ((struct tithek*)listbox->select->handle)->flag == 20 || ((struct tithek*)listbox->select->handle)->flag == 38 || ((struct tithek*)listbox->select->handle)->flag == 42 || ((struct tithek*)listbox->select->handle)->flag == 45 || ((struct tithek*)listbox->select->handle)->flag == 46 || ((struct tithek*)listbox->select->handle)->flag == 64 || ((struct tithek*)listbox->select->handle)->flag == 50 || ((struct tithek*)listbox->select->handle)->flag == 41 || ((struct tithek*)listbox->select->handle)->flag == 43 || ((struct tithek*)listbox->select->handle)->flag == 75 || ((struct tithek*)listbox->select->handle)->flag == 91 || ((struct tithek*)listbox->select->handle)->flag == 92 || ((struct tithek*)listbox->select->handle)->flag == 93 || ((struct tithek*)listbox->select->handle)->flag == 94)
2037                                {
2038                                        submenu(listbox, load, title);
2039//                                      drawscreen(grid, 0, 0);
2040                                }
2041                                else if((((struct tithek*)listbox->select->handle)->flag == 9) || (((struct tithek*)listbox->select->handle)->flag == 10) || (((struct tithek*)listbox->select->handle)->flag == 11))
2042                                {
2043                                        if(youtube_search(grid, listbox, countlabel, load, ((struct tithek*)listbox->select->handle)->link, ((struct tithek*)listbox->select->handle)->title, NULL) == 0)
2044                                                if(screenlistbox(grid, listbox, countlabel, title, titheklink, &pagecount, &tithekexit, &oaktpage, &oaktline, &ogridcol, 0, 0) == 0) break;
2045                                }
2046                                else if(((struct tithek*)listbox->select->handle)->flag == 13)
2047                                {
2048                                        if(myvideo_search(grid, listbox, countlabel, load, ((struct tithek*)listbox->select->handle)->link, ((struct tithek*)listbox->select->handle)->title, NULL, 0) == 0)
2049                                                if(screenlistbox(grid, listbox, countlabel, title, titheklink, &pagecount, &tithekexit, &oaktpage, &oaktline, &ogridcol, 0, 0) == 0) break;
2050                                }
2051                                else if(((struct tithek*)listbox->select->handle)->flag == 24)
2052                                {
2053                                        if(internetradio_search_local(grid, listbox, countlabel, load, ((struct tithek*)listbox->select->handle)->link, ((struct tithek*)listbox->select->handle)->title, NULL, 0) == 0)
2054                                                if(screenlistbox(grid, listbox, countlabel, title, titheklink, &pagecount, &tithekexit, &oaktpage, &oaktline, &ogridcol, 0, 0) == 0) break;
2055                                }
2056                                else if(((struct tithek*)listbox->select->handle)->flag == 25)
2057                                {
2058                                        if(kinox_search_local(grid, listbox, countlabel, load, ((struct tithek*)listbox->select->handle)->link, ((struct tithek*)listbox->select->handle)->title, NULL, 0) == 0)
2059                                                if(screenlistbox(grid, listbox, countlabel, title, titheklink, &pagecount, &tithekexit, &oaktpage, &oaktline, &ogridcol, 0, 0) == 0) break;
2060                                }
2061                                else if(((struct tithek*)listbox->select->handle)->flag == 26)
2062                                {
2063                                        if(movie4k_search_local(grid, listbox, countlabel, load, ((struct tithek*)listbox->select->handle)->link, ((struct tithek*)listbox->select->handle)->title, NULL, 0) == 0)
2064                                                if(screenlistbox(grid, listbox, countlabel, title, titheklink, &pagecount, &tithekexit, &oaktpage, &oaktline, &ogridcol, 0, 0) == 0) break;
2065                                }
2066                                else if(((struct tithek*)listbox->select->handle)->flag == 27)
2067                                {
2068                                        if(solarmovie_search_local(grid, listbox, countlabel, load, ((struct tithek*)listbox->select->handle)->link, ((struct tithek*)listbox->select->handle)->title, NULL, 0) == 0)
2069                                                if(screenlistbox(grid, listbox, countlabel, title, titheklink, &pagecount, &tithekexit, &oaktpage, &oaktline, &ogridcol, 0, 0) == 0) break;
2070                                }
2071                                else if(((struct tithek*)listbox->select->handle)->flag == 47)
2072                                {
2073                                        if(internettv_search_local(grid, listbox, countlabel, load, ((struct tithek*)listbox->select->handle)->link, ((struct tithek*)listbox->select->handle)->title, NULL, 0) == 0)
2074                                                if(screenlistbox(grid, listbox, countlabel, title, titheklink, &pagecount, &tithekexit, &oaktpage, &oaktline, &ogridcol, 0, 0) == 0) break;
2075                                }
2076                                else if(((struct tithek*)listbox->select->handle)->flag == 48)
2077                                {
2078                                        if(youtube_search_local(grid, listbox, countlabel, load, ((struct tithek*)listbox->select->handle)->link, ((struct tithek*)listbox->select->handle)->title, NULL, 0) == 0)
2079                                                if(screenlistbox(grid, listbox, countlabel, title, titheklink, &pagecount, &tithekexit, &oaktpage, &oaktline, &ogridcol, 0, 0) == 0) break;
2080                                }
2081                                else if(((struct tithek*)listbox->select->handle)->flag == 49)
2082                                {
2083                                        if(myvideo_search_local(grid, listbox, countlabel, load, ((struct tithek*)listbox->select->handle)->link, ((struct tithek*)listbox->select->handle)->title, NULL, 0) == 0)
2084                                                if(screenlistbox(grid, listbox, countlabel, title, titheklink, &pagecount, &tithekexit, &oaktpage, &oaktline, &ogridcol, 0, 0) == 0) break;
2085                                }
2086                                else if(((struct tithek*)listbox->select->handle)->flag == 51)
2087                                {
2088                                        if(ard_search_local(grid, listbox, countlabel, load, ((struct tithek*)listbox->select->handle)->link, ((struct tithek*)listbox->select->handle)->title, NULL, 0) == 0)
2089                                                if(screenlistbox(grid, listbox, countlabel, title, titheklink, &pagecount, &tithekexit, &oaktpage, &oaktline, &ogridcol, 0, 0) == 0) break;
2090                                }
2091                                else if(((struct tithek*)listbox->select->handle)->flag == 52)
2092                                {
2093                                        if(zdf_search_local(grid, listbox, countlabel, load, ((struct tithek*)listbox->select->handle)->link, ((struct tithek*)listbox->select->handle)->title, NULL, 0) == 0)
2094                                                if(screenlistbox(grid, listbox, countlabel, title, titheklink, &pagecount, &tithekexit, &oaktpage, &oaktline, &ogridcol, 0, 0) == 0) break;
2095                                }
2096                                else if(((struct tithek*)listbox->select->handle)->flag == 53)
2097                                {
2098                                        if(tectime_search_local(grid, listbox, countlabel, load, ((struct tithek*)listbox->select->handle)->link, ((struct tithek*)listbox->select->handle)->title, NULL, 0) == 0)
2099                                                if(screenlistbox(grid, listbox, countlabel, title, titheklink, &pagecount, &tithekexit, &oaktpage, &oaktline, &ogridcol, 0, 0) == 0) break;
2100                                }
2101                                else if(((struct tithek*)listbox->select->handle)->flag == 54)
2102                                {
2103                                        if(giga_search_local(grid, listbox, countlabel, load, ((struct tithek*)listbox->select->handle)->link, ((struct tithek*)listbox->select->handle)->title, NULL, 0) == 0)
2104                                                if(screenlistbox(grid, listbox, countlabel, title, titheklink, &pagecount, &tithekexit, &oaktpage, &oaktline, &ogridcol, 0, 0) == 0) break;
2105                                }
2106                                else if(((struct tithek*)listbox->select->handle)->flag == 55)
2107                                {
2108                                        if(beeg_search_local(grid, listbox, countlabel, load, ((struct tithek*)listbox->select->handle)->link, ((struct tithek*)listbox->select->handle)->title, NULL, 0) == 0)
2109                                                if(screenlistbox(grid, listbox, countlabel, title, titheklink, &pagecount, &tithekexit, &oaktpage, &oaktline, &ogridcol, 0, 0) == 0) break;
2110                                }
2111                                else if(((struct tithek*)listbox->select->handle)->flag == 100)
2112                                {
2113                                        if(all_search_local(grid, listbox, countlabel, load, ((struct tithek*)listbox->select->handle)->link, ((struct tithek*)listbox->select->handle)->title, NULL, 0) == 0)
2114                                                if(screenlistbox(grid, listbox, countlabel, title, titheklink, &pagecount, &tithekexit, &oaktpage, &oaktline, &ogridcol, 0, 0) == 0) break;
2115                                }
2116                                else if(((struct tithek*)listbox->select->handle)->flag == 60)
2117                                {
2118                                        if(xvideos_search_local(grid, listbox, countlabel, load, ((struct tithek*)listbox->select->handle)->link, ((struct tithek*)listbox->select->handle)->title, NULL, 0) == 0)
2119                                                if(screenlistbox(grid, listbox, countlabel, title, titheklink, &pagecount, &tithekexit, &oaktpage, &oaktline, &ogridcol, 0, 0) == 0) break;
2120                                }
2121                                else if(((struct tithek*)listbox->select->handle)->flag == 61)
2122                                {
2123                                        if(mlehd_search_local(grid, listbox, countlabel, load, ((struct tithek*)listbox->select->handle)->link, ((struct tithek*)listbox->select->handle)->title, NULL, 0) == 0)
2124                                                if(screenlistbox(grid, listbox, countlabel, title, titheklink, &pagecount, &tithekexit, &oaktpage, &oaktline, &ogridcol, 0, 0) == 0) break;
2125                                }
2126                                else if(((struct tithek*)listbox->select->handle)->flag == 62)
2127                                {
2128                                        if(netzkino_search_local(grid, listbox, countlabel, load, ((struct tithek*)listbox->select->handle)->link, ((struct tithek*)listbox->select->handle)->title, NULL, 0) == 0)
2129                                                if(screenlistbox(grid, listbox, countlabel, title, titheklink, &pagecount, &tithekexit, &oaktpage, &oaktline, &ogridcol, 0, 0) == 0) break;
2130                                }
2131                                else if(((struct tithek*)listbox->select->handle)->flag == 63)
2132                                {
2133                                        if(filmon_search_local(grid, listbox, countlabel, load, ((struct tithek*)listbox->select->handle)->link, ((struct tithek*)listbox->select->handle)->title, NULL, 0) == 0)
2134                                                if(screenlistbox(grid, listbox, countlabel, title, titheklink, &pagecount, &tithekexit, &oaktpage, &oaktline, &ogridcol, 0, 0) == 0) break;
2135                                }
2136                                else if(((struct tithek*)listbox->select->handle)->flag == 65)
2137                                {
2138                                        if(tvtoast_search_local(grid, listbox, countlabel, load, ((struct tithek*)listbox->select->handle)->link, ((struct tithek*)listbox->select->handle)->title, NULL, 0) == 0)
2139                                                if(screenlistbox(grid, listbox, countlabel, title, titheklink, &pagecount, &tithekexit, &oaktpage, &oaktline, &ogridcol, 0, 0) == 0) break;
2140                                }
2141                                else if(((struct tithek*)listbox->select->handle)->flag == 44)
2142                                {
2143                                        if(myvideo_search(grid, listbox, countlabel, load, ((struct tithek*)listbox->select->handle)->link, ((struct tithek*)listbox->select->handle)->title, NULL, 1) == 0)
2144                                                if(screenlistbox(grid, listbox, countlabel, title, titheklink, &pagecount, &tithekexit, &oaktpage, &oaktline, &ogridcol, 0, 0) == 0) break;
2145                                }
2146                                else if((((struct tithek*)listbox->select->handle)->flag == 21))
2147                                {
2148                                        if(kinox_search(grid, listbox, countlabel, load, ((struct tithek*)listbox->select->handle)->link, ((struct tithek*)listbox->select->handle)->title, NULL, 0) == 0)
2149                                                if(screenlistbox(grid, listbox, countlabel, title, titheklink, &pagecount, &tithekexit, &oaktpage, &oaktline, &ogridcol, 0, 0) == 0) break;
2150                                }
2151                                else if((((struct tithek*)listbox->select->handle)->flag == 33))
2152                                {
2153                                        if(movie4k_search(grid, listbox, countlabel, load, ((struct tithek*)listbox->select->handle)->link, ((struct tithek*)listbox->select->handle)->title, NULL, 0) == 0)
2154                                                if(screenlistbox(grid, listbox, countlabel, title, titheklink, &pagecount, &tithekexit, &oaktpage, &oaktline, &ogridcol, 0, 0) == 0) break;
2155                                }
2156                                else if(((struct tithek*)listbox->select->handle)->flag == 29)
2157                                {
2158                                        if(solarmovie_search(grid, listbox, countlabel, load, ((struct tithek*)listbox->select->handle)->link, ((struct tithek*)listbox->select->handle)->title, NULL, 0) == 0)
2159                                                if(screenlistbox(grid, listbox, countlabel, title, titheklink, &pagecount, &tithekexit, &oaktpage, &oaktline, &ogridcol, 0, 0) == 0) break;
2160                                }
2161                                else if(((struct tithek*)listbox->select->handle)->flag == 30)
2162                                {
2163                                        if(solarmovie_search(grid, listbox, countlabel, load, ((struct tithek*)listbox->select->handle)->link, ((struct tithek*)listbox->select->handle)->title, NULL, 1) == 0)
2164                                                if(screenlistbox(grid, listbox, countlabel, title, titheklink, &pagecount, &tithekexit, &oaktpage, &oaktline, &ogridcol, 0, 0) == 0) break;
2165                                }
2166                                else if((((struct tithek*)listbox->select->handle)->flag == 31))
2167                                {
2168                                        if(kinox_search_cast(grid, listbox, countlabel, load, ((struct tithek*)listbox->select->handle)->link, ((struct tithek*)listbox->select->handle)->title, NULL) == 0)
2169                                                if(screenlistbox(grid, listbox, countlabel, title, titheklink, &pagecount, &tithekexit, &oaktpage, &oaktline, &ogridcol, 0, 0) == 0) break;
2170                                }
2171                                else if((((struct tithek*)listbox->select->handle)->flag == 32))
2172                                {
2173                                        if(kinox_search(grid, listbox, countlabel, load, ((struct tithek*)listbox->select->handle)->link, ((struct tithek*)listbox->select->handle)->title, NULL, 1) == 0)
2174                                                if(screenlistbox(grid, listbox, countlabel, title, titheklink, &pagecount, &tithekexit, &oaktpage, &oaktline, &ogridcol, 0, 0) == 0) break;
2175                                }
2176                                else if((((struct tithek*)listbox->select->handle)->flag == 33))
2177                                {
2178                                        if(movie4k_search(grid, listbox, countlabel, load, ((struct tithek*)listbox->select->handle)->link, ((struct tithek*)listbox->select->handle)->title, NULL, 1) == 0)
2179                                                if(screenlistbox(grid, listbox, countlabel, title, titheklink, &pagecount, &tithekexit, &oaktpage, &oaktline, &ogridcol, 0, 3) == 0) break;
2180                                }
2181                                else if((((struct tithek*)listbox->select->handle)->flag == 34) || (((struct tithek*)listbox->select->handle)->flag == 35))
2182                                {
2183                                        if(movie4k_hoster(grid, listbox, countlabel, load, ((struct tithek*)listbox->select->handle)->link, ((struct tithek*)listbox->select->handle)->title) == 0)
2184                                                if(screenlistbox(grid, listbox, countlabel, title, titheklink, &pagecount, &tithekexit, &oaktpage, &oaktline, &ogridcol, 0, 0) == 0) break;
2185                                }
2186                                else if((((struct tithek*)listbox->select->handle)->flag == 22))
2187                                {
2188                                        if(kinox_hoster(grid, listbox, countlabel, load, ((struct tithek*)listbox->select->handle)->link, ((struct tithek*)listbox->select->handle)->title) == 0)
2189                                                if(screenlistbox(grid, listbox, countlabel, title, titheklink, &pagecount, &tithekexit, &oaktpage, &oaktline, &ogridcol, 0, 3) == 0) break;
2190                                }
2191                                else if((((struct tithek*)listbox->select->handle)->flag == 28))
2192                                {
2193                                        if(solarmovie_hoster(grid, listbox, countlabel, load, ((struct tithek*)listbox->select->handle)->link, ((struct tithek*)listbox->select->handle)->title) == 0)
2194                                                if(screenlistbox(grid, listbox, countlabel, title, titheklink, &pagecount, &tithekexit, &oaktpage, &oaktline, &ogridcol, 0, 3) == 0) break;
2195                                }
2196                                else if((((struct tithek*)listbox->select->handle)->flag == 23))
2197                                {
2198                                        if(kinox_hoster_series(grid, listbox, countlabel, load, ((struct tithek*)listbox->select->handle)->link, ((struct tithek*)listbox->select->handle)->title) == 0)
2199                                                if(screenlistbox(grid, listbox, countlabel, title, titheklink, &pagecount, &tithekexit, &oaktpage, &oaktline, &ogridcol, 0, 0) == 0) break;
2200                                }
2201                                else if((((struct tithek*)listbox->select->handle)->flag == 36) || (((struct tithek*)listbox->select->handle)->flag == 37))
2202                                {
2203                                        if(movie4k_series(grid, listbox, countlabel, load, ((struct tithek*)listbox->select->handle)->link, ((struct tithek*)listbox->select->handle)->title) == 0)
2204                                                if(screenlistbox(grid, listbox, countlabel, title, titheklink, &pagecount, &tithekexit, &oaktpage, &oaktline, &ogridcol, 0, 0) == 0) break;
2205                                }
2206                                else if((((struct tithek*)listbox->select->handle)->flag == 39))
2207                                {
2208                                        if(movie4k_series_listed(grid, listbox, countlabel, load, ((struct tithek*)listbox->select->handle)->link, ((struct tithek*)listbox->select->handle)->title) == 0)
2209                                                if(screenlistbox(grid, listbox, countlabel, title, titheklink, &pagecount, &tithekexit, &oaktpage, &oaktline, &ogridcol, 0, 0) == 0) break;
2210                                }
2211                                else if((((struct tithek*)listbox->select->handle)->flag == 40))
2212                                {
2213                                        if(movie4k_hoster_series(grid, listbox, countlabel, load, ((struct tithek*)listbox->select->handle)->link, ((struct tithek*)listbox->select->handle)->title) == 0)
2214                                                if(screenlistbox(grid, listbox, countlabel, title, titheklink, &pagecount, &tithekexit, &oaktpage, &oaktline, &ogridcol, 0, 0) == 0) break;
2215                                }
2216                                else if(((struct tithek*)listbox->select->handle)->flag == 76)
2217                                {
2218                                        if(amazon_search(grid, listbox, countlabel, load, ((struct tithek*)listbox->select->handle)->link, ((struct tithek*)listbox->select->handle)->title, NULL, 0) == 0)
2219                                                if(screenlistbox(grid, listbox, countlabel, title, titheklink, &pagecount, &tithekexit, &oaktpage, &oaktline, &ogridcol, 0, 0) == 0) break;
2220                                }
2221                                else if(((struct tithek*)listbox->select->handle)->flag == 77)
2222                                {
2223                                        if(amazon_search(grid, listbox, countlabel, load, ((struct tithek*)listbox->select->handle)->link, ((struct tithek*)listbox->select->handle)->title, NULL, 1) == 0)
2224                                                if(screenlistbox(grid, listbox, countlabel, title, titheklink, &pagecount, &tithekexit, &oaktpage, &oaktline, &ogridcol, 0, 0) == 0) break;
2225                                }
2226                                else if(((struct tithek*)listbox->select->handle)->flag == 78)
2227                                {
2228                                        if(amazon_search(grid, listbox, countlabel, load, ((struct tithek*)listbox->select->handle)->link, ((struct tithek*)listbox->select->handle)->title, NULL, 2) == 0)
2229                                                if(screenlistbox(grid, listbox, countlabel, title, titheklink, &pagecount, &tithekexit, &oaktpage, &oaktline, &ogridcol, 0, 0) == 0) break;
2230                                }
2231                                else if(((struct tithek*)listbox->select->handle)->flag == 79)
2232                                {
2233                                        if(amazon_search(grid, listbox, countlabel, load, ((struct tithek*)listbox->select->handle)->link, ((struct tithek*)listbox->select->handle)->title, NULL, 3) == 0)
2234                                                if(screenlistbox(grid, listbox, countlabel, title, titheklink, &pagecount, &tithekexit, &oaktpage, &oaktline, &ogridcol, 0, 0) == 0) break;
2235                                }
2236                                else if(((struct tithek*)listbox->select->handle)->flag == 80)
2237                                {
2238                                        if(amazon_search(grid, listbox, countlabel, load, ((struct tithek*)listbox->select->handle)->link, ((struct tithek*)listbox->select->handle)->title, NULL, 4) == 0)
2239                                                if(screenlistbox(grid, listbox, countlabel, title, titheklink, &pagecount, &tithekexit, &oaktpage, &oaktline, &ogridcol, 0, 0) == 0) break;
2240                                }
2241                                else if(((struct tithek*)listbox->select->handle)->flag == 81)
2242                                {
2243                                        if(amazon_search(grid, listbox, countlabel, load, ((struct tithek*)listbox->select->handle)->link, ((struct tithek*)listbox->select->handle)->title, NULL, 5) == 0)
2244                                                if(screenlistbox(grid, listbox, countlabel, title, titheklink, &pagecount, &tithekexit, &oaktpage, &oaktline, &ogridcol, 0, 0) == 0) break;
2245                                }
2246                                else if(((struct tithek*)listbox->select->handle)->flag == 82)
2247                                {
2248                                        if(amazon_search(grid, listbox, countlabel, load, ((struct tithek*)listbox->select->handle)->link, ((struct tithek*)listbox->select->handle)->title, NULL, 6) == 0)
2249                                                if(screenlistbox(grid, listbox, countlabel, title, titheklink, &pagecount, &tithekexit, &oaktpage, &oaktline, &ogridcol, 0, 0) == 0) break;
2250                                }
2251                                else if(((struct tithek*)listbox->select->handle)->flag == 83)
2252                                {
2253                                        if(amazon_search(grid, listbox, countlabel, load, ((struct tithek*)listbox->select->handle)->link, ((struct tithek*)listbox->select->handle)->title, NULL, 7) == 0)
2254                                                if(screenlistbox(grid, listbox, countlabel, title, titheklink, &pagecount, &tithekexit, &oaktpage, &oaktline, &ogridcol, 0, 0) == 0) break;
2255                                }
2256                                else if(((struct tithek*)listbox->select->handle)->flag == 84)
2257                                {
2258                                        if(amazon_search(grid, listbox, countlabel, load, ((struct tithek*)listbox->select->handle)->link, ((struct tithek*)listbox->select->handle)->title, NULL, 8) == 0)
2259                                                if(screenlistbox(grid, listbox, countlabel, title, titheklink, &pagecount, &tithekexit, &oaktpage, &oaktline, &ogridcol, 0, 0) == 0) break;
2260                                }
2261                                else if(((struct tithek*)listbox->select->handle)->flag == 85)
2262                                {
2263                                        if(amazon_search(grid, listbox, countlabel, load, ((struct tithek*)listbox->select->handle)->link, ((struct tithek*)listbox->select->handle)->title, NULL, 9) == 0)
2264                                                if(screenlistbox(grid, listbox, countlabel, title, titheklink, &pagecount, &tithekexit, &oaktpage, &oaktline, &ogridcol, 0, 0) == 0) break;
2265                                }
2266                                else if(((struct tithek*)listbox->select->handle)->flag == 86)
2267                                {
2268                                        if(amazon_search(grid, listbox, countlabel, load, ((struct tithek*)listbox->select->handle)->link, ((struct tithek*)listbox->select->handle)->title, NULL, 10) == 0)
2269                                                if(screenlistbox(grid, listbox, countlabel, title, titheklink, &pagecount, &tithekexit, &oaktpage, &oaktline, &ogridcol, 0, 0) == 0) break;
2270                                }
2271                                else if(((struct tithek*)listbox->select->handle)->flag == 87)
2272                                {
2273                                        if(amazon_search(grid, listbox, countlabel, load, ((struct tithek*)listbox->select->handle)->link, ((struct tithek*)listbox->select->handle)->title, NULL, 11) == 0)
2274                                                if(screenlistbox(grid, listbox, countlabel, title, titheklink, &pagecount, &tithekexit, &oaktpage, &oaktline, &ogridcol, 0, 0) == 0) break;
2275                                }
2276                                else if(((struct tithek*)listbox->select->handle)->flag == 88)
2277                                {
2278                                        if(amazon_search(grid, listbox, countlabel, load, ((struct tithek*)listbox->select->handle)->link, ((struct tithek*)listbox->select->handle)->title, NULL, 12) == 0)
2279                                                if(screenlistbox(grid, listbox, countlabel, title, titheklink, &pagecount, &tithekexit, &oaktpage, &oaktline, &ogridcol, 0, 0) == 0) break;
2280                                }
2281                                else if(((struct tithek*)listbox->select->handle)->flag == 89)
2282                                {
2283                                        if(amazon_search(grid, listbox, countlabel, load, ((struct tithek*)listbox->select->handle)->link, ((struct tithek*)listbox->select->handle)->title, NULL, 13) == 0)
2284                                                if(screenlistbox(grid, listbox, countlabel, title, titheklink, &pagecount, &tithekexit, &oaktpage, &oaktline, &ogridcol, 0, 0) == 0) break;
2285                                }
2286                                else if(((struct tithek*)listbox->select->handle)->flag == 90)
2287                                {
2288                                        if(amazon_search(grid, listbox, countlabel, load, ((struct tithek*)listbox->select->handle)->link, ((struct tithek*)listbox->select->handle)->title, NULL, 14) == 0)
2289                                                if(screenlistbox(grid, listbox, countlabel, title, titheklink, &pagecount, &tithekexit, &oaktpage, &oaktline, &ogridcol, 0, 0) == 0) break;
2290                                }
2291                                else if((((struct tithek*)listbox->select->handle)->flag == 95) || (((struct tithek*)listbox->select->handle)->flag == 96))
2292                                {
2293                                        if(movie2k_hoster(grid, listbox, countlabel, load, ((struct tithek*)listbox->select->handle)->link, ((struct tithek*)listbox->select->handle)->title) == 0)
2294                                                if(screenlistbox(grid, listbox, countlabel, title, titheklink, &pagecount, &tithekexit, &oaktpage, &oaktline, &ogridcol, 0, 0) == 0) break;
2295                                }
2296                                else if(((struct tithek*)listbox->select->handle)->flag == 97)
2297                                {
2298                                        if(movie2k_search_local(grid, listbox, countlabel, load, ((struct tithek*)listbox->select->handle)->link, ((struct tithek*)listbox->select->handle)->title, NULL, 0) == 0)
2299                                                if(screenlistbox(grid, listbox, countlabel, title, titheklink, &pagecount, &tithekexit, &oaktpage, &oaktline, &ogridcol, 0, 0) == 0) break;
2300                                }
2301                                else if((((struct tithek*)listbox->select->handle)->flag == 66))
2302                                {
2303                                        textbox(_("Message"), _("The hoster is not yet supported !"), _("OK"), getrcconfigint("rcok", NULL), _("EXIT"), getrcconfigint("rcexit", NULL), NULL, 0, NULL, 0, 600, 200, 5, 0);
2304                                        continue;
2305                                }       
2306                                else if((((struct tithek*)listbox->select->handle)->flag == 3))
2307                                {
2308                                        int pincheck = 0;
2309                                        if(((struct tithek*)listbox->select->handle)->flag == 1000)
2310                                                pincheck = screenpincheck(0, NULL);
2311                                        if(pincheck == 0)
2312                                                if(screenlistbox(grid, listbox, countlabel, title, titheklink, &pagecount, &tithekexit, &oaktpage, &oaktline, &ogridcol, 3, 0) == 0) break;
2313                                }
2314                                else
2315                                {
2316                                        int pincheck = 0;
2317                                        if(((struct tithek*)listbox->select->handle)->flag == 1000)
2318                                                pincheck = screenpincheck(0, NULL);
2319                                        if(pincheck == 0)
2320                                                if(screenlistbox(grid, listbox, countlabel, title, titheklink, &pagecount, &tithekexit, &oaktpage, &oaktline, &ogridcol, 0, 3) == 0) break;
2321                                }
2322// new osd musst disable this
2323                                drawscreen(grid, 0, 0);
2324                        }                       
2325                }
2326//              else if(rcret == getrcconfigint("rcyellow", NULL) && ostrcmp(title, _("Tithek - Mainmenu - Favoriten")) == 0)
2327                else if(rcret == getrcconfigint("rcyellow", NULL) && ostrstr(title, _("Tithek - Mainmenu - Favoriten")) != NULL)
2328                {
2329                        if(listbox->select != NULL && listbox->select->handle != NULL)
2330                        {
2331                                if(textbox(_("Message"), _("Remove this Favorite ?"), _("OK"), getrcconfigint("rcok", NULL), _("EXIT"), getrcconfigint("rcexit", NULL), NULL, 0, NULL, 0, 800, 200, 5, 0) == 1)
2332                                {
2333                                        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);             
2334                                        pagecount = createtithekplay(titheklink, grid, listbox, countlabel, 0);
2335                                        if(pagecount == 0) return;
2336                                               
2337//                                      drawscreen(grid, 0, 0);
2338                                }
2339                        }
2340                }
2341//              else if(rcret == getrcconfigint("rcgreen", NULL) && ostrcmp(title, _("Tithek - Mainmenu - Favoriten")) != 0)
2342//              else if(rcret == getrcconfigint("rcgreen", NULL) && (ostrcmp(title, _("Tithek - Mainmenu - Favoriten")) == 0 || !ostrncmp("/", ((struct tithek*)listbox->select->handle)->link, 1)))
2343                else if(rcret == getrcconfigint("rcgreen", NULL) && ostrstr(title, _("Tithek - Mainmenu - Favoriten")) == NULL)
2344                {
2345                        if(listbox->select != NULL && listbox->select->handle != NULL)
2346                        {
2347                                if(textbox(_("Message"), _("Add this link as Favorite ?"), _("OK"), getrcconfigint("rcok", NULL), _("EXIT"), getrcconfigint("rcexit", NULL), NULL, 0, NULL, 0, 800, 200, 5, 0) == 1)
2348                                {
2349                                        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);         
2350                                }
2351                        }
2352                }
2353//              else if(rcret == getrcconfigint("rcgreen", NULL) && ostrcmp(title, _("Tithek - Mainmenu - Favoriten")) == 0)
2354//              else if(rcret == getrcconfigint("rcgreen", NULL) && (ostrcmp(title, _("Tithek - Mainmenu - Favoriten")) == 0 || !ostrncmp("/", ((struct tithek*)listbox->select->handle)->link, 1)))
2355                else if(rcret == getrcconfigint("rcgreen", NULL) && ostrstr(title, _("Tithek - Mainmenu - Favoriten")) != NULL)
2356                {
2357                        if(listbox->select != NULL && listbox->select->handle != NULL)
2358                        {
2359                                if(textbox(_("Message"), _("Edit this Favorite ?"), _("OK"), getrcconfigint("rcok", NULL), _("EXIT"), getrcconfigint("rcexit", NULL), NULL, 0, NULL, 0, 800, 200, 5, 0) == 1)
2360                                {
2361                                        editfav(((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);               
2362                                        pagecount = createtithekplay(titheklink, grid, listbox, countlabel, 0);
2363                                        if(pagecount == 0) return;
2364                                               
2365//                                      drawscreen(grid, 0, 0);
2366                                }
2367                        }
2368                }
2369
2370//              if(ostrcmp(title, _("Tithek - Mainmenu - Favoriten")) == 0)
2371                if(ostrstr(title, _("Tithek - Mainmenu - Favoriten")) != NULL)
2372                {
2373                        changetext(b4, _("EDIT FAV"));
2374                        b5->hidden = NO;
2375                }
2376                else
2377                {
2378                        changetext(b4, _("ADD FAV"));
2379                        b5->hidden = YES;
2380                }
2381               
2382// new osd musst disable this
2383                drawscreen(grid, 0, 0);
2384               
2385        }
2386
2387//      amazon_deinit();
2388
2389        delmarkedscreennodes(grid, 1);
2390        delownerrc(grid);
2391        clearscreen(grid);
2392
2393        if(first == 1)
2394        {
2395                setvol(savevol);
2396
2397                freetithek();
2398                delallfiles("/tmp/tithek", NULL);
2399                if(status.mcaktiv == 0)
2400                        servicecheckret(servicestart(status.lastservice->channel, NULL, NULL, 0), 0);
2401        }
2402}
2403
2404#endif
Note: See TracBrowser for help on using the repository browser.