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

Last change on this file since 40846 was 40846, checked in by obi, 3 years ago

next

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