source: titan/plugins/imdb/imdb.h @ 14075

Last change on this file since 14075 was 14075, checked in by nit, 12 years ago

fix

File size: 13.4 KB
Line 
1#ifndef IMDB_H
2#define IMDB_H
3
4extern struct skin* skin;
5       
6char* imdbhtml_decode(char* input, int free1)
7{
8        if(input == NULL)
9        {
10                return input;
11        }
12
13        while(string_find("&",input))
14        {
15                printf("00 %s\n",input);       
16                input = string_replace("&", "und", input, 1);
17                printf("01 %s\n",input);       
18        }
19
20        while(string_find(">",input))
21        {
22                printf("00 %s\n",input);       
23                input = string_replace(">", ">", input, 1);
24                printf("01 %s\n",input);       
25        }
26
27        while(string_find("<",input))
28        {
29                printf("00 %s\n",input);       
30                input = string_replace("&lt;", "<", input, 1);
31                printf("01 %s\n",input);       
32        }
33       
34        while(string_find("&quot;",input))
35        {
36                printf("00 %s\n",input);       
37                input = string_replace("&quot;", "\"", input, 1);
38                printf("01 %s\n",input);       
39        }
40
41        while(string_find("&#x",input))
42        {
43                printf("11 %s\n",input);       
44                input = string_replace("&#x", "%", input, 1);
45                printf("22 %s\n",input);       
46        }
47        while(string_find("&#",input))
48        {
49                printf("33 %s\n",input);       
50                input = string_replace("&#", "%", input, 1);
51                printf("44 %s\n",input);       
52        }
53       
54        htmldecode(input,input);
55
56        while(string_find(";",input))
57        {
58                printf("55 %s\n",input);       
59                input = string_replace(";", "", input, 1);
60                printf("66 %s\n",input);       
61        }
62
63        debug(1000, "out");
64        return input;
65}
66
67char* string_striptags(char* filename)
68{
69        debug(1000, "in");
70        int i, len_filename;
71
72        if(filename == NULL) return 0;
73       
74        len_filename = strlen(filename);
75
76        int skip =0;
77        for(i = 0; (i) < len_filename; i++)
78        {
79                if(filename[i] == '<')
80                {
81//                      printf("found < in string\n");
82                        skip = 1;
83                }
84                else if(filename[i] == '>')     
85                {
86//                      printf("found > in string\n");
87                        skip = 0;
88                        filename[i] = ' ';
89                }
90                if(skip == 1)
91                        filename[i] = ' ';
92        }       
93
94        debug(1000, "out");
95        return strstrip(filename);     
96}
97
98char* string_resub(char* str,char* str2, char* filename)
99{
100        debug(1000, "in");
101        int i, len_str, len_filename;
102
103        if(str == NULL || str2 == NULL || filename == NULL) return 0;
104
105        len_str = strlen(str);
106        len_filename = strlen(filename);
107
108        int count = 0;
109        for(i = 0; (i + len_str) < len_filename; i++)
110        {
111                if(strncmp(filename + i, str, len_str) == 0 && count == 0)
112                {
113                        count = i + len_str;
114                        filename[i] = ' ';
115                }
116                else if(count == i && count != 0)
117                {
118                        count = i - len_str;
119                        break;
120                }
121                else
122                        filename[i] = ' ';
123        }
124        len_str = strlen(str2);
125
126        for(i = 0; (i + len_str) < len_filename; i++)
127        {
128                if(strncmp(filename + i, str2, len_str) == 0 && i >= count)
129                {
130                        filename[i] = '\0';
131                        break;
132                }
133        }       
134
135        debug(1000, "out");
136        return strstrip(filename);
137}
138
139char* screensearch(char* input)
140{
141        char* lastline = NULL;
142        char* tmpstr = NULL;
143        if(input != NULL)
144                lastline = textinput(_("Imdb Suche"), input);
145        else
146                lastline = textinput(_("Imdb Suche"), "");
147
148        return lastline;
149}
150
151void imdb()
152{
153        int rcret = 0;
154        drawscreen(skin, 0);
155        setfbtransparent(255);
156//NIT: muß wieder richtig gesetzt werden
157        status.hangtime = 99999;
158        struct skin* blackscreen = getscreen("blackscreen");
159        drawscreen(blackscreen, 0);
160
161        // main screen
162        struct skin* imdbskin = getscreen("imdb");
163        struct skin* skin_plot = getscreennode(imdbskin, "plot");
164        struct skin* skin_title = getscreennode(imdbskin, "title");
165        struct skin* skin_director = getscreennode(imdbskin, "director");
166        struct skin* skin_writers = getscreennode(imdbskin, "writers");
167        struct skin* skin_genre = getscreennode(imdbskin, "genre");
168        struct skin* skin_tagline = getscreennode(imdbskin, "tagline");
169        struct skin* skin_releasetime = getscreennode(imdbskin, "releasetime");
170        struct skin* skin_bigcover = getscreennode(imdbskin, "bigcover");
171        struct skin* skin_cover = getscreennode(imdbskin, "cover");
172        struct skin* skin_cast = getscreennode(imdbskin, "cast");
173
174//if(ostrcmp("vfdisplay", name) == 0) return 0;
175//tmpstr = ostrcat(tmpstr, "", 1, 0);
176
177        char* input = NULL;
178
179        char* url = NULL;
180        char* apiSearchTV = NULL;
181        char* apiImdbLookup = NULL;
182        char* apiSearch = NULL;
183        char* localfile = NULL;
184        char* fetchurl = NULL;
185        char* search = NULL;
186        char* tmpstr = NULL;
187        char* imdbid = NULL;
188        char* title = NULL;
189        char* plot = NULL;
190        char* director = NULL;
191        char* writers = NULL;
192        char* genre = NULL;
193        char* tagline = NULL;
194        char* releasetime = NULL;
195        char* pagebigcover = NULL;
196        char* bigcover = NULL;
197        char* cover = NULL;
198        char* cast = NULL;
199
200
201        input = getepgakttitle();
202//      input = screensearch("Rambo");
203        printf("input: %s\n", input);
204//      stringreplacechar(input, ' ', '%20');
205        input = string_replace(" ", "%20", input, 1);
206//      htmlencode(input);
207        printf("input: %s\n", input);
208
209//drawscreen(imdbskin, 0);
210//imdbskin->hidden = YES;
211//      input = ostrcat("", "Days+of+Summer", 0, 0);
212        url = ostrcat(url, "www.imdb.de", 1, 0);
213
214        apiSearchTV = ostrcat("", "/search/title?title=<title>&title_type=tv_series", 0, 0);
215        apiImdbLookup = ostrcat("", "/title/tt", 0, 0);
216        apiSearch = ostrcat("", "/find?s=tt;q=", 0, 0);
217        localfile = ostrcat("", "/tmp/cache.getMovieByTitle.html", 0, 0);
218        search = ostrcat(apiSearch, input, 0, 0);
219        printf("search: %s\n", search);
220        tmpstr = get_ip(url);
221        printf("get_ip(url): %s\n", tmpstr);
222        gethttp(tmpstr, search, 80, localfile, NULL, NULL, 0);
223        free(tmpstr); tmpstr = NULL;
224//      gethttp(url, search, 80, localfile, NULL, NULL, 0);
225
226
227        tmpstr = readfiletomem(localfile, 1);
228
229        if(string_find("<title>IMDb Title Search</title>",tmpstr))
230        {
231                imdbid = ostrcat(tmpstr, "", 0, 0);
232                string_resub("<a href=\"/title/tt","/",imdbid);
233                strstrip(imdbid);
234                printf("imdbid: %s\n", imdbid);
235        }
236
237        free(tmpstr), tmpstr = NULL;
238////////////////////
239        search = ostrcat(apiImdbLookup, imdbid, 0, 0);
240        search = ostrcat(search, "/", 0, 0);
241
242        localfile = ostrcat("", "/tmp/cache.getMoviesByImdbId.html", 0, 0);
243        printf("search: %s\n", search);
244        printf("url: %s\n", get_ip(url));
245        printf("localfile: %s\n", localfile);
246
247//      gethttp(get_ip(url), search, 80, localfile, NULL, NULL, 0);
248//      gethttp(url, search, 80, localfile, NULL, NULL, 0);
249        unlink(localfile);
250//cache.getMoviesByImdbId.html
251        char* cmd = NULL;
252        cmd = ostrcat(cmd, "wget http://", 1, 0);
253        cmd = ostrcat(cmd, url, 1, 0);
254        cmd = ostrcat(cmd, search, 1, 0);
255        cmd = ostrcat(cmd, " -O ", 1, 0);
256        cmd = ostrcat(cmd, localfile, 1, 0);
257        printf("cmd: %s\n",cmd);
258        system(cmd);
259        free(cmd), cmd = NULL;
260//      tmpstr = string_strip_whitechars(readfiletomem(localfile, 1));
261        tmpstr = readfiletomem(localfile, 1);
262
263        title = ostrcat(tmpstr, "", 0, 0);
264        string_resub("<title>","</title>",title);
265        printf("title: %s\n", title);
266        title = imdbhtml_decode(title,1);
267        printf("title: %s\n", title);
268        changetext(skin_title, title);
269
270////////////////////
271        director = ostrcat(tmpstr, "", 0, 0);
272//      string_resub("Director:","</div>",director);   
273        string_resub("Regisseur:","</div>",director);
274        string_striptags(director);
275        printf("director: %s\n", director);
276        director = imdbhtml_decode(director,1);
277        printf("director: %s\n", director);
278        changetext(skin_director, director);
279
280
281////////////////////
282
283        writers = ostrcat(tmpstr, "", 0, 0);
284//      string_resub("<h5>Writers","</div>",writers);
285        string_resub("<h5>Drehbuchautor","</div>",writers);
286        printf("writers1: %s\n", writers);
287        string_resub("<div class=\"info-content\">","</div>",writers);
288        printf("writers2: %s\n", writers);
289
290        string_striptags(writers);
291        printf("writers3: %s\n", writers);
292        writers = imdbhtml_decode(writers,1);
293        printf("writers: %s\n", writers);       
294        changetext(skin_writers, writers);
295////////////////////
296
297        genre = ostrcat(tmpstr, "", 0, 0);
298        string_resub("<h5>Genre:</h5>","</div>",genre);
299        printf("genre1: %s\n", genre);
300        string_striptags(genre);
301        printf("genre2: %s\n", genre);
302        genre = imdbhtml_decode(genre,1);
303        printf("genre: %s\n", genre);
304        changetext(skin_genre, genre);
305
306/*
307        genre = string_replace("&#x", "%", genre, 1);
308        printf("genre2222: %s\n", genre);
309        char* genre_tmp = NULL;
310        genre = string_replace(";", " ", genre, 1);
311        genre_tmp = ostrcat(genre_tmp, genre, 1, 0);
312        printf("genre333: %s\n", genre_tmp);           
313//      free(genre),genre = NULL;
314
315        htmldecode(genre,genre_tmp);
316        printf("genre444: %s\n", genre);
317//      free(genre_tmp),genre_tmp = NULL;               
318        changetext(skin_genre, genre);
319*/     
320////////////////////
321
322/*
323
324        tagline = ostrcat(tmpstr, "", 0, 0);
325        string_resub("<h4 class=\"inline\">Taglines:</h4>","<span class",tagline);
326
327        strstrip(tagline);
328        printf("tagline: %s\n", tagline);
329        changetext(skin_tagline, tagline);
330
331        releasetime = ostrcat(tmpstr, "", 0, 0);
332        string_resub("<h4 class=\"inline\">Release Date:</h4>","</time>",releasetime);
333        count2 = 0;     
334        tmpstr2 = ostrcat(tmpstr2, releasetime, 1, 0);
335        ret2 = strsplit(tmpstr2, "<>", &count2);
336        printf("releasetime1: %s\n", (&ret2[2])->part);
337        strstrip(releasetime);
338        printf("releasetime: %s\n", releasetime);
339        changetext(skin_releasetime, (&ret2[2])->part);
340*/
341
342        releasetime = ostrcat(tmpstr, "", 0, 0);
343        string_resub("<h5>Premierendatum:</h5>","<a class=",releasetime);
344        printf("releasetime1: %s\n", releasetime);
345
346        string_striptags(releasetime);
347        printf("releasetime2: %s\n", releasetime);
348        releasetime = imdbhtml_decode(releasetime,1);
349        printf("releasetime: %s\n", releasetime);
350        changetext(skin_releasetime, releasetime);
351
352////////////////////
353
354        cast = ostrcat(tmpstr, "", 0, 0);
355        string_resub("<h3>Besetzung</h3>&nbsp;","</td></tr></table>",cast);
356        string_resub("<div class=\"info-content block\"><table class=\"cast\">","</a></td></tr>",cast);
357
358        cast = string_replace("...", "als", cast, 1);
359
360        printf("cast1: %s\n", cast);
361
362        string_striptags(cast);
363        string_strip_whitechars(cast);
364        printf("cast2: %s\n", cast);
365        cast = imdbhtml_decode(cast,1);
366        printf("cast: %s\n", cast);
367        changetext(skin_cast, cast);
368       
369////////////////////
370
371
372        pagebigcover = ostrcat(tmpstr, "", 0, 0);
373//      string_resub("href=\"/media/rm","/",pagebigcover);
374        string_resub("/media/rm","/",pagebigcover);
375
376        strstrip(pagebigcover);
377        printf("pagebigcover: %s\n", pagebigcover);
378
379/*
380http://ia.media-imdb.com/images/M/MV5BMjE2MzU3Nzk4M15BMl5BanBnXkFtZTcwODcxNTI5Mw@@._V1_.jpg
381<link rel="image_src" href="
382
383//      char* tmpstr3 = NULL;
384//      tmpstr3 = ostrcat("href=\"/media/rm", pagebigcover, 0, 0);
385//      tmpstr3 = ostrcat(tmpstr3, "/tt", 1, 0);
386//      tmpstr3 = ostrcat(tmpstr3, imdbid, 1, 0);
387//      tmpstr3 = ostrcat(tmpstr3, "\"    ><img src=\"", 1, 0);
388
389        cover = ostrcat(tmpstr, "", 0, 0);
390        string_resub(tmpstr3,"\"",cover);
391
392        printf("tmpstr3: %s\n", tmpstr3);
393        strstrip(cover);
394        printf("cover: %s\n", cover);
395
396char* filename = NULL;
397filename = ostrcat("wget ", cover, 0, 0);
398filename = ostrcat(filename, " -O /tmp/cover.jpg", 1, 0);
399system(filename);       
400changepic(skin_cover, "/tmp/cover.jpg");
401////////////////////
402
403*/
404        char* filename = NULL;
405        search = ostrcat("/media/rm", pagebigcover, 0, 0);
406        search = ostrcat(search, "/tt", 1, 0);
407        search = ostrcat(search, imdbid, 1, 0);
408        search = ostrcat(search, "/", 1, 0);
409
410        localfile = ostrcat("", "/tmp/cache.getpageBigCoverHtml.html", 0, 0);
411        printf("search: %s\n", search);
412        printf("url: %s\n", get_ip(url));
413        printf("localfile: %s\n", localfile);
414
415
416//NIT: get_ip braucht ein free
417        gethttp(get_ip(url), search, 80, localfile, NULL, NULL, 0);
418//      gethttp(url, search, 80, localfile, NULL, NULL, 0);
419        bigcover = readfiletomem(localfile, 1);
420        string_resub("<link rel=\"image_src\" href=\"","\"",bigcover);
421        strstrip(bigcover);
422        printf("bigcover: %s\n", bigcover);
423
424        unlink("/tmp/bigcover.jpg");
425        filename = ostrcat("wget ", bigcover, 0, 0);
426        filename = ostrcat(filename, " -O /tmp/bigcover.jpg", 1, 0);
427        system(filename);
428
429        rcret = servicestop(status.aktservice, 1, 0);
430        if(rcret == 1) return;
431
432changepic(skin_cover, "/tmp/bigcover.jpg");
433////////////////////
434
435//      free(tmpstr), tmpstr = NULL;
436        search = ostrcat(apiImdbLookup, imdbid, 0, 0);
437        search = ostrcat(search, "/plotsummary", 1, 0);
438
439        localfile = ostrcat("", "/tmp/cache.getPlot.html", 0, 0);
440        printf("search: %s\n", search);
441        printf("url: %s\n", get_ip(url));
442        printf("localfile: %s\n", localfile);
443//      gethttp(get_ip(url), search, 80, localfile, NULL, NULL, 0);
444//      gethttp(url, search, 80, localfile, NULL, NULL, 0);
445
446        unlink(localfile);
447        cmd = ostrcat(cmd, "wget http://", 1, 0);
448        cmd = ostrcat(cmd, url, 1, 0);
449        cmd = ostrcat(cmd, search, 1, 0);
450        cmd = ostrcat(cmd, " -O ", 1, 0);
451        cmd = ostrcat(cmd, localfile, 1, 0);
452        printf("cmd: %s\n",cmd);
453        system(cmd);
454        free(cmd), cmd = NULL;
455       
456       
457        plot = readfiletomem(localfile, 1);
458        string_resub("<div id=\"swiki.2.1\">","</div>",plot);
459        printf("plot1: %s\n", plot);
460        string_striptags(plot);
461        printf("plot: %s\n", plot);
462        plot = imdbhtml_decode(plot,1);
463        printf("plot: %s\n", plot);
464        changetext(skin_plot, plot);   
465       
466//      if(string_find("<p class=\"plotpar\">",plot))
467//      {
468//              string_resub("<p class=\"plotpar\">","<i>",plot);
469//              strstrip(plot);
470//              printf("plot: %s\n", plot);
471//changetext(skin_plot, plot);
472//      }
473
474drawscreen(imdbskin, 0);
475//imdbskin->hidden = NO;
476        struct skin* tmp = NULL;
477        while(1)
478        {
479//              addscreenrc(mc_videoplayer_settings, tmp);
480                rcret = waitrc(imdbskin, 0, 0);
481//              tmp = listbox->select;
482       
483                if(rcret == getrcconfigint("rcexit", NULL)) break;
484                if(rcret == getrcconfigint("rcok", NULL))
485                {
486                        break;
487                }
488  }
489
490
491        printf("done:\n");
492
493        free(tmpstr), tmpstr = NULL;
494        free(url), url = NULL;
495        free(apiSearchTV), apiSearchTV = NULL;
496        free(apiImdbLookup), apiImdbLookup = NULL;
497        free(apiSearch), apiSearch = NULL;
498        free(localfile), localfile = NULL;
499        free(fetchurl), fetchurl = NULL;
500        free(search), search = NULL;
501        free(imdbid), imdbid = NULL;
502        free(plot), plot = NULL;
503        free(director), director = NULL;
504        free(writers), writers = NULL;
505        free(genre), genre = NULL;
506        free(tagline), tagline = NULL;
507        free(releasetime), releasetime = NULL;
508        free(pagebigcover), pagebigcover = NULL;
509        free(bigcover), bigcover = NULL;
510        free(cover), cover = NULL;
511        free(cast), cast = NULL;
512
513        delownerrc(imdbskin);
514        clearscreen(imdbskin);
515        drawscreen(skin, 0);
516
517        setosdtransparent(getskinconfigint("osdtransparent", NULL));
518        servicestart(status.lastservice->channel, NULL, NULL, 0);
519       
520//      return apiSearch;
521        return;
522}
523
524#endif
Note: See TracBrowser for help on using the repository browser.