source: titan/plugins/tithek/tithek_global.h @ 45041

Last change on this file since 45041 was 45041, checked in by obi, 10 months ago

update tithek add useproxy add delservice to settings

File size: 51.5 KB
Line 
1#ifndef TITHEK_GLOBAL_H
2#define TITHEK_GLOBAL
3
4#include <curl/curl.h>
5
6char* hoster(char* url)
7{
8        debug(99, "url: %s", url);
9        char* streamurl = NULL, *tmplink = NULL, *tmpstr = NULL;
10        struct skin* load = getscreen("loading");
11
12        if(!ostrncmp("//", url, 2))
13                tmplink = ostrcat("http:", url, 0, 0);
14        else
15                tmplink = ostrcat(url, NULL, 0, 0);
16       
17        tmpstr = ostrcat(tmplink, NULL, 0, 0);
18        string_tolower(tmplink);
19
20        if(!file_exist("/tmp/localhoster"))
21                localparser_init("http://atemio.dyndns.tv/mediathek/mainmenu.list", "mainmenu.local.list", 1);
22
23        drawscreen(load, 0, 0);
24
25        char* cmd = NULL;
26        cmd = ostrcat("/tmp/localhoster/hoster.sh get \"", tmpstr, 0, 0);
27        cmd = ostrcat(cmd, "\"", 1, 0);
28        streamurl = command(cmd);
29        streamurl = string_newline(streamurl);
30        debug(99, "Streamurl1: %s", streamurl);
31
32        free(cmd), cmd = NULL;
33        int skip = 0;
34
35        if(streamurl == NULL)
36        {
37                if(ostrstr(tmplink, "streamcloud") != NULL)
38                {
39                        streamurl = streamcloud(tmpstr);
40                        skip = 1;
41                }
42/*
43                if(ostrstr(tmplink, "sockshare") != NULL)
44                        streamurl = putlocker(url);
45                else if(ostrstr(tmplink, "putlocker") != NULL)
46                        streamurl = firedrive(url);
47                else if(ostrstr(tmplink, "filenuke") != NULL)
48                        streamurl = filenuke(url);
49                else if(ostrstr(tmplink, "streamcloud") != NULL)
50                        streamurl = streamcloud(url);
51                else if(ostrstr(tmplink, "vidstream") != NULL)
52                        streamurl = vidstream(url);
53                else if(ostrstr(tmplink, "flashx_disable") != NULL)
54                        streamurl = flashx(url);
55                else if(ostrstr(tmplink, "xvidstage") != NULL)
56                        streamurl = xvidstage(url);
57                else if(ostrstr(tmplink, "nowvideo") != NULL)
58                        streamurl = nowvideo(url);
59                else if(ostrstr(tmplink, "movshare") != NULL || ostrstr(tmplink, "wholecloud") != NULL)
60                        streamurl = movshare(url);
61                else if(ostrstr(tmplink, "movreel") != NULL)
62                        streamurl = movreel(url);
63                else if(ostrstr(tmplink, "novamov") != NULL || ostrstr(tmplink, "auroravid") != NULL)
64                        streamurl = novamov(url);
65                else if(ostrstr(tmplink, "divxstage") != NULL || ostrstr(tmplink, "cloudtime") != NULL)
66                        streamurl = divxstage(url);
67                else if(ostrstr(tmplink, "primeshare") != NULL)
68                        streamurl = primeshare(url);
69                else if(ostrstr(tmplink, "faststream") != NULL || ostrstr(tmplink, "fastvideo") != NULL)
70                        streamurl = faststream(url);
71                else if(ostrstr(tmplink, "played") != NULL)
72                        streamurl = played(url);
73                else if(ostrstr(tmplink, "videoweed") != NULL)
74                        streamurl = videoweed(url);
75                else if(ostrstr(tmplink, "firedrive") != NULL)
76                        streamurl = firedrive(url);
77                else if(ostrstr(tmplink, "shared") != NULL)
78                        streamurl = shared(url);
79                else if(ostrstr(tmplink, "thefile") != NULL)
80                        streamurl = thefile(url);
81                else if(ostrstr(tmplink, "youtu_disable") != NULL)
82                        streamurl = youtube(url);
83                else if(ostrstr(tmplink, "myvideo") != NULL)
84                        streamurl = myvideo(url);
85                else if(ostrstr(tmplink, "promptfile") != NULL)
86                        streamurl = promptfile(url);
87                else if(ostrstr(tmplink, "letwatch") != NULL || ostrstr(tmplink, "realvid") != NULL)
88                        streamurl = letwatch(url);
89                else if(ostrstr(tmplink, "vidbull") != NULL)
90                        streamurl = vidbull(url);
91                else if(ostrstr(tmplink, "vodlocker") != NULL)
92                        streamurl = vodlocker(url);
93                else if(ostrstr(tmplink, "vidto") != NULL)
94                        streamurl = vidto(url);
95                else if(ostrstr(tmplink, "amazon") != NULL)
96                        streamurl = amazon(url);
97                else if(ostrstr(tmplink, "thevideo") != NULL)
98                        streamurl = thevideo(url);
99                else if(ostrstr(tmplink, "mightyupload") != NULL)
100                        streamurl = mightyupload(url);
101                else if(ostrstr(tmplink, "cloudzilla") != NULL)
102                        streamurl = cloudzilla(url);
103                else if(ostrstr(tmplink, "vivo") != NULL)
104                        streamurl = vivo(url);
105                else if(ostrstr(tmplink, "streamlive") != NULL)
106                        streamurl = streamlive(url, -1);
107                else if(ostrstr(tmplink, "cricfree") != NULL)
108                        streamurl = cricfree(url, 0);
109                else if(ostrstr(tmplink, "zerocast") != NULL)
110                        streamurl = zerocast(url, 0);
111                else if(ostrstr(tmplink, "p2pcast") != NULL)
112                        streamurl = p2pcast(url);
113                else if(ostrstr(tmplink, "vidzi") != NULL)
114                        streamurl = vidzi(url);
115                else if(ostrstr(tmplink, "vid.ag") != NULL)
116                        streamurl = vidag(url);
117*/
118                debug(99, "Streamurl2: %s", streamurl);
119        }
120
121        if(streamurl == NULL && skip == 0)
122        {
123                if(!file_exist("/tmp/localhoster"))
124                        localparser_init("http://atemio.dyndns.tv/mediathek/mainmenu.list", "mainmenu.local.list", 1);
125
126                drawscreen(load, 0, 0);
127
128                cmd = ostrcat("/tmp/localhoster/hoster.sh youtube_dl \"", tmpstr, 0, 0);
129                cmd = ostrcat(cmd, "\"", 1, 0);
130                streamurl = command(cmd);
131                streamurl = string_newline(streamurl);
132                debug(99, "Streamurl3: %s", streamurl);
133       
134                free(cmd), cmd = NULL;
135
136                clearscreen(load);
137
138////////////
139                if(streamurl == NULL)
140                {
141                        if(ostrstr(tmplink, "sockshare") != NULL)
142                                streamurl = putlocker(tmpstr);
143                        else if(ostrstr(tmplink, "putlocker") != NULL)
144                                streamurl = firedrive(tmpstr);
145                        else if(ostrstr(tmplink, "filenuke") != NULL)
146                                streamurl = filenuke(tmpstr);
147                        else if(ostrstr(tmplink, "streamcloud") != NULL)
148                                streamurl = streamcloud(tmpstr);
149                        else if(ostrstr(tmplink, "vidstream") != NULL)
150                                streamurl = vidstream(tmpstr);
151                        else if(ostrstr(tmplink, "flashx_disable") != NULL)
152                                streamurl = flashx(tmpstr);
153                        else if(ostrstr(tmplink, "xvidstage") != NULL)
154                                streamurl = xvidstage(tmpstr);
155                        else if(ostrstr(tmplink, "nowvideo") != NULL)
156                                streamurl = nowvideo(tmpstr);
157                        else if(ostrstr(tmplink, "movshare") != NULL || ostrstr(tmplink, "wholecloud") != NULL)
158                                streamurl = movshare(tmpstr);
159                        else if(ostrstr(tmplink, "movreel") != NULL)
160                                streamurl = movreel(tmpstr);
161                        else if(ostrstr(tmplink, "novamov") != NULL || ostrstr(tmplink, "auroravid") != NULL)
162                                streamurl = novamov(tmpstr);
163                        else if(ostrstr(tmplink, "divxstage") != NULL || ostrstr(tmplink, "cloudtime") != NULL)
164                                streamurl = divxstage(tmpstr);
165                        else if(ostrstr(tmplink, "primeshare") != NULL)
166                                streamurl = primeshare(tmpstr);
167                        else if(ostrstr(tmplink, "faststream") != NULL || ostrstr(tmplink, "fastvideo") != NULL)
168                                streamurl = faststream(tmpstr);
169                        else if(ostrstr(tmplink, "played") != NULL)
170                                streamurl = played(tmpstr);
171                        else if(ostrstr(tmplink, "videoweed") != NULL)
172                                streamurl = videoweed(tmpstr);
173                        else if(ostrstr(tmplink, "firedrive") != NULL)
174                                streamurl = firedrive(tmpstr);
175                        else if(ostrstr(tmplink, "shared") != NULL)
176                                streamurl = shared(tmpstr);
177                        else if(ostrstr(tmplink, "thefile") != NULL)
178                                streamurl = thefile(tmpstr);
179/*
180                        else if(ostrstr(tmplink, "youtu_disable") != NULL)
181                                streamurl = youtube(tmpstr);
182*/
183/*
184                        else if(ostrstr(tmplink, "myvideo") != NULL)
185                                streamurl = myvideo(tmpstr);
186*/
187                        else if(ostrstr(tmplink, "promptfile") != NULL)
188                                streamurl = promptfile(tmpstr);
189                        else if(ostrstr(tmplink, "letwatch") != NULL || ostrstr(tmplink, "realvid") != NULL)
190                                streamurl = letwatch(tmpstr);
191                        else if(ostrstr(tmplink, "vidbull") != NULL)
192                                streamurl = vidbull(tmpstr);
193                        else if(ostrstr(tmplink, "vodlocker") != NULL)
194                                streamurl = vodlocker(tmpstr);
195                        else if(ostrstr(tmplink, "vidto") != NULL)
196                                streamurl = vidto(tmpstr);
197/*
198                        else if(ostrstr(tmplink, "amazon") != NULL)
199                                streamurl = amazon(tmpstr);
200*/
201/*
202                        else if(ostrstr(tmplink, "thevideo") != NULL)
203                                streamurl = thevideo(tmpstr);
204*/
205                        else if(ostrstr(tmplink, "mightyupload") != NULL)
206                                streamurl = mightyupload(tmpstr);
207                        else if(ostrstr(tmplink, "cloudzilla") != NULL)
208                                streamurl = cloudzilla(tmpstr);
209                        else if(ostrstr(tmplink, "vivo") != NULL)
210                                streamurl = vivo(tmpstr);
211                        else if(ostrstr(tmplink, "streamlive") != NULL)
212                                streamurl = streamlive(tmpstr, -1);
213                        else if(ostrstr(tmplink, "cricfree") != NULL)
214                                streamurl = cricfree(tmpstr, 0);
215                        else if(ostrstr(tmplink, "zerocast") != NULL)
216                                streamurl = zerocast(tmpstr, 0);
217                        else if(ostrstr(tmplink, "p2pcast") != NULL)
218                                streamurl = p2pcast(tmpstr);
219                        else if(ostrstr(tmplink, "vidzi") != NULL)
220                                streamurl = vidzi(tmpstr);
221                        else if(ostrstr(tmplink, "vid.ag") != NULL)
222                                streamurl = vidag(tmpstr);
223                        debug(99, "Streamurl4: %s", streamurl);
224                }
225////////////
226
227                if(streamurl == NULL)
228                        textbox(_("Message"), _("The hoster is not yet supported !"), _("OK"), getrcconfigint("rcok", NULL), _("EXIT"), getrcconfigint("rcexit", NULL), NULL, 0, NULL, 0, 600, 200, 5, 0);
229
230        }
231
232        debug(99, "Streamurl1: %s", streamurl);
233
234        streamurl = string_replace_all("amp;", "", streamurl, 1);
235        debug(99, "Streamurl4: %s", streamurl);
236
237        free(tmplink), tmplink = NULL;
238/*
239        if(ostrncmp("http", streamurl, 4) && ostrncmp("rtmp", streamurl, 4) && ostrncmp("mms", streamurl, 3) && ostrncmp("rtsp", streamurl, 4))
240        {
241                printf("Streamurl3: not http*|rtmp*|mms*|rtsp* Streamurl: %s\n", streamurl);
242                free(streamurl),streamurl = NULL;
243        }
244*/
245        return streamurl;
246}
247
248#include <stdio.h>
249#include <curl/curl.h>
250
251/* This callback is, currently, a simple wrapper around fwrite(). You
252   could get it to write to memory, or do anything else you'd like
253   with the output. For more info, see
254   http://curl.haxx.se/libcurl/c/CURLOPT_WRITEFUNCTION.html
255 */
256
257struct MemoryStruct {
258  char *memory;
259  size_t size; 
260};
261
262static size_t
263WriteMemoryCallback(void *contents, size_t size, size_t nmemb, void *userp)
264{
265  size_t realsize = size * nmemb;
266  struct MemoryStruct *mem = (struct MemoryStruct *)userp;
267 
268  mem->memory = realloc(mem->memory, mem->size + realsize + 1);
269  if(mem->memory == NULL) {
270        /* out of memory! */
271        printf("not enough memory (realloc returned NULL)\n");
272        return 0;
273  }
274 
275  memcpy(&(mem->memory[mem->size]), contents, realsize);
276  mem->size += realsize;
277  mem->memory[mem->size] = 0;
278 
279  return realsize;
280}
281
282static size_t writeCallback(void *contents, size_t size, size_t nitems, FILE *file) {
283  return fwrite(contents, size, nitems, file);
284}
285// flag = 0 (without header in output)
286// flag = 1 (with header in output)
287char* gethttps(char* url, char* localfile, char* data, char* user, char* pass, char* referer, int flag)
288{
289        debug(99, "url: %s", url);
290        printf("url: %s\n", url);
291
292        int debuglevel = getconfigint("debuglevel", NULL);
293
294        char* tmpstr = NULL;
295    FILE *fp;
296
297        CURL *curl_handle;
298        CURLcode res;
299       
300        struct MemoryStruct chunk;
301       
302        chunk.memory = malloc(1);  /* will be grown as needed by the realloc above */
303        chunk.size = 0;    /* no data at this point */
304       
305        curl_global_init(CURL_GLOBAL_ALL);
306
307        /* init the curl session */
308        curl_handle = curl_easy_init();
309        if(curl_handle)
310        {
311                if(localfile != NULL)
312                    fp = fopen(localfile,"wb");
313               
314                /* specify URL to get */
315                curl_easy_setopt(curl_handle, CURLOPT_URL, url);
316
317                if(user != NULL && pass != NULL)
318                {
319                        curl_easy_setopt(curl_handle, CURLOPT_USERNAME, HTTPUSER);
320                        curl_easy_setopt(curl_handle, CURLOPT_PASSWORD, HTTPPASS);
321                        curl_easy_setopt(curl_handle, CURLOPT_HTTPAUTH, CURLAUTH_ANY);
322                }
323                if(data == NULL)
324                        curl_easy_setopt(curl_handle, CURLOPT_HTTPGET, 1L);
325                else
326                {
327                        curl_easy_setopt(curl_handle, CURLOPT_POST, 1);
328                        curl_easy_setopt(curl_handle, CURLOPT_POSTFIELDS, data);
329
330                        /* example.com is redirected, so we tell libcurl to send POST on 301, 302 and
331                        303 HTTP response codes */
332                        curl_easy_setopt(curl_handle, CURLOPT_POSTREDIR, CURL_REDIR_POST_ALL);
333                }
334                if(flag == 1)
335                        curl_easy_setopt(curl_handle, CURLOPT_HEADER, 1L);
336                curl_easy_setopt(curl_handle, CURLOPT_CONNECTTIMEOUT, 5);
337                curl_easy_setopt(curl_handle, CURLOPT_TIMEOUT, 3);
338//              curl_easy_setopt(curl_handle, CURLOPT_RETURNTRANSFER, 1);
339
340                if(localfile == NULL)
341                {
342                        /* send all data to this function  */
343                        curl_easy_setopt(curl_handle, CURLOPT_WRITEFUNCTION, WriteMemoryCallback);
344                }
345                else
346                {
347                        /* When data arrives, curl will call writeCallback. */
348                        curl_easy_setopt(curl_handle, CURLOPT_WRITEFUNCTION, writeCallback);
349//                      curl_easy_setopt(curl_handle, CURLOPT_WRITEFUNCTION, NULL);             
350                }
351
352
353
354                if(localfile == NULL)
355                {
356                        /* we pass our 'chunk' struct to the callback function */
357                        curl_easy_setopt(curl_handle, CURLOPT_WRITEDATA, (void *)&chunk);
358                }
359                else
360                {
361                        /* The last argument to writeCallback will be our file: */
362                        curl_easy_setopt(curl_handle, CURLOPT_WRITEDATA, (void *)fp);
363                }
364
365                /* some servers don't like requests that are made without a user-agent field, so we provide one */
366//              curl_easy_setopt(curl_handle, CURLOPT_USERAGENT, "libcurl-agent/1.0");
367                curl_easy_setopt(curl_handle, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Maxthon/4.4.7.3000 Chrome/30.0.1599.101 Safari/537.36");
368
369                // This is occassionally required to stop CURL from verifying the peers certificate.
370                // CURLOPT_SSL_VERIFYHOST may also need to be TRUE or FALSE if
371                // CURLOPT_SSL_VERIFYPEER is disabled (it defaults to 2 - check the existence of a
372                // common name and also verify that it matches the hostname provided)
373#ifdef MIPSEL
374                curl_easy_setopt(curl_handle, CURLOPT_SSL_VERIFYPEER, 1L);
375#else
376                curl_easy_setopt(curl_handle, CURLOPT_SSL_VERIFYPEER, 0L);
377#endif
378
379                curl_easy_setopt(curl_handle, CURLOPT_SSL_VERIFYHOST, 0L);
380                if(debuglevel == 99)
381                        curl_easy_setopt(curl_handle, CURLOPT_VERBOSE, 1);
382                curl_easy_setopt(curl_handle, CURLOPT_COOKIEFILE, "/mnt/network/cookies");
383                curl_easy_setopt(curl_handle, CURLOPT_COOKIEJAR, "/mnt/network/cookies");
384                /* enable redirect following */
385                curl_easy_setopt(curl_handle, CURLOPT_FOLLOWLOCATION, 1L);
386                /* allow three redirects */
387                curl_easy_setopt(curl_handle, CURLOPT_MAXREDIRS, 3L);
388
389
390                /* enable all supported built-in compressions */
391                curl_easy_setopt(curl_handle, CURLOPT_ACCEPT_ENCODING, "");
392 
393                if(referer == NULL)
394                        curl_easy_setopt(curl_handle, CURLOPT_AUTOREFERER, 1L);
395                else
396                        curl_easy_setopt(curl_handle, CURLOPT_REFERER, referer);
397
398                if(getconfig("tithek_proxy", NULL) != NULL && getconfigint("tithek_useproxy", NULL) == 1)
399                        curl_easy_setopt(curl_handle, CURLOPT_PROXY, getconfig("tithek_proxy", NULL));
400
401                /* get it! */
402                res = curl_easy_perform(curl_handle);
403
404                /* check for errors */
405                if(res != CURLE_OK)
406                {
407                        err("failed: %s", curl_easy_strerror(res));
408                        printf("curl error\n");
409                }
410                else
411                {
412                        /*
413                         * Now, our chunk.memory points to a memory block that is chunk.size
414                         * bytes big and contains the remote file.
415                         *
416                         * Do something nice with it!
417                         */
418                        printf("%lu bytes retrieved\n", (long)chunk.size);
419                }
420               
421                /* cleanup curl stuff */
422                curl_easy_cleanup(curl_handle);
423                if(localfile != NULL)
424                        fclose(fp);
425        }
426
427        if(localfile == NULL)
428                tmpstr = ostrcat(chunk.memory, NULL, 0, 0);
429
430        free(chunk.memory);
431        /* we're done with libcurl, so clean it up */
432
433        curl_global_cleanup();
434
435        if(localfile != NULL)
436                free(tmpstr), tmpstr = NULL;
437
438        return tmpstr;
439}
440
441char* string_decode3(char* input)
442{
443        if(input == NULL) return input;
444
445        input = string_replace_all("&#196;", "Ä", input, 1);
446        input = string_replace_all("&#228;", "ä", input, 1);
447        input = string_replace_all("&#201;", "É", input, 1);
448        input = string_replace_all("&#233;", "é", input, 1);
449        input = string_replace_all("&#214;", "Ö", input, 1);
450        input = string_replace_all("&#246;", "ö", input, 1);
451        input = string_replace_all("&#220;", "Ü", input, 1);
452        input = string_replace_all("&#252;", "ü", input, 1);
453        input = string_replace_all("&#223;", "ß", input, 1);
454        input = string_replace_all("&#38;", "&", input, 1);
455
456        input = string_replace_all("&Auml;", "Ä", input, 1);
457        input = string_replace_all("&auml;", "ä", input, 1);
458        input = string_replace_all("&Eacute;", "É", input, 1);
459        input = string_replace_all("&eacute;", "é", input, 1);
460        input = string_replace_all("&Ouml;", "Ö", input, 1);
461        input = string_replace_all("&ouml;", "ö", input, 1);
462        input = string_replace_all("&Uuml;", "Ü", input, 1);
463        input = string_replace_all("&uuml;", "ü", input, 1);
464        input = string_replace_all("&szlig;", "ß", input, 1);
465        input = string_replace_all("&amp;", "&", input, 1);
466
467        return input;
468}
469
470char* getfilekey(char* w, char* i, char* s, char* e)
471{
472        char* ret = NULL;
473
474        if(w == NULL || i == NULL || s == NULL || e == NULL)
475                return NULL;
476
477        int a = 0, b = 0, c = 0;
478        int a1 = 0, b1 = 0;
479
480        int lw = strlen(w);
481        int li = strlen(i);
482        int ls = strlen(s);
483       
484        if(lw < 5 || li < 5 || ls < 5)
485                return NULL;
486
487        char ca[lw + li + ls - 14];
488        char cb[16];
489
490        ca[lw + li + ls - 15] = '\0';
491        cb[15] = '\0';
492       
493        while(1)
494        {
495                if(a < 5)
496                {
497                        cb[b1] = w[a];
498                        b1++;
499                }
500                else if(a < lw)
501                {
502                        ca[a1] = w[a];
503                        a1++;
504                }
505                a++;
506               
507                if(b < 5)
508                {
509                        cb[b1] = i[b];
510                        b1++;
511                }
512                else if(b < li)
513                {
514                        ca[a1] = i[b];
515                        a1++;
516                }
517                b++;
518               
519                if(c < 5)
520                {
521                        cb[b1] = s[c];
522                        b1++;
523                }
524                else if(c < ls)
525                {
526                        ca[a1] = s[c];
527                        a1++;
528                }
529                c++;
530               
531                if(lw + li + ls == a1 + b1)
532                        break;
533        }
534
535        b = 0;
536        int d = 0;
537        char cc[a1 / 2 + 1];
538        char casub[3] = {'\0'};
539        cc[a1 / 2] = '\0';
540       
541        for(a = 0; a < a1; a += 2)
542        {
543                int c = -1;
544               
545                if(cb[b] % 2) c = 1;
546
547                casub[0] = ca[a];
548                casub[1] = ca[a + 1];
549
550                cc[d] = strtol(casub, '\0', 36) - c;
551                b++; d++;
552                if(b >= b1) b = 0;
553        }
554
555        char* r1 = NULL, *r2 = NULL, *r3 = NULL, *r4 = NULL;
556        char* pos = ostrstr(cc, ");}('");
557        if(pos != NULL)
558        {
559                r1 = string_resub(");}('", "'", pos, 0);
560                pos = ostrstr(pos + 5, ",'");
561                if(pos != NULL)
562                {
563                        r2 = string_resub(",'", "'", pos, 0);
564                        pos = ostrstr(pos + 2, ",'");
565                        if(pos != NULL)
566                        {
567                                r3 = string_resub(",'", "'", pos, 0);
568                                pos = ostrstr(pos + 2, ",'");
569                                if(pos != NULL)
570                                {
571                                        r4 = string_resub(",'", "'", pos, 0);
572                                        ret = getfilekey(r1, r2, r3, r4);
573                                }
574                        }
575                }
576        }
577        else
578        {
579                ret = string_resub("ll=\"", "\"", cc, 0);
580                if(ret == NULL)
581                        ret = string_resub("filekey=\"", "\"", cc, 0); 
582        }
583
584  free(r1); r1 = NULL;
585        free(r2); r2 = NULL;
586        free(r3); r3 = NULL;
587        free(r4); r4 = NULL;
588                                       
589        return ret;
590}
591
592int screenlistbox(struct skin* grid, struct skin* listbox,struct skin* countlabel, char* title, char* titheklink, int* pagecount, int* tithekexit, int* oaktpage, int* oaktline, int* ogridcol, int flag, int cflag)
593{
594        char* tmpstr = NULL, *tmpstr1 = NULL, *tmpstr2 = NULL;
595
596        *oaktpage = listbox->aktpage;
597        *oaktline = listbox->aktline;
598        *ogridcol = listbox->gridcol;
599        tmpstr = ostrcat(((struct tithek*)listbox->select->handle)->link, NULL, 0, 0);
600
601        if(title != NULL)
602                tmpstr1 = ostrcat(title, " - ", 0, 0);
603        else
604                tmpstr1 = ostrcat(((struct tithek*)listbox->select->handle)->menutitle, " - ", 0, 0);   
605       
606        tmpstr2 = ostrcat(tmpstr1, ((struct tithek*)listbox->select->handle)->title, 1, 0);
607        screentithekplay(tmpstr, tmpstr2, flag);
608        free(tmpstr); tmpstr = NULL;
609        free(tmpstr2); tmpstr2 = NULL;
610
611        *pagecount = createtithekplay(titheklink, grid, listbox, countlabel, tmpstr1, cflag);
612//      if(pagecount == 0 || tithekexit == 1) break;
613        if(*pagecount == 0 || *tithekexit == 1) return 0;
614       
615        listbox->aktpage = *oaktpage;
616        listbox->aktline = *oaktline;
617        listbox->gridcol = *ogridcol;
618        addscreenrc(grid, listbox);
619
620        return 1;
621}
622
623//char* crea(char* title, struct skin* listbox)
624char* createfilename1(char* title, char* title2)
625{
626        char* filename = NULL;
627        char* tmpstr2 = NULL;
628
629        filename = ostrcat(title, "_", 0, 0);
630
631        tmpstr2 = ostrcat(_("Tithek - Mainmenu - Favoriten"), " - ", 0, 0);
632        filename = string_replace_all(tmpstr2, "", filename, 1);
633        free(tmpstr2); tmpstr2 = NULL;
634
635        tmpstr2 = ostrcat(_("Tithek - Mainmenu"), " - ", 0, 0);
636        filename = string_replace_all(tmpstr2, "", filename, 1);
637        free(tmpstr2); tmpstr2 = NULL;
638
639        filename = string_replace_all("Tips und Tricks - ", "", filename, 1);
640        filename = string_replace_all("Internet TV - ", "", filename, 1);
641        filename = string_replace_all("Internet Radio - ", "", filename, 1);
642        filename = string_replace_all("ARD - ", "", filename, 1);
643        filename = string_replace_all("ZDF - ", "", filename, 1);
644        filename = string_replace_all("FilmOn - ", "", filename, 1);
645        filename = string_replace_all("MyVideo - ", "", filename, 1);
646        filename = string_replace_all("Netzkino - ", "", filename, 1);
647        filename = string_replace_all("KinoX - ", "", filename, 1);
648        filename = string_replace_all("Movie4k - ", "", filename, 1);
649        filename = string_replace_all("Movie2k - ", "", filename, 1);
650
651        filename = string_replace_all("Beeg ", "", filename, 1);
652        filename = string_replace_all("Burning Series ", "", filename, 1);
653        filename = string_replace_all("CricFree ", "", filename, 1);
654        filename = string_replace_all("Giga ", "", filename, 1);
655        filename = string_replace_all("KKiste ", "", filename, 1);
656        filename = string_replace_all("NBA-On-Demand ", "", filename, 1);
657        filename = string_replace_all("StreamLive ", "", filename, 1);
658        filename = string_replace_all("TheSolarMovie ", "", filename, 1);
659        filename = string_replace_all("Youtube ", "", filename, 1);
660
661        tmpstr2 = ostrcat(_("Category"), " - ", 0, 0);
662        filename = string_replace_all(tmpstr2, "", filename, 1);
663        free(tmpstr2); tmpstr2 = NULL;
664
665        tmpstr2 = ostrcat(_("Search (local)"), " - ", 0, 0);
666        filename = string_replace_all(tmpstr2, "", filename, 1);
667        free(tmpstr2); tmpstr2 = NULL;
668
669        tmpstr2 = ostrcat(_("Search (20)"), " - ", 0, 0);
670        filename = string_replace_all(tmpstr2, "", filename, 1);
671        free(tmpstr2); tmpstr2 = NULL;
672
673        tmpstr2 = ostrcat(_("Search Cast"), " - ", 0, 0);
674        filename = string_replace_all(tmpstr2, "", filename, 1);
675        free(tmpstr2); tmpstr2 = NULL;
676
677        tmpstr2 = ostrcat(_("Search"), " - ", 0, 0);
678        filename = string_replace_all(tmpstr2, "", filename, 1);
679        free(tmpstr2); tmpstr2 = NULL;
680
681        tmpstr2 = ostrcat(_("All Sorted"), " - ", 0, 0);
682        filename = string_replace_all(tmpstr2, "", filename, 1);
683        free(tmpstr2); tmpstr2 = NULL;
684
685        tmpstr2 = ostrcat(_("A-Z"), " - ", 0, 0);
686        filename = string_replace_all(tmpstr2, "", filename, 1);
687        free(tmpstr2); tmpstr2 = NULL;
688
689        filename = string_replace_all("(Flash - Shell script) - ", "", filename, 1);
690        filename = string_replace_all("Genres - ", "", filename, 1);
691        filename = string_replace_all("All Series - ", "", filename, 1);
692        filename = string_replace_all("Channels - ", "", filename, 1);
693        filename = string_replace_all("Kinofilme - ", "", filename, 1);
694        filename = string_replace_all("Neue Filme - ", "", filename, 1);
695        filename = string_replace_all("Movies (Year) - ", "", filename, 1);
696        filename = string_replace_all("Movies (Genre) - ", "", filename, 1);
697        filename = string_replace_all("Series - ", "", filename, 1);
698
699//      filename = ostrcat(filename, ((struct tithek*)listbox->select->handle)->title, 1, 0);
700        filename = ostrcat(filename, title2, 1, 0);
701
702        filename = ostrcat(filename, ".mp4", 1, 0);
703        filename = string_replace_all(" ", ".", filename, 1);
704        filename = string_replace_all("-", "_", filename, 1);
705        filename = string_replace_all("._.", "_", filename, 1);
706        filename = string_replace_all(".._", "_", filename, 1);
707        filename = string_replace_all(":", ".", filename, 1);
708
709        return filename;
710}
711/*
712                        printf("flag=%d\n", titheknode->flag);
713                        printf("title=%s\n", titheknode->title);
714                        printf("menutitle=%s\n", titheknode->menutitle);
715                        printf("skin title=%s\n", title);
716                        printf("titheklink=%s\n", titheklink);
717
718                        if(title != NULL)
719                                tmpstr1 = ostrcat(title, " - ", 0, 0);
720                        else
721                                tmpstr1 = ostrcat(titheknode->menutitle, " - ", 0, 0);
722
723                        tmpstr1 = ostrcat(tmpstr1, titheknode->title, 1, 0);
724//                      tmpstr1 = ostrcat(tmpstr1, ".mp4", 1, 0);
725
726                        tmpstr1 = string_replace_all(" - ", "_", tmpstr1, 1);
727
728                        tmpstr1 = string_replace_all(") (", ")_(", tmpstr1, 1);
729                        tmpstr1 = string_replace_all(" ", "-", tmpstr1, 1);
730                        printf("tmpstr1=%s\n", tmpstr1);
731
732                        tmpstr2 = ostrcat("/mnt/swapextensions/player/", tmpstr1, 0, 0);
733                        free(tmpstr1), tmpstr1 = NULL;
734*/
735
736//char* createfilename(char* title, struct skin* listbox)
737char* createfilename(char* title, char* title2, int flag)
738{
739        debug(99, "title: %s title2: %s", title, title2);
740        char* filename = NULL;
741        char* tmpstr = NULL;
742        char* tmpstr2 = NULL;
743
744        if(title2 != NULL)
745        {
746                tmpstr = ostrcat(title, " - ", 0, 0);
747                tmpstr = ostrcat(tmpstr, title2, 1, 0);
748        }
749        else
750                tmpstr = ostrcat(title, NULL, 0, 0);
751
752        if(flag >= 1)
753        {
754                tmpstr2 = ostrcat(_("Tithek - Mainmenu - Favoriten"), " - ", 0, 0);
755                tmpstr = string_replace_all(tmpstr2, "", tmpstr, 1);
756                free(tmpstr2); tmpstr2 = NULL;
757
758                tmpstr2 = ostrcat(_("Tithek - Mainmenu"), " - ", 0, 0);
759                tmpstr = string_replace_all(tmpstr2, "", tmpstr, 1);
760                free(tmpstr2); tmpstr2 = NULL;
761
762                tmpstr = string_replace_all("Tips und Tricks - ", "", tmpstr, 1);
763                tmpstr = string_replace_all("Internet TV - ", "", tmpstr, 1);
764                tmpstr = string_replace_all("Internet Radio - ", "", tmpstr, 1);
765                tmpstr = string_replace_all("ARD - ", "", tmpstr, 1);
766                tmpstr = string_replace_all("ZDF - ", "", tmpstr, 1);
767                tmpstr = string_replace_all("FilmOn - ", "", tmpstr, 1);
768                tmpstr = string_replace_all("MyVideo - ", "", tmpstr, 1);
769                tmpstr = string_replace_all("Netzkino - ", "", tmpstr, 1);
770                tmpstr = string_replace_all("KinoX - ", "", tmpstr, 1);
771                tmpstr = string_replace_all("Movie4k - ", "", tmpstr, 1);
772                tmpstr = string_replace_all("Movie2k - ", "", tmpstr, 1);
773
774                tmpstr = string_replace_all("Beeg ", "", tmpstr, 1);
775                tmpstr = string_replace_all("Burning Series ", "", tmpstr, 1);
776                tmpstr = string_replace_all("CricFree ", "", tmpstr, 1);
777                tmpstr = string_replace_all("Giga ", "", tmpstr, 1);
778                tmpstr = string_replace_all("KKiste ", "", tmpstr, 1);
779                tmpstr = string_replace_all("NBA-On-Demand ", "", tmpstr, 1);
780                tmpstr = string_replace_all("StreamLive ", "", tmpstr, 1);
781                tmpstr = string_replace_all("TheSolarMovie ", "", tmpstr, 1);
782                tmpstr = string_replace_all("Youtube ", "", tmpstr, 1);
783
784                tmpstr2 = ostrcat(_("Category"), " - ", 0, 0);
785                tmpstr = string_replace_all(tmpstr2, "", tmpstr, 1);
786                free(tmpstr2); tmpstr2 = NULL;
787
788                tmpstr2 = ostrcat(_("Cine Films"), " - ", 0, 0);
789                tmpstr = string_replace_all(tmpstr2, "", tmpstr, 1);
790                free(tmpstr2); tmpstr2 = NULL;
791
792                tmpstr2 = ostrcat(_("Search (local)"), " - ", 0, 0);
793                tmpstr = string_replace_all(tmpstr2, "", tmpstr, 1);
794                free(tmpstr2); tmpstr2 = NULL;
795
796                tmpstr2 = ostrcat(_("Search (20)"), " - ", 0, 0);
797                tmpstr = string_replace_all(tmpstr2, "", tmpstr, 1);
798                free(tmpstr2); tmpstr2 = NULL;
799
800                tmpstr2 = ostrcat(_("Search Cast"), " - ", 0, 0);
801                tmpstr = string_replace_all(tmpstr2, "", tmpstr, 1);
802                free(tmpstr2); tmpstr2 = NULL;
803
804                tmpstr2 = ostrcat(_("Search"), " - ", 0, 0);
805                tmpstr = string_replace_all(tmpstr2, "", tmpstr, 1);
806                free(tmpstr2); tmpstr2 = NULL;
807
808                tmpstr2 = ostrcat(_("All Sorted"), " - ", 0, 0);
809                tmpstr = string_replace_all(tmpstr2, "", tmpstr, 1);
810                free(tmpstr2); tmpstr2 = NULL;
811
812                tmpstr2 = ostrcat(_("A-Z"), " - ", 0, 0);
813                tmpstr = string_replace_all(tmpstr2, "", tmpstr, 1);
814                free(tmpstr2); tmpstr2 = NULL;
815
816                tmpstr = string_replace_all("(Flash - Shell script) - ", "", tmpstr, 1);
817                tmpstr = string_replace_all("Genres - ", "", tmpstr, 1);
818                tmpstr = string_replace_all("All Series - ", "", tmpstr, 1);
819                tmpstr = string_replace_all("Channels - ", "", tmpstr, 1);
820                tmpstr = string_replace_all("Kinofilme - ", "", tmpstr, 1);
821                tmpstr = string_replace_all("Neue Filme - ", "", tmpstr, 1);
822                tmpstr = string_replace_all("Movies (Year) - ", "", tmpstr, 1);
823                tmpstr = string_replace_all("Movies (Genre) - ", "", tmpstr, 1);
824                tmpstr = string_replace_all("Series - ", "", tmpstr, 1);
825
826        //      tmpstr = ostrcat(tmpstr, ((struct tithek*)listbox->select->handle)->title, 1, 0);
827        //      tmpstr = ostrcat(tmpstr, title2, 1, 0);
828
829                tmpstr = ostrcat(tmpstr, ".mp4", 1, 0);
830                tmpstr = string_replace_all("/", ".", tmpstr, 1);
831                tmpstr = string_replace_all(" ", ".", tmpstr, 1);
832                tmpstr = string_replace_all("-", "_", tmpstr, 1);
833                tmpstr = string_replace_all("._.", "_", tmpstr, 1);
834                tmpstr = string_replace_all(".._", "_", tmpstr, 1);
835                tmpstr = string_replace_all(":", ".", tmpstr, 1);
836                tmpstr = string_replace_all("..", ".", tmpstr, 1);
837        }
838        else
839        {
840                tmpstr = string_replace_all(" - ", "_", tmpstr, 1);
841        //      filename = string_replace_all(") (", ")_(", filename, 1);
842                tmpstr = string_replace_all(" ", ".", tmpstr, 1);
843                tmpstr = string_replace_all("(", "", tmpstr, 1);
844                tmpstr = string_replace_all(")", "", tmpstr, 1);
845                tmpstr = string_replace_all("/", ".", tmpstr, 1);
846                tmpstr = string_replace_all(":", ".", tmpstr, 1);
847        }
848
849        if(flag == 0)
850                filename = ostrcat("/mnt/swapextensions/player/", tmpstr, 0, 0);
851        else if(flag == 1)
852                filename = ostrcat("/mnt/swapextensions/player/FAV_", tmpstr, 0, 0);
853        else
854                filename = ostrcat(tmpstr, NULL, 0, 0);
855
856        free(tmpstr), tmpstr = NULL;
857        debug(99, "filename: %s", filename);
858
859        return filename;
860}
861
862
863
864int all_search_local(struct skin* grid, struct skin* listbox, struct skin* countlabel, struct skin* load, char* link, char* title, char* searchstr, int flag)
865{
866        char* tmpstr = NULL, *tmpstr1 = NULL, *line = NULL, *menu = NULL, *search = NULL;
867        int ret = 1, count = 0, i = 0;
868
869        if(listbox == NULL || listbox->select == NULL || listbox->select->handle == NULL)
870                return ret;
871
872        if(searchstr == NULL)
873                search = textinputhist(_("Search"), " ", "searchhist");
874        else
875                search = textinputhist(_("Search"), searchstr, "searchhist");
876
877        if(search != NULL)
878        {
879                drawscreen(load, 0, 0);
880
881                strstrip(search);
882                string_tolower(search);
883
884                tmpstr = gethttp("atemio.dyndns.tv", "/mediathek/all/all-sorted.list", 80, NULL, HTTPAUTH, 5000, NULL, 0);
885
886                struct splitstr* ret1 = NULL;
887                ret1 = strsplit(tmpstr, "\n", &count);
888
889                if(ret1 != NULL)
890                {
891                        int max = count;
892                        for(i = 0; i < max; i++)
893                        {
894                       
895                                tmpstr1 = ostrcat(ret1[i].part, NULL, 0, 0);
896                                tmpstr1 = stringreplacecharonce(tmpstr1, '#', '\0');
897                                string_tolower(tmpstr1);
898
899                                if(ostrstr(tmpstr1, search) != NULL)
900                                {
901                                        printf("found: %s\n", ret1[i].part);
902                                        int rcret = waitrc(NULL, 10, 0);
903                                        if(rcret == getrcconfigint("rcexit", NULL)) break;
904
905                                        line = ostrcat(line, ret1[i].part, 1, 0);
906                                        line = ostrcat(line, "\n", 0, 0);
907                                }
908                                free(tmpstr1), tmpstr1 = NULL;                         
909                        }
910                        free(ret1), ret1 = NULL;
911
912                        if(line != NULL)
913                        {
914                                line = string_replace_all("http://atemio.dyndns.tv/", "http://imageshack.us/md/up/grd/", line, 1);
915                                menu = ostrcat("/tmp/tithek/all.search.list", NULL, 0, 0);
916                                writesys(menu, line, 0);
917                                struct tithek* tnode = (struct tithek*)listbox->select->handle;
918                                createtithek(tnode, tnode->title, menu, tnode->pic, tnode->localname, tnode->menutitle, tnode->description, tnode->flag);
919                                ret = 0;
920                        }
921                }
922                free(tmpstr), tmpstr = NULL;
923        }
924        free(search), search = NULL;
925        return ret;
926}
927
928char* jsunpack(char* input)
929{
930        int debuglevel = getconfigint("debuglevel", NULL);
931
932        if(input == NULL) return input;
933
934        char* b36code = NULL, *search = NULL, *charlist = NULL, *base = NULL, *tmpstr2 = NULL, *tmpstr3 = NULL, *tmpstr = NULL, *packed = NULL;
935
936        unlink("/tmp/jsunpack1_packed");
937        unlink("/tmp/jsunpack2_tmpstr");
938        unlink("/tmp/jsunpack3_b36code");
939        unlink("/tmp/jsunpack4_tmpstr_last");
940
941//eval(function(p,a,c,k,e,d){while(c--)if(k[c])p=p.replace(new RegExp('\\b'+c.toString(a)+'\\b','g'),k[c]);return p}('1k.1j(\'<c 13="1i"1h="1g:1f-1e-1d-1c-1b"u="t"s="r"1a="3://h.9.g/f/19.18"><2 1="y"0="x"/><2 1="w"0="v"/><2 1="a"0="3://8.7.6.5/i/q/p.o"/><2 1="l"0="4"><2 1="m"0="4"/><2 1="k"0="j"/><2 1="n"0="4"/><2 1="12"0="3://8.7.6.5:11/d/10/b.z"/><e 13="17"16="b/9"12="3://8.7.6.5:11/d/10/b.z"y="x"w="v"u="t"s="r"a="3://8.7.6.5/i/q/p.o"n="4"m="4"a=""l="4"k="j"15="3://h.9.g/f/14/"></e></c>\');',36,57,'value|name|param|http|false|240|30|56|185|divx|previewImage|video|object||embed|plugin|com|go||Play|previewMessage|allowContextMenu|bannerEnabled|autoPlay|jpg|rezh7ogkvg6b|00004|380|height|715|width|transparent|wmode|Stage6|custommode|mkv|s4umuuk7gii5uaadrm5a76s7fd4bjlcti2r3v6bsa5d6yryt4dawmiqg|182|src|id|download|pluginspage|type|np_vid|cab|DivXBrowserPlugin|codebase|CC0F21721616|9C46|41fa|D0AB|67DABFBF|clsid|classid|ie_vid|write|document'.split('|')))
942
943//eval(function(p,a,c,k,e,d){e=function(c){return c};if(!''.replace(/^/,String)){while(c--){d[c]=k[c]||c}k=[function(e){return d[e]}];e=function(){return'\\w+'};c=1};while(c--){if(k[c]){p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c])}}return p}('3.2(\'<0 4\'.1(\'8="\'+\'/5\'.1(\'/\'+7+\'">\\6/0>\')))',9,9,'script|concat|write|document|s|jwv|x3C|mpri_Key|rc'.split('|'),0,{}))
944
945        while(ostrstr(input, "eval(function(p,a,c,k,e,d){") != NULL)
946        {
947                packed = string_resub("eval(function(p,a,c,k,e,d){", "}))", input, 0);
948                if(packed == NULL)
949                        packed = string_resub("eval(function(p,a,c,k,e,d){", "))", input, 0);
950
951                titheklog(debuglevel, "/tmp/jsunpack1_packed", NULL, NULL, NULL, packed);       
952       
953//              tmpstr = string_resub(";return p}('", ");'", packed, 0);
954//              tmpstr = oregex(".*;return p}(.*)',[0-9]{2,2},[0-9]{2,2},'.*'.split.*", packed);
955//              tmpstr = oregex(".*;return p}(.*)',[0-9]{1,3},[0-9]{1,3},'.*'.split.*", packed);
956                tmpstr = oregex(".*return p}(.*)',[0-9]{1,3},[0-9]{1,3},'.*'.split.*", packed);
957
958                debug(99, "tmpstr: %s", tmpstr);
959                titheklog(debuglevel, "/tmp/jsunpack2_packed_tmpstr", NULL, NULL, NULL, tmpstr);
960       
961//              b36code = oregex(".*;',[0-9]{2,2},[0-9]{2,2},'(.*)'.split.*", packed);
962                b36code = oregex(".*',[0-9]{1,3},[0-9]{1,3},'(.*)'.split.*", packed);
963               
964                b36code = string_replace_all("||", "| |", b36code, 1);
965                debug(99, "b36code: %s", b36code);
966                titheklog(debuglevel, "/tmp/jsunpack3_packed_b36code", NULL, NULL, NULL, b36code);
967
968                if(!ostrncmp("|", b36code, 1))
969                        b36code = ostrcat(" ", b36code, 0, 1);
970
971                struct splitstr* ret1 = NULL;
972                int count = 0;
973                int i = 0;
974                ret1 = strsplit(b36code, "|", &count);
975       
976                charlist = ostrcat(charlist, "\"", 1, 0);
977                charlist = ostrcat(charlist, "|", 1, 0);
978                charlist = ostrcat(charlist, "'", 1, 0);
979                charlist = ostrcat(charlist, "|", 1, 0);
980                charlist = ostrcat(charlist, ".", 1, 0);
981                charlist = ostrcat(charlist, "|", 1, 0);
982                charlist = ostrcat(charlist, ";", 1, 0);
983                charlist = ostrcat(charlist, "|", 1, 0);
984                charlist = ostrcat(charlist, ":", 1, 0);
985                charlist = ostrcat(charlist, "|", 1, 0);
986                charlist = ostrcat(charlist, "=", 1, 0);
987                charlist = ostrcat(charlist, "|", 1, 0);
988                charlist = ostrcat(charlist, ",", 1, 0);
989                charlist = ostrcat(charlist, "|", 1, 0);
990                charlist = ostrcat(charlist, " ", 1, 0);
991                charlist = ostrcat(charlist, "|", 1, 0);
992                charlist = ostrcat(charlist, "\\", 1, 0);
993                charlist = ostrcat(charlist, "|", 1, 0);
994                charlist = ostrcat(charlist, "/", 1, 0);
995                charlist = ostrcat(charlist, "|", 1, 0);
996                charlist = ostrcat(charlist, "(", 1, 0);
997                charlist = ostrcat(charlist, "|", 1, 0);
998                charlist = ostrcat(charlist, ")", 1, 0);
999                charlist = ostrcat(charlist, "'", 1, 0);
1000                charlist = ostrcat(charlist, "%", 1, 0);
1001       
1002                for(i = 0; i < count; i++)
1003                {
1004                        if(ostrstr((&ret1[i])->part, " ") != NULL)
1005                        {
1006                                printf("continue\n");
1007                                continue;
1008                        }
1009                        char* x = oltostr(i, 36);
1010       
1011                        struct splitstr* ret2 = NULL;
1012                        int count2 = 0;
1013                        int i2 = 0;
1014                        tmpstr2 = ostrcat(charlist, NULL, 0, 0);
1015                        ret2 = strsplit(tmpstr2, "|", &count2);
1016                        for(i2 = 0; i2 < count2; i2++)
1017                        {
1018                                struct splitstr* ret3 = NULL;
1019                                int count3 = 0;
1020                                int i3 = 0;
1021                                tmpstr3 = ostrcat(charlist, NULL, 0, 0);
1022                                ret3 = strsplit(tmpstr3, "|", &count3);
1023                                for(i3 = 0; i3 < count3; i3++)
1024                                {
1025                                        debug(99, "-----------------------------------------------");
1026                                        debug(99, "replace %s%s%s <> %s%s%s",(&ret2[i2])->part, x, (&ret3[i3])->part, (&ret2[i2])->part, (&ret1[i])->part, (&ret3[i3])->part);
1027       
1028                                        base = ostrcat(base, (&ret2[i2])->part, 1, 0);
1029                                        base = ostrcat(base, x, 1, 0);
1030                                        base = ostrcat(base, (&ret3[i3])->part, 1, 0);         
1031                                        search = ostrcat(search, (&ret2[i2])->part, 1, 0);
1032                                        search = ostrcat(search, (&ret1[i])->part, 1, 0);
1033                                        search = ostrcat(search, (&ret3[i3])->part, 1, 0);
1034                                        tmpstr = string_replace_all(base, search, tmpstr, 1);
1035                                        free(base), base = NULL;
1036                                        free(search), search = NULL;
1037                                }
1038                                free(ret3), ret3 = NULL;
1039                                free(tmpstr3), tmpstr3 = NULL;
1040                        }
1041                        free(ret2), ret2 = NULL;
1042                        free(tmpstr2), tmpstr2 = NULL;
1043                        free(x);
1044                }
1045                free(ret1), ret1 = NULL;
1046       
1047                titheklog(debuglevel, "/tmp/jsunpack4_packed_tmpstr_last", NULL, NULL, NULL, tmpstr);
1048
1049                if(tmpstr == NULL)
1050                        input = string_replace("eval(function(p,a,c,k,e,d){", "eval(function(p,a,c,k,e,d-extracted-error){", input, 1);
1051                else
1052                {
1053                        input = string_replace("eval(function(p,a,c,k,e,d){", "eval(function(p,a,c,k,e,d-extracted){", input, 1);
1054                        input = string_replace(packed, tmpstr, input, 1);
1055                }
1056                free(tmpstr),tmpstr = NULL;
1057                free(packed), packed = NULL;
1058                free(b36code), b36code = NULL;
1059                free(charlist), charlist = NULL;
1060        }
1061
1062//eval(function(p,a,c,k,e,r){e=function(c){return c.toString(36)};if('0'.replace(0,e)==0){while(c--)r[e(c)]=k[c];k=[function(e){return r[e]||e}];e=function(){return'[2-9k-t]'};c=1};while(c--)if(k[c])p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c]);return p}('k p(a){5 b="s=1",c="t=l";7(a&&a.8&&a.8.9>0)6(5 d=0;d<a.8.9;d++){5 e=a.8[d],f=["r","m"];6(5 g n f){5 h=f[g];7(e&&e[h])6(5 i=e[h],j=0;j<i.9;j++)i[j]&&i[j].2&&(i[j].2+=(-1==i[j].2.o("?")?"?":"&")+"4=3&"+b+"&"+c)}}q a}',[],30,'||file|false|direct|var|for|if|playlist|length|||||||||||function|g2wppbatyvegydjngpim4hp5rl6ammlhkneq3sdgfqh5woiym753qlis6o6737kceon73boksojlkppwz744cta5i2kpzwwdsh3hrjqq3eiwcysqmy6aerlaeszaptrregtvpdfsdaiy4idwqdlack4abotyacmth2a253x5lrvvul7dxs6kligge5dufn6eofjjxex7vzljmvrrv4dnb4xlbn3hvb67c2pgc7y|httpfallback|in|indexOf|jwConfig|return|sources|ua|vt'.split('|'),0,{}))
1063
1064        while(ostrstr(input, "eval(function(p,a,c,k,e,r){") != NULL)
1065        {
1066                packed = string_resub("eval(function(p,a,c,k,e,r){", "))", input, 0);
1067                titheklog(debuglevel, "/tmp/jsunpack1_packed", NULL, NULL, NULL, packed);       
1068       
1069//              tmpstr = string_resub(";return p}('", ");'", packed, 0);
1070//              tmpstr = oregex(".*;return p}(.*)',[0-9]{2,2},[0-9]{2,2},'.*'.split.*", packed);
1071                tmpstr = oregex(".*;return p}(.*)',[0-9]{1,3},[0-9]{1,3},'.*'.split.*", packed);
1072
1073                debug(99, "tmpstr: %s", tmpstr);
1074                titheklog(debuglevel, "/tmp/jsunpack2_packed_tmpstr", NULL, NULL, NULL, tmpstr);
1075       
1076//              b36code = oregex(".*;',[0-9]{2,2},[0-9]{2,2},'(.*)'.split.*", packed);
1077                b36code = oregex(".*',[0-9]{1,3},[0-9]{1,3},'(.*)'.split.*", packed);
1078               
1079                b36code = string_replace_all("||", "| |", b36code, 1);
1080                debug(99, "b36code: %s", b36code);
1081                titheklog(debuglevel, "/tmp/jsunpack3_packed_b36code", NULL, NULL, NULL, b36code);
1082
1083                if(!ostrncmp("|", b36code, 1))
1084                        b36code = ostrcat(" ", b36code, 0, 1);
1085
1086                struct splitstr* ret1 = NULL;
1087                int count = 0;
1088                int i = 0;
1089                ret1 = strsplit(b36code, "|", &count);
1090       
1091                charlist = ostrcat(charlist, "\"", 1, 0);
1092                charlist = ostrcat(charlist, "|", 1, 0);
1093                charlist = ostrcat(charlist, "'", 1, 0);
1094                charlist = ostrcat(charlist, "|", 1, 0);
1095                charlist = ostrcat(charlist, ".", 1, 0);
1096                charlist = ostrcat(charlist, "|", 1, 0);
1097                charlist = ostrcat(charlist, ";", 1, 0);
1098                charlist = ostrcat(charlist, "|", 1, 0);
1099                charlist = ostrcat(charlist, ":", 1, 0);
1100                charlist = ostrcat(charlist, "|", 1, 0);
1101                charlist = ostrcat(charlist, "=", 1, 0);
1102                charlist = ostrcat(charlist, "|", 1, 0);
1103                charlist = ostrcat(charlist, ",", 1, 0);
1104                charlist = ostrcat(charlist, "|", 1, 0);
1105                charlist = ostrcat(charlist, " ", 1, 0);
1106                charlist = ostrcat(charlist, "|", 1, 0);
1107                charlist = ostrcat(charlist, "\\", 1, 0);
1108                charlist = ostrcat(charlist, "|", 1, 0);
1109                charlist = ostrcat(charlist, "/", 1, 0);
1110                charlist = ostrcat(charlist, "|", 1, 0);
1111                charlist = ostrcat(charlist, "(", 1, 0);
1112                charlist = ostrcat(charlist, "|", 1, 0);
1113                charlist = ostrcat(charlist, ")", 1, 0);
1114                charlist = ostrcat(charlist, "'", 1, 0);
1115                charlist = ostrcat(charlist, "%", 1, 0);
1116       
1117                for(i = 0; i < count; i++)
1118                {
1119                        if(ostrstr((&ret1[i])->part, " ") != NULL)
1120                        {
1121                                printf("continue\n");
1122                                continue;
1123                        }
1124                        char* x = oltostr(i, 36);
1125       
1126                        struct splitstr* ret2 = NULL;
1127                        int count2 = 0;
1128                        int i2 = 0;
1129                        tmpstr2 = ostrcat(charlist, NULL, 0, 0);
1130                        ret2 = strsplit(tmpstr2, "|", &count2);
1131                        for(i2 = 0; i2 < count2; i2++)
1132                        {
1133                                struct splitstr* ret3 = NULL;
1134                                int count3 = 0;
1135                                int i3 = 0;
1136                                tmpstr3 = ostrcat(charlist, NULL, 0, 0);
1137                                ret3 = strsplit(tmpstr3, "|", &count3);
1138                                for(i3 = 0; i3 < count3; i3++)
1139                                {
1140                                        debug(99, "-----------------------------------------------");
1141                                        debug(99, "replace %s%s%s <> %s%s%s",(&ret2[i2])->part, x, (&ret3[i3])->part, (&ret2[i2])->part, (&ret1[i])->part, (&ret3[i3])->part);
1142       
1143                                        base = ostrcat(base, (&ret2[i2])->part, 1, 0);
1144                                        base = ostrcat(base, x, 1, 0);
1145                                        base = ostrcat(base, (&ret3[i3])->part, 1, 0);         
1146                                        search = ostrcat(search, (&ret2[i2])->part, 1, 0);
1147                                        search = ostrcat(search, (&ret1[i])->part, 1, 0);
1148                                        search = ostrcat(search, (&ret3[i3])->part, 1, 0);
1149                                        tmpstr = string_replace_all(base, search, tmpstr, 1);
1150                                        free(base), base = NULL;
1151                                        free(search), search = NULL;
1152                                }
1153                                free(ret3), ret3 = NULL;
1154                                free(tmpstr3), tmpstr3 = NULL;
1155                        }
1156                        free(ret2), ret2 = NULL;
1157                        free(tmpstr2), tmpstr2 = NULL;
1158                        free(x);
1159                }
1160                free(ret1), ret1 = NULL;
1161       
1162                titheklog(debuglevel, "/tmp/jsunpack4_packed_tmpstr_last", NULL, NULL, NULL, tmpstr);
1163
1164                if(tmpstr == NULL)
1165                        input = string_replace("eval(function(p,a,c,k,e,d){", "eval(function(p,a,c,k,e,d-extracted-error){", input, 1);
1166                else
1167                {
1168                        input = string_replace("eval(function(p,a,c,k,e,d){", "eval(function(p,a,c,k,e,d-extracted){", input, 1);
1169                        input = string_replace(packed, tmpstr, input, 1);
1170                }
1171                free(tmpstr),tmpstr = NULL;
1172                free(packed), packed = NULL;
1173                free(b36code), b36code = NULL;
1174                free(charlist), charlist = NULL;
1175        }
1176
1177        return input;
1178}
1179
1180void localparser_init(char* titheklink, char* tithekfile, int flag)
1181{
1182        char* tmpstr = NULL, *tmpstr1 = NULL, *tmpstr2 = NULL, *cmd = NULL, *line = NULL, *path = NULL;
1183        struct skin* load = getscreen("loading");
1184
1185        if(ostrcmp("http://atemio.dyndns.tv/mediathek/mainmenu.list", titheklink) == 0)
1186        {
1187                path = ostrcat("/tmp/localparser", NULL, 0, 0);
1188                drawscreen(load, 0, 0);
1189
1190                char* titheklocalfile = ostrcat("/tmp/tithek/mainmenu.local.list", NULL, 0, 0);
1191
1192                if(flag == 1)
1193                {
1194                        if(!file_exist("/tmp/localhoster"))
1195                                mkdir("/tmp/localhoster", 0777);
1196                        if(!file_exist("/mnt/parser"))
1197                                mkdir("/mnt/parser", 0777);
1198                        if(!file_exist(path))
1199                                mkdir(path, 0777);
1200       
1201                        gethttp("atemio.dyndns.tv", "/mediathek/parser_free.tar", 80, "/tmp/parser.tar", HTTPAUTH, 5000, NULL, 0);
1202       
1203                        cmd = ostrcat("tar -xf /tmp/parser.tar -C ", path, 0, 0);
1204                        printf("[tithek] start cmd: %s\n", cmd);
1205                        system(cmd);
1206                        printf("[tithek] ende cmd: %s\n", cmd);
1207                        free(cmd), cmd = NULL;
1208                        unlink("/tmp/parser.tar");
1209                        printf("[tithek] remove: /tmp/parser.tar\n");
1210       
1211                        if(file_exist("/mnt/swapextensions/etc/.codecpack") || file_exist("/var/swap/etc/.codecpack") || file_exist("/var/etc/.codecpack"))
1212                        {
1213                                gethttp("atemio.dyndns.tv", "/mediathek/parser_secret.tar", 80, "/tmp/parser.tar", HTTPAUTH, 5000, NULL, 0);
1214                                cmd = ostrcat("tar -xf /tmp/parser.tar -C ", path, 0, 0);
1215                                printf("[tithek] start cmd: %s\n", cmd);
1216                                system(cmd);
1217                                printf("[tithek] ende cmd: %s\n", cmd);
1218                                free(cmd), cmd = NULL;
1219                                printf("[tithek] remove: /tmp/parser.tar\n");
1220                                unlink("/tmp/parser.tar");
1221                        }
1222       
1223                        gethttp("atemio.dyndns.tv", "/mediathek/hoster.tar", 80, "/tmp/hoster.tar", HTTPAUTH, 5000, NULL, 0);
1224                        cmd = ostrcat("tar -xf /tmp/hoster.tar -C ", "/tmp/localhoster", 0, 0);
1225                        printf("[tithek] start cmd: %s\n", cmd);
1226                        system(cmd);
1227                        printf("[tithek] ende cmd: %s\n", cmd);
1228                        free(cmd), cmd = NULL;
1229                        printf("[tithek] remove: /tmp/hoster.tar\n");
1230                        unlink("/tmp/hoster.tar");
1231
1232                        //dnode is freed in thread
1233                        struct download* dnode = calloc(1, sizeof(struct download));
1234                        if(dnode != NULL)
1235                        {
1236                                dnode->host = ostrcat("atemio.dyndns.tv", NULL, 0, 0);
1237                                dnode->page = ostrcat("/mediathek/python.tar", NULL, 0, 0);     
1238                                dnode->port = 80;
1239                                dnode->filename = ostrcat("/tmp/python.tar", NULL, 0, 0);
1240
1241                                printf("[tithek] getfreespace start\n");
1242       
1243                                if(getfreespace("/mnt") / 1024 > 102400) //100mb
1244                                {
1245                                        mkdir("/mnt/.tithek", 0777);
1246                                        if(file_exist("/mnt/.tithek"))
1247                                                dnode->filename = ostrcat("/mnt/.tithek/python.tar", NULL, 0, 0);
1248                                        dnode->page = ostrcat("/mediathek/python_full.tar", NULL, 0, 0);
1249                                        symlink("/mnt/.tithek/lib", "/tmp/localhoster/lib");
1250                                }
1251                                else if(file_exist("/media/hdd") && getfreespace("/media/hdd") / 1024 > 102400)
1252                                {
1253                                        mkdir("/media/hdd/.tithek", 0777);
1254                                        if(file_exist("/media/hdd/.tithek"))
1255                                                dnode->filename = ostrcat("/media/hdd/.tithek/python.tar", NULL, 0, 0);
1256                                        dnode->page = ostrcat("/mediathek/python_full.tar", NULL, 0, 0);
1257                                        symlink("/media/hdd/.tithek/lib", "/tmp/localhoster/lib");
1258                                }
1259                                else if(file_exist("/var/swap") && getfreespace("/var/swap") / 1024 > 102400)
1260                                {
1261                                        mkdir("/var/swap/.tithek", 0777);
1262                                        if(file_exist("/var/swap/.tithek"))
1263                                                dnode->filename = ostrcat("/var/swap/.tithek/python.tar", NULL, 0, 0);
1264                                        dnode->page = ostrcat("/mediathek/python_full.tar", NULL, 0, 0);
1265                                        symlink("/var/swap/.tithek/lib", "/tmp/localhoster/lib");
1266                                }
1267                                else if(getfreespace("/tmp") / 1024 > 102400)
1268                                {
1269                                        dnode->filename = ostrcat("/tmp/python.tar", NULL, 0, 0);
1270                                        dnode->page = ostrcat("/mediathek/python_full.tar", NULL, 0, 0);                                                       
1271                                }
1272                                printf("[tithek] getfreespace end\n");
1273
1274//                              if(ostrcmp(dnode->page, "/tmp/python.tar") == 0 || getconfigint("tithek_autoupdate", NULL) == 1)
1275                                if(getconfigint("tithek_autoupdate", NULL) == 1)
1276                                {
1277                                        if(file_exist(dnode->filename))
1278                                        {
1279                                                printf("[tithek] remove before download: %s\n", dnode->page);
1280                                                unlink(dnode->filename);
1281                                        }
1282                                }
1283                       
1284                                dnode->auth = ostrcat(HTTPAUTH, NULL, 0, 0);
1285                                dnode->connfd = -1;
1286                                dnode->ret = -1;
1287                                dnode->timeout = 10000;
1288                                addtimer(&tithekdownloadthread, START, 100, 1, (void*)dnode, NULL, NULL);
1289                        }
1290
1291                        cmd = ostrcat("chmod -R 755 ", path, 0, 0);
1292                        system(cmd);
1293                        free(cmd), cmd = NULL;
1294       
1295                        cmd = ostrcat("chmod -R 755 /mnt/parser", NULL, 0, 0);
1296                        system(cmd);
1297                        free(cmd), cmd = NULL;
1298       
1299                        cmd = ostrcat("chmod -R 755 /tmp/localhoster", NULL, 0, 0);
1300                        system(cmd);
1301                        free(cmd), cmd = NULL;
1302//                      }
1303       
1304                        cmd = ostrcat("ls -1 ", path, 0, 0);
1305                        cmd = ostrcat(cmd, "/*.sh", 1, 0);
1306       
1307                        free(path), path = NULL;
1308                        tmpstr1 = command("ls -1 /mnt/parser/*.sh");
1309                        tmpstr2 = command(cmd);
1310                        free(cmd), cmd = NULL;
1311                        tmpstr = ostrcat(tmpstr1, "\n", 0, 0);
1312                        tmpstr = ostrcat(tmpstr, tmpstr2, 1, 0);
1313       
1314                        int count = 0, i = 0;
1315                        struct splitstr* ret1 = NULL;
1316                        ret1 = strsplit(tmpstr, "\n", &count);
1317               
1318                        int max = count;
1319                        for(i = 0; i < max; i++)
1320                        {
1321                                if(file_exist(ret1[i].part) && cmpfilenameext(ret1[i].part, ".sh") == 0)
1322                                {
1323                                        cmd = ostrcat(ret1[i].part, " ", 0, 0);
1324                                        cmd = ostrcat(cmd, ret1[i].part, 1, 0);
1325                                        cmd = ostrcat(cmd, " init", 1, 0);
1326                                        line = command(cmd);
1327                                        line = string_newline(line);
1328                                        printf("[tithek] cmd: %s\n", cmd);
1329                                        debug(99, "add main menuentry: %s", line);
1330                                        writesys(titheklocalfile, line, 3);
1331                                        free(cmd), cmd = NULL;
1332                                        free(line), line = NULL;
1333                                }
1334                        }
1335                        free(ret1), ret1 = NULL;
1336                        free(tmpstr), tmpstr = NULL;
1337                        free(tmpstr1), tmpstr1 = NULL;
1338                        free(tmpstr2), tmpstr2 = NULL;
1339                }
1340
1341                line = readfiletomem(titheklocalfile, 1);
1342                free(titheklocalfile), titheklocalfile = NULL;
1343                writesys(tithekfile, line, 3);
1344
1345                clearscreen(load);
1346        }
1347
1348}
1349
1350char* list_hoster_streams(char* input)
1351{
1352        char* streamurl = NULL, *tmpstr = NULL, *nummer = NULL, *title = NULL, *pic = NULL, *filename = NULL;
1353
1354        int count = 0, i = 0, last = 0;
1355
1356        filename = ostrcat(input, NULL, 0, 0);
1357
1358        if(ostrncmp("/tmp/", filename, 5) && ostrncmp("/mnt/", filename, 5))
1359                return filename;
1360        else
1361        {
1362                debug(10, "Streamfile found: %s", input);
1363                debug(99, "Streamfile found: %s", input);
1364        }
1365
1366//      tmpstr = ostrcat(link, NULL, 0, 0);
1367        tmpstr = readfiletomem(filename, 1);
1368
1369        struct splitstr* ret1 = NULL;
1370        struct menulist* mlist = NULL, *mbox = NULL;
1371//      ret1 = strsplit(string_decode(tmpstr2, 0), "\n", &count);
1372        ret1 = strsplit(tmpstr, "\n", &count);
1373        last = count - 1;
1374        for(i = 0; i < count; i++)
1375        {               
1376//              if(ret1[i].part != NULL && ostrstr(ret1[i].part, "_quality") != NULL)
1377                if(ret1[i].part != NULL)
1378                {
1379               
1380                        if(ostrstr(ret1[i].part, "f4m") != NULL)
1381                                pic = ostrcat("f4m.png", NULL, 0, 0);
1382                        else if(ostrstr(ret1[i].part, "mp4") != NULL)
1383                                pic = ostrcat("mp4.png", NULL, 0, 0);
1384                        else if(ostrstr(ret1[i].part, "3gp") != NULL)
1385                                pic = ostrcat("3gp.png", NULL, 0, 0);
1386                        else if(ostrstr(ret1[i].part, "flv") != NULL)
1387                                pic = ostrcat("flv.png", NULL, 0, 0);
1388                        else if(ostrstr(ret1[i].part, "hls") != NULL)
1389                                pic = ostrcat("hls.png", NULL, 0, 0);
1390                        else if(ostrstr(ret1[i].part, "mkv") != NULL)
1391                                pic = ostrcat("mkv.png", NULL, 0, 0);
1392
1393                        if(ostrstr(ret1[i].part, "1080p") != NULL)
1394                                nummer = ostrcat("1080p", NULL, 0, 0);
1395                        else if(ostrstr(ret1[i].part, "1080i") != NULL)
1396                                nummer = ostrcat("1080i", NULL, 0, 0);
1397                        else if(ostrstr(ret1[i].part, "1080") != NULL)
1398                                nummer = ostrcat("1080", NULL, 0, 0);
1399                        else if(ostrstr(ret1[i].part, "720p") != NULL)
1400                                nummer = ostrcat("720p", NULL, 0, 0);
1401                        else if(ostrstr(ret1[i].part, "720") != NULL)
1402                                nummer = ostrcat("720", NULL, 0, 0);
1403                        else if(ostrstr(ret1[i].part, "360p") != NULL)
1404                                nummer = ostrcat("360p", NULL, 0, 0);
1405                        else if(ostrstr(ret1[i].part, "360") != NULL)
1406                                nummer = ostrcat("360", NULL, 0, 0);
1407                        else if(ostrstr(ret1[i].part, "hls") != NULL)
1408                                nummer = ostrcat("hls", NULL, 0, 0);
1409                        else if(ostrstr(ret1[i].part, "auto") != NULL)
1410                                nummer = ostrcat("auto", NULL, 0, 0);
1411
1412                        title = ostrcat(ret1[i].part, NULL, 0, 0);
1413                        title = stringreplacecharonce(title, ':', '\0');
1414                        string_toupper(title);
1415                        title = ostrcat(title, " Stream", 1, 0);
1416
1417                        streamurl = ostrcat(ret1[i].part, NULL, 0, 0);
1418                        if(nummer != NULL)
1419                        {
1420                                title = ostrcat(title, " (", 1, 0);
1421                                title = ostrcat(title, nummer, 1, 0);
1422                                title = ostrcat(title, ")", 1, 0);
1423                        }
1424 
1425                        if(ostrstr(filename, "youtube_dl") != NULL)
1426                        {
1427                                title = ostrcat(title, " (", 1, 0);
1428                                if(last == i)
1429                                        title = ostrcat(title, "Orginal", 1, 0);
1430                                else
1431                                        title = ostrcat(title, "Youtube DL", 1, 0);
1432                                title = ostrcat(title, ")", 1, 0);
1433                        }
1434                       
1435                        //test show link
1436                        title = ostrcat(title, " (", 1, 0);
1437                        title = ostrcat(title, ret1[i].part, 1, 0);
1438                        title = ostrcat(title, ")", 1, 0);
1439                        //end
1440
1441                        debug(99, "(%d) title: %s streamurl: %s\n", i, title, streamurl);                                                                                                                                                                                                       
1442                        addmenulist(&mlist, title, streamurl, pic, 0, 0);
1443
1444                        free(title), title = NULL;
1445                        free(pic), pic = NULL;
1446                        free(nummer), nummer = NULL;
1447                        free(streamurl), streamurl = NULL;
1448                }
1449        }
1450        free(ret1), ret1 = NULL;
1451
1452        if(mlist != NULL)
1453        {
1454                mbox = menulistbox(mlist, NULL, _("Stream Menu"), _("Choose your Streaming Format from the following list"), NULL, NULL, 1, 0);
1455                if(mbox != NULL)
1456                {
1457                        free(streamurl), streamurl = NULL;
1458
1459                        debug(99, "mbox->name %s", mbox->name);
1460                        debug(99, "mbox->text %s", mbox->text);
1461                        streamurl = ostrcat(mbox->text, NULL, 0, 0);
1462                }
1463        }
1464        free(tmpstr); tmpstr = NULL;
1465
1466        if(streamurl == NULL)
1467        {
1468                debug(10, "Streamfile choice canceld by USER set Streamurl to skip");
1469                debug(99, "Streamfile choice canceld by USER set Streamurl to skip");
1470
1471                streamurl = ostrcat("skip", NULL, 0, 0);
1472        }
1473
1474        return streamurl;
1475}
1476
1477char* localparser_hoster(char* link)
1478{
1479        debug(99, "link: %s", link);
1480//      int ret = 1;
1481        char* tmpstr = NULL, *streamurl = NULL;
1482
1483        tmpstr = command(link);
1484        tmpstr = string_newline(tmpstr);
1485        debug(99, "tmpstr: %s", tmpstr);
1486
1487        if(ostrstr(tmpstr, "gethoster2") != NULL)
1488        {
1489                tmpstr = string_replace_all("gethoster2 ", "", tmpstr, 1);
1490                streamurl = hoster(tmpstr);
1491        }
1492        else if(ostrstr(link, ".sh play ") != NULL)
1493                streamurl = ostrcat(tmpstr, NULL, 0, 0);
1494        else if(ostrstr(link, ".sh hoster ") != NULL)
1495                streamurl = hoster(tmpstr);
1496
1497        free(tmpstr), tmpstr = NULL;
1498        return streamurl;
1499}
1500
1501int localparser_search(struct skin* grid, struct skin* listbox, struct skin* countlabel, struct skin* load, char* link, char* title, char* searchstr, int flag)
1502{
1503        char* tmpstr = NULL, *menu = NULL, *search = NULL, *cmd = NULL;
1504        int ret = 1;
1505
1506        if(listbox == NULL || listbox->select == NULL || listbox->select->handle == NULL)
1507                return ret;
1508
1509        if(searchstr == NULL)
1510                search = textinputhist(_("Search"), " ", "searchhist");
1511        else
1512                search = textinputhist(_("Search"), searchstr, "searchhist");
1513
1514        if(search != NULL)
1515        {
1516                drawscreen(load, 0, 0);
1517
1518                strstrip(search);
1519                string_tolower(search);
1520                search = stringreplacechar(search, ' ', '+');
1521
1522                cmd = ostrcat(link, NULL, 0, 0);
1523
1524                if(ostrstr(cmd, "%search%") != NULL)
1525                        cmd = string_replace_all("%search%", search, cmd, 1);
1526                else
1527                        cmd = ostrcat(link, search, 0, 0);
1528
1529                debug(99, "cmd: %s", cmd);
1530                char* filename = command(cmd);
1531                filename = string_newline(filename);
1532                tmpstr = readfiletomem(filename, 1);
1533                free(cmd), cmd = NULL;
1534
1535                if(tmpstr != NULL)
1536                {
1537                        tmpstr = string_replace_all("http://atemio.dyndns.tv/", "http://imageshack.us/md/up/grd/", tmpstr, 1);
1538                        menu = ostrcat(filename, NULL, 0, 0);
1539//                      writesys(menu, tmpstr, 0);
1540                        struct tithek* tnode = (struct tithek*)listbox->select->handle;
1541                        createtithek(tnode, tnode->title, menu, tnode->pic, tnode->localname, tnode->menutitle, tnode->description, tnode->flag);
1542                        ret = 0;
1543                }
1544
1545                free(filename), filename = NULL;
1546                free(tmpstr), tmpstr = NULL;
1547        }
1548        free(search), search = NULL;
1549        return ret;
1550}
1551
1552#endif
Note: See TracBrowser for help on using the repository browser.