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

Last change on this file since 16492 was 16492, checked in by nit, 8 years ago

[titan] update tmdb and other fixes

File size: 18.9 KB
Line 
1#ifndef TITHEK_H
2#define TITHEK_H
3
4#define TITHEKPATH "/tmp/tithek"
5
6//flag 0: not used
7//flag 1: not used
8//flag 2: streamlink allgemein
9//flag 4: streamlink youtube
10//flag 1000: menu with pin
11struct tithek
12{
13        char* title;
14        char* link;
15        char* pic;
16        char* localname;
17        char* menutitle;       
18        int flag;
19        struct tithek* prev;
20        struct tithek* next;
21};
22struct tithek *tithek = NULL;
23
24struct tithek* addtithek(char *line, int count, struct tithek* last)
25{
26        //debug(1000, "in");
27        struct tithek *newnode = NULL, *prev = NULL, *node = tithek;
28        char *link = NULL, *pic = NULL, *title = NULL, *localname = NULL, *menutitle = NULL;
29        int ret = 0;
30
31        if(line == NULL) return NULL;
32
33        newnode = (struct tithek*)malloc(sizeof(struct tithek));       
34        if(newnode == NULL)
35        {
36                err("no memory");
37                return NULL;
38        }
39
40        link = malloc(MINMALLOC);
41        if(link == NULL)
42        {
43                err("no memory");
44                free(newnode);
45                return NULL;
46        }
47
48        pic = malloc(MINMALLOC);
49        if(pic == NULL)
50        {
51                err("no memory");
52                free(newnode);
53                free(link);
54                return NULL;
55        }
56
57        title = malloc(MINMALLOC);
58        if(title == NULL)
59        {
60                err("no memory");
61                free(newnode);
62                free(link);
63                free(pic);
64                return NULL;
65        }
66
67        localname = malloc(MINMALLOC);
68        if(localname == NULL)
69        {
70                err("no memory");
71                free(newnode);
72                free(link);
73                free(pic);
74                free(title);
75                return NULL;
76        }
77
78        menutitle = malloc(MINMALLOC);
79        if(menutitle == NULL)
80        {
81                err("no memory");
82                free(newnode);
83                free(link);
84                free(pic);
85                free(title);
86                free(localname);               
87                return NULL;
88        }
89
90        memset(newnode, 0, sizeof(struct tithek));
91
92        ret = sscanf(line, "%[^#]#%[^#]#%[^#]#%[^#]#%[^#]#%d", title, link, pic, localname, menutitle, &newnode->flag);
93        if(ret != 6)
94        {
95                if(count > 0)
96                {
97                        err("tithek line %d not ok or double", count);
98                }
99                else
100                {
101                        err("add tithek");
102                }
103                free(link);
104                free(pic);
105                free(title);
106                free(localname);
107                free(menutitle);
108                free(newnode);
109                return NULL;
110        }
111
112        newnode->link = ostrcat(link, "", 1, 0);
113        newnode->pic = ostrcat(pic, "", 1, 0);
114        newnode->title = ostrcat(title, "", 1, 0);
115        newnode->localname = ostrcat(localname, "", 1, 0);
116        newnode->menutitle = ostrcat(menutitle, "", 1, 0);
117
118        if(last == NULL)
119        {
120                while(node != NULL)
121                {
122                        prev = node;
123                        node = node->next;
124                }
125        }
126        else
127        {
128                prev = last;
129                node = last->next;
130        }
131
132        if(prev == NULL)
133                tithek = newnode;
134        else
135        {
136                prev->next = newnode;
137                newnode->prev = prev;
138        }
139        newnode->next = node;
140        if(node != NULL) node->prev = newnode;
141       
142        //debug(1000, "out");
143        return newnode;
144}
145
146int readtithek(const char* filename)
147{
148        debug(1000, "in");
149        FILE *fd = NULL;
150        char *fileline = NULL;
151        int linecount = 0;
152        struct tithek* last = NULL, *tmplast = NULL;
153
154        fileline = malloc(MINMALLOC);
155        if(fileline == NULL)
156        {
157                err("no memory");
158                return 1;
159        }
160
161        fd = fopen(filename, "r");
162        if(fd == NULL)
163        {
164                perr("can't open %s", filename);
165                free(fileline);
166                return 1;
167        }
168
169        while(fgets(fileline, MINMALLOC, fd) != NULL)
170        {
171                if(fileline[0] == '#' || fileline[0] == '\n')
172                        continue;
173                if(fileline[strlen(fileline) - 1] == '\n')
174                        fileline[strlen(fileline) - 1] = '\0';
175                if(fileline[strlen(fileline) - 1] == '\r')
176                        fileline[strlen(fileline) - 1] = '\0';
177
178                linecount++;
179
180                if(last == NULL) last = tmplast;
181                last = addtithek(fileline, linecount, last);
182                if(last != NULL) tmplast = last;
183        }
184
185        free(fileline);
186        fclose(fd);
187        return 0;
188}
189
190int deltithek(char* link)
191{
192        debug(1000, "in");
193        int ret = 1;
194        struct tithek *node = tithek, *prev = tithek;
195
196        while(node != NULL)
197        {
198                if(ostrcmp(link, node->link) == 0)
199                {
200                        ret = 0;
201                        if(node == tithek)
202                        {
203                                tithek = node->next;
204                                if(tithek != NULL)
205                                        tithek->prev = NULL;
206                        }
207                        else
208                        {
209                                prev->next = node->next;
210                                if(node->next != NULL)
211                                        node->next->prev = prev;
212                        }
213
214                        free(node->link);
215                        node->link = NULL;
216
217                        free(node->pic);
218                        node->pic = NULL;
219
220                        free(node->title);
221                        node->title = NULL;
222
223                        free(node->localname);
224                        node->localname = NULL;
225
226                        free(node->menutitle);
227                        node->menutitle = NULL;
228
229                        free(node);
230                        node = NULL;
231
232                        break;
233                }
234
235                prev = node;
236                node = node->next;
237        }
238
239        debug(1000, "out");
240        return ret;
241}
242
243void freetithek()
244{
245        debug(1000, "in");
246        struct tithek *node = tithek, *prev = tithek;
247
248        while(node != NULL)
249        {
250                prev = node;
251                node = node->next;
252                if(prev != NULL)
253                        deltithek(prev->link);
254        }
255        debug(1000, "out");
256}
257
258char* tithekdownload(char* link, char* localname, char* pw, int pic, int flag)
259{
260        int ret = 1;
261        char* ip = NULL, *pos = NULL, *path = NULL;
262        char* tmpstr = NULL, *localfile = NULL;
263        //unsigned char* buf = NULL;
264        int channels = 0;
265        unsigned long width = 0, height = 0, rowbytes = 0;
266
267        if(link == NULL) return NULL;
268
269        ip = string_replace("http://", "", (char*)link, 0);
270
271        if(ip != NULL)
272                pos = strchr(ip, '/');
273        if(pos != NULL)
274        {
275                pos[0] = '\0';
276                path = pos + 1;
277        }
278
279        tmpstr = ostrcat(path, NULL, 0, 0);
280
281        if(flag == 0)
282        {
283                localfile = ostrcat(TITHEKPATH, "/", 0, 0);
284                if(localname == NULL)
285                        localfile = ostrcat(localfile, basename(tmpstr), 1, 0);
286                else
287                        localfile = ostrcat(localfile, localname, 1, 0);
288        }
289        else
290        {
291                localfile = ostrcat(getconfig("rec_path", NULL), "/", 0, 0);
292                if(localname == NULL)
293                        localfile = ostrcat(localfile, basename(tmpstr), 1, 0);
294                else
295                        localfile = ostrcat(localfile, localname, 1, 0);
296        }
297
298        if(flag == 0)
299        {
300                if(!file_exist(localfile))
301                {
302                        if(pic == 1)
303                        {
304                                gethttp(ip, path, 80, localfile, pw, NULL, 0);
305                                //buf = loadjpg(localfile, &width, &height, &rowbytes, &channels, 16);
306                                //savejpg(localfile, width, height, buf);
307                                //free(buf); buf = NULL;
308                        }
309                        else
310                                gethttp(ip, path, 80, localfile, pw, NULL, 0);
311                }
312        }
313        else
314        {
315                if(file_exist(localfile))
316                        ret = textbox(_("Message"), _("File exist, overwrite?"), _("OK"), getrcconfigint("rcok", NULL), _("EXIT"), getrcconfigint("rcexit", NULL), NULL, 0, NULL, 0, 600, 200, 0, 0);
317
318                if(ret == 1)
319                        screendownload("Download", ip, path, 80, localfile, pw, 0);
320        }
321
322        free(ip); ip = NULL;
323        free(tmpstr); tmpstr = NULL;
324
325        return localfile;
326}
327
328int createtithekplay(char* titheklink, struct skin* grid, struct skin* listbox, struct skin* countlabel)
329{
330        int gridbr = 0, posx = 0, count = 0, sumcount = 0;
331        struct skin* tmp = NULL;
332        char* tithekfile = NULL;
333        char* tmpstr = NULL;
334
335        tithekfile = tithekdownload(titheklink, NULL, HTTPAUTH, 0, 0);
336
337        delmarkedscreennodes(grid, 1);
338        freetithek();
339        if(readtithek(tithekfile) != 0) return 1;
340
341        struct tithek* titheknode = tithek;
342
343        while(titheknode != NULL)
344        {
345                tmp = addlistbox(grid, listbox, tmp, 1);
346                if(tmp != NULL)
347                {
348                        sumcount++;
349                        count++;
350                        if(gridbr == 0)
351                                tmp->type = GRIDBR;
352                        gridbr = 1;
353                        tmp->wrap = YES;
354
355                        tmp->picheight = 230;
356                        tmp->picwidth = 370;
357
358                        tmp->height = 280;
359                        tmp->width = 390;
360                        tmp->prozwidth = 0;
361                        //tmp->bgcol = 0xffffff;
362                        tmp->bgspace = 1;
363                        tmp->vspace = 10;
364                        tmp->hspace = 10;
365                        tmp->posx = posx;
366                        //tmp->fontcol = 0x0000ff;
367                        tmp->halign = CENTER;
368                        tmp->valign = TEXTBOTTOM;
369                        changetext(tmp, titheknode->title);
370                        tmp->handle = (char*)titheknode;
371                        posx += tmp->width;
372                        if(count >= 3)
373                        {
374                                count = 0;
375                                posx = 0;
376                                gridbr = 0;
377                        }
378                }
379                titheknode = titheknode->next;
380        }
381
382        tmpstr = oitoa(sumcount);
383        changetext(countlabel, tmpstr);
384        free(tmpstr); tmpstr = NULL;
385
386        free(tithekfile); tithekfile = NULL;
387        return 0;
388}
389
390void screentithekplay(char* titheklink, char* title, int first)
391{
392        int rcret = -1, oaktline = 1, oaktpage = -1, ogridcol = 0;
393       
394        if(first == 1)
395        {
396                rcret = servicestop(status.aktservice, 1, 1);
397                if(rcret == 1) return;
398        }
399
400        struct skin* grid = getscreen("titheklist");
401        struct skin* listbox = getscreennode(grid, "listbox");
402        struct skin* countlabel = getscreennode(grid, "countlabel");
403        struct skin* tmp = NULL;
404        char* tithekpic = NULL;
405       
406        if(titheklink == NULL) return;
407       
408        listbox->aktpage = -1;
409        listbox->aktline = 1;
410        listbox->gridcol = 0;
411        listbox->select = NULL;
412
413        if(createtithekplay(titheklink, grid, listbox, countlabel) != 0) return;
414                               
415        drawscreen(grid, 0);
416        addscreenrc(grid, listbox);
417                               
418        while(1)
419        {
420                changetitle(grid, _(title));
421                if(listbox->select != NULL && listbox->select->handle != NULL)
422                {
423                        tmp = listbox->select;
424                        while(tmp != NULL)
425                        {
426                                if(tmp->pagecount != listbox->aktpage) break;
427                                if(tmp->handle != NULL)
428                                {
429                                        tithekpic = tithekdownload(((struct tithek*)tmp->handle)->pic, ((struct tithek*)tmp->handle)->localname, "aXBrLUdaRmg6RkhaVkJHaG56ZnZFaEZERlRHenVpZjU2NzZ6aGpHVFVHQk5Iam0=", 1, 0);
430                                        changepicmem(tmp, tithekpic, 60, 0);
431                                        free(tithekpic); tithekpic = NULL;
432                                }
433                                tmp = tmp->prev;
434                        }
435                        tmp = listbox->select;
436                        while(tmp != NULL)
437                        {
438                                if(tmp->pagecount != listbox->aktpage) break;
439                                if(tmp->handle != NULL)
440                                {
441                                        tithekpic = tithekdownload(((struct tithek*)tmp->handle)->pic, ((struct tithek*)tmp->handle)->localname, "aXBrLUdaRmg6RkhaVkJHaG56ZnZFaEZERlRHenVpZjU2NzZ6aGpHVFVHQk5Iam0=", 1, 0);
442                                        changepicmem(tmp, tithekpic, 60, 0);
443                                        free(tithekpic); tithekpic = NULL;
444                                }
445                                tmp = tmp->next;
446                        }
447
448                        drawscreen(grid, 0);
449                }
450               
451                int count = getfilecount(TITHEKPATH);
452                if(count > 500)
453                        delallfiles(TITHEKPATH, ".jpg");
454               
455                rcret = waitrc(grid, 0, 0);
456
457                if(rcret == getrcconfigint("rcexit", NULL)) break;
458
459                if(rcret == getrcconfigint("rcred", NULL))
460                {
461                        if(listbox->select != NULL && listbox->select->handle != NULL)
462                        {
463                                if(((struct tithek*)listbox->select->handle)->flag == 2)
464                                {
465                                        if(status.security == 1)
466                                        {
467                                                char* tmpstr = tithekdownload((((struct tithek*)listbox->select->handle)->link), NULL, NULL, 0, 1);
468                                                free(tmpstr); tmpstr = NULL;
469                                                drawscreen(grid, 0);
470                                        }
471                                        else
472                                                textbox(_("Message"), _("Registration needed, please contact Atemio !"), _("OK"), getrcconfigint("rcok", NULL), _("EXIT"), getrcconfigint("rcexit", NULL), NULL, 0, NULL, 0, 1000, 200, 0, 0);
473                                }
474                                else if(((struct tithek*)listbox->select->handle)->flag == 4)
475                                {
476                                        if(status.security == 1)
477                                        {
478                                                char* tmpstr = NULL, *tmpstr1 = NULL, *tmpstr2 = NULL;
479                                                tmpstr = ostrcat(((struct tithek*)listbox->select->handle)->link, NULL, 0, 0);
480                                                if(tmpstr != NULL) tmpstr1 = getstreamurl(tmpstr, NULL, NULL, 1);
481                                                tmpstr2 = changefilenameext(((struct tithek*)tmp->handle)->localname, ".mp4");
482                                                free(tmpstr); tmpstr = NULL;
483                                                       
484                                                if(tmpstr1 != NULL)
485                                                {
486                                                        char* tmpstr = tithekdownload(tmpstr1, tmpstr2, NULL, 0, 1);
487                                                        free(tmpstr); tmpstr = NULL;
488                                                        drawscreen(grid, 0);
489                                                }
490                                                else
491                                                        textbox(_("Message"), _("Can't get Streamurl !"), _("OK"), getrcconfigint("rcok", NULL), _("EXIT"), getrcconfigint("rcexit", NULL), NULL, 0, NULL, 0, 600, 200, 0, 0);
492                                                free(tmpstr1); tmpstr1 = NULL;
493                                                free(tmpstr2); tmpstr2 = NULL;
494                                        }
495                                        else
496                                                textbox(_("Message"), _("Registration needed, please contact Atemio !"), _("OK"), getrcconfigint("rcok", NULL), _("EXIT"), getrcconfigint("rcexit", NULL), NULL, 0, NULL, 0, 1000, 200, 0, 0);
497                                }
498                        }
499                }
500
501                if(rcret == getrcconfigint("rcok", NULL))
502                {
503                        if(listbox->select != NULL && listbox->select->handle != NULL)
504                        {
505                                clearscreen(grid);
506                                if(((struct tithek*)listbox->select->handle)->flag == 2)
507                                {
508                                        if(status.security == 1)
509                                        {
510                                                if(textbox(_("Message"), _("Start playback"), _("OK"), getrcconfigint("rcok", NULL), _("EXIT"), getrcconfigint("rcexit", NULL), NULL, 0, NULL, 0, 600, 200, 0, 0) == 1)
511                                                        screenplay((((struct tithek*)listbox->select->handle)->link), 2, 0);                           
512                                        }
513                                        else
514                                                textbox(_("Message"), _("Registration needed, please contact Atemio !"), _("OK"), getrcconfigint("rcok", NULL), _("EXIT"), getrcconfigint("rcexit", NULL), NULL, 0, NULL, 0, 1000, 200, 0, 0);
515                                }
516                                else if(((struct tithek*)listbox->select->handle)->flag == 4)
517                                {
518                                        if(status.security == 1)
519                                        {
520                                                char* tmpstr = ostrcat(((struct tithek*)listbox->select->handle)->link, NULL, 0, 0);
521                                                char* tmpstr1 = NULL;
522                                                if(tmpstr != NULL) tmpstr1 = getstreamurl(tmpstr, NULL, NULL, 1);
523                                                free(tmpstr); tmpstr = NULL;
524                                                       
525                                                if(tmpstr1 != NULL)
526                                                {
527                                                        if(textbox(_("Message"), _("Start playback"), _("OK"), getrcconfigint("rcok", NULL), _("EXIT"), getrcconfigint("rcexit", NULL), NULL, 0, NULL, 0, 600, 200, 0, 0) == 1)
528                                                                screenplay(tmpstr1, 2, 0);                             
529                                                }
530                                                else
531                                                        textbox(_("Message"), _("Can't get Streamurl !"), _("OK"), getrcconfigint("rcok", NULL), _("EXIT"), getrcconfigint("rcexit", NULL), NULL, 0, NULL, 0, 600, 200, 0, 0);
532                                                free(tmpstr1); tmpstr1 = NULL;
533                                        }
534                                        else
535                                                textbox(_("Message"), _("Registration needed, please contact Atemio !"), _("OK"), getrcconfigint("rcok", NULL), _("EXIT"), getrcconfigint("rcexit", NULL), NULL, 0, NULL, 0, 1000, 200, 0, 0);                 
536                                }
537                                else if((((struct tithek*)listbox->select->handle)->flag == 5) || (((struct tithek*)listbox->select->handle)->flag == 6) || (((struct tithek*)listbox->select->handle)->flag == 7) || (((struct tithek*)listbox->select->handle)->flag == 8))
538                                {
539                                        if(status.security == 1)
540                                        {
541                                                char* tmpstr = ostrcat(((struct tithek*)listbox->select->handle)->link, NULL, 0, 0);
542                                                char* tmpstr1 = NULL;
543                                               
544                                                if(((struct tithek*)listbox->select->handle)->flag == 5)
545                                                {
546                                                        if(tmpstr != NULL) tmpstr1 = getstreamurl(tmpstr, "http://rtl2now.rtl2.de", "rtl2now", 2);
547                                                }
548                                                else if(((struct tithek*)listbox->select->handle)->flag == 6)
549                                                {
550                                                        if(tmpstr != NULL) tmpstr1 = getstreamurl(tmpstr, "http://www.superrtlnow.de", "superrtlnow", 2);
551                                                }
552                                                else if(((struct tithek*)listbox->select->handle)->flag == 7)
553                                                {
554                                                        if(tmpstr != NULL) tmpstr1 = getstreamurl(tmpstr, "http://rtl-now.rtl.de", "rtlnow", 2);
555                                                }
556                                                else if(((struct tithek*)listbox->select->handle)->flag == 8)
557                                                {
558                                                        if(tmpstr != NULL) tmpstr1 = getstreamurl(tmpstr, "http://www.voxnow.de", "voxnow", 2);
559                                                }
560       
561                                                free(tmpstr); tmpstr = NULL;
562                                                       
563                                                if(tmpstr1 != NULL)
564                                                {
565                                                        if(textbox(_("Message"), _("Start playback"), _("OK"), getrcconfigint("rcok", NULL), _("EXIT"), getrcconfigint("rcexit", NULL), NULL, 0, NULL, 0, 600, 200, 0, 0) == 1)
566                                                                screenplay(tmpstr1, 2, 0);                             
567                                                }
568                                                else
569                                                        textbox(_("Message"), _("Can't get Streamurl !"), _("OK"), getrcconfigint("rcok", NULL), _("EXIT"), getrcconfigint("rcexit", NULL), NULL, 0, NULL, 0, 600, 200, 0, 0);
570                                                free(tmpstr1); tmpstr1 = NULL;
571                                        }
572                                        else
573                                                textbox(_("Message"), _("Registration needed, please contact Atemio !"), _("OK"), getrcconfigint("rcok", NULL), _("EXIT"), getrcconfigint("rcexit", NULL), NULL, 0, NULL, 0, 1000, 200, 0, 0);                 
574                                }
575                                else
576                                {
577                                        int pincheck = 0;
578                                        if(((struct tithek*)listbox->select->handle)->flag == 1000)
579                                                pincheck = screenpincheck(0, NULL);
580                                        if(pincheck == 0)
581                                        {
582                                                oaktpage = listbox->aktpage;
583                                                oaktline = listbox->aktline;
584                                                ogridcol = listbox->gridcol;
585                                                char* tmpstr = ostrcat(((struct tithek*)listbox->select->handle)->link, NULL, 0, 0);
586                                                char* tmpstr1 = ostrcat(((struct tithek*)listbox->select->handle)->menutitle, " - ", 0, 0);                                     
587                                                char* tmpstr2 = ostrcat(tmpstr1, ((struct tithek*)listbox->select->handle)->title, 1, 0);
588                                                screentithekplay(tmpstr, tmpstr2, 0);
589                                                free(tmpstr); tmpstr = NULL;
590                                                free(tmpstr2); tmpstr2 = NULL;                                 
591                                                if(createtithekplay(titheklink, grid, listbox, countlabel) != 0) break;
592                                                listbox->aktpage = oaktpage;
593                                                listbox->aktline = oaktline;
594                                                listbox->gridcol = ogridcol;
595                                                addscreenrc(grid, listbox);
596                                        }
597                                }
598                                drawscreen(grid, 0);                   
599                        }                       
600                }
601        }
602
603        freetithek();
604        delmarkedscreennodes(grid, 1);
605        delownerrc(grid);
606        clearscreen(grid);
607
608        if(first == 1)
609        {
610                delallfiles("/tmp/tithek", ".list");
611                servicecheckret(servicestart(status.lastservice->channel, NULL, NULL, 0), 0);
612        }
613}
614
615// flag 1 = youtube streamlink
616// flag 2 = rtlnow streamlinksrc
617// flag 3 = rtlnow streamlink
618char* getstreamurl(char* link, char* url, char* name, int flag)
619{
620        debug(99, "link(%d): %s", flag, link);
621        char* ip = NULL, *pos = NULL, *path = NULL;
622       
623        ip = string_replace("http://", "", (char*)link, 0);
624
625        if(ip != NULL)
626                pos = strchr(ip, '/');
627        if(pos != NULL)
628        {
629                pos[0] = '\0';
630                path = pos + 1;
631        }
632
633        char* tmpstr = NULL;
634        tmpstr = gethttp(ip, path, 80, NULL, NULL, NULL, 0);
635        char* streamurl = NULL;
636               
637        if(flag == 1)
638        {
639                tmpstr = string_resub("\": \"url=", "\", \"", tmpstr, 0);
640       
641                while(string_find(",url=", tmpstr))
642                        tmpstr = string_replace(",url=", "\nurl=", tmpstr, 1);
643       
644                tmpstr = string_decode(tmpstr, 0);
645       
646                int count = 0;
647                int i = 0;
648                struct splitstr* ret1 = NULL;
649                ret1 = strsplit(tmpstr, "\n", &count);
650                if(ret1 != NULL)
651                {
652                        int max = count;
653                        for(i = 0; i < max; i++)
654                        {
655                                if(string_find("type=video/mp4",(&ret1[i])->part))
656                                {
657                                        streamurl = ostrcat(streamurl, (&ret1[i])->part, 1, 0);
658                                        int count2 = 0;
659                                        struct splitstr* ret2 = NULL;
660                                        ret2 = strsplit((&ret1[i])->part, "+", &count2);
661                                        if(ret2 != NULL)
662                                        {
663                                                free(streamurl);
664                                                streamurl = ostrcat("", (&ret2[0])->part, 0, 0);
665                                                free(ret2); ret2 = NULL;
666                                        }
667                                }
668                        }
669                        free(ret1); ret1 = NULL;
670                       
671                        streamurl = string_replace("url=", "", streamurl, 1);
672                }
673                free(tmpstr); tmpstr = NULL;
674        }
675        else if(flag == 2)
676        {
677                tmpstr = string_resub("data:'", "',", tmpstr, 0);
678                debug(99, "tmpstr: %s", tmpstr);
679
680                htmldecode(tmpstr, tmpstr);
681                tmpstr = ostrcat(url, tmpstr, 0, 1);
682                debug(99, "streamurl: %s", tmpstr);
683                streamurl = getstreamurl(tmpstr, url, name, 3);
684                free(tmpstr); tmpstr = NULL;
685        }
686        else if(flag == 3)
687        {
688//              string_resub("delivery=\"streaming\"><![CDATA[", "]]></filename>", tmpstr, 0);
689                tmpstr = string_resub("rtmpe://", ".f4v", tmpstr, 0);
690                char* tmpstr9 = NULL;
691                tmpstr9 = ostrcat(tmpstr9, tmpstr, 1, 0);
692                free(tmpstr), tmpstr = NULL;
693                tmpstr = ostrcat("rtmpe://", tmpstr9, 0, 0);
694                tmpstr = ostrcat(tmpstr, ".f4v", 1, 0);         
695                free(tmpstr9), tmpstr9 = NULL;
696
697                debug(99, "tmpstr: %s", tmpstr);
698
699                int count = 0;
700                int i = 0;
701                struct splitstr* ret1 = NULL;
702                ret1 = strsplit(tmpstr, "/", &count);
703                if(ret1 != NULL)
704                {
705                        int max = count;
706                        char* link = NULL;
707                        char* path = NULL;
708                        for(i = 0; i < max; i++)
709                        {
710                                if(i < 3)
711                                {
712                                        if(count > i)
713                                                link = ostrcat(link, (&ret1[i])->part, 1, 0);
714
715                                        if(i == 0)
716                                                link = ostrcat(link, "//", 1, 0);
717                                        else
718                                                link = ostrcat(link, "/", 1, 0);
719                                }
720                                else
721                                {
722                                        if(count > i)
723                                                path = ostrcat(path, (&ret1[i])->part, 1, 0);
724                                        if(i != max - 1)
725                                                path = ostrcat(path, "/", 1, 0);
726                                }
727                        }
728                        free(ret1), ret1 = NULL;
729
730                        debug(99, "link: %s", link);
731                        debug(99, "path: %s", path);
732       
733                        streamurl = ostrcat(link, " swfVfy=1 playpath=mp4:", 0, 0);
734                        streamurl = ostrcat(streamurl, path, 1, 0);
735                        streamurl = ostrcat(streamurl, " app=", 1, 0);
736                        streamurl = ostrcat(streamurl, name, 1, 0);
737                        streamurl = ostrcat(streamurl, "/_definst_ pageUrl=", 1, 0);
738                        streamurl = ostrcat(streamurl, url, 1, 0);
739                        streamurl = ostrcat(streamurl, "/p/ tcUrl=", 1, 0);
740                        streamurl = ostrcat(streamurl, link, 1, 0);
741                        streamurl = ostrcat(streamurl, " swfUrl=", 1, 0);
742                        streamurl = ostrcat(streamurl, url, 1, 0);
743                        streamurl = ostrcat(streamurl, "/includes/vodplayer.swf", 1, 0);               
744       
745                        if(link != NULL)
746                                free(link), link = NULL;
747       
748                        if(path != NULL)
749                                free(path), path = NULL;
750                }
751                free(tmpstr); tmpstr = NULL;
752                debug(99, "streamurl: %s", streamurl);
753        }
754        return streamurl;
755}
756
757#endif
Note: See TracBrowser for help on using the repository browser.