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

Last change on this file since 13568 was 13568, checked in by obi, 12 years ago

[titan] update imdb

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