Ignore:
Timestamp:
07/30/12 23:02:07 (12 years ago)
Author:
nit
Message:

[titan] update facebook

File:
1 edited

Legend:

Unmodified
Added
Removed
  • titan/plugins/facebook/facebook.h

    r17377 r17401  
    66#define FACEBOOKURL "https://graph.facebook.com"
    77#define FACEBOOKAPPID "150792241632891"
    8 #define FACEBOOKPIC "/tmp/facebookpic.jpg"
     8#define FACEBOOKPIC "/tmp/facebook/facebookpic.jpg"
     9#define FACEBOOKPATH "/tmp/facebook"
    910#define FACEMAXTOKEN 1000
    1011#define FACEMAXENTRY "50"
     
    1415char* curlretbuf = NULL;
    1516
    16 int getfacefoto(char* url)
     17int getfacefoto(char* url, char* name)
    1718{
    1819        char* ip = NULL, *pos = NULL, *path = NULL;
    1920
    20         unlink(FACEBOOKPIC);
     21        unlink(name);
    2122
    2223        if(url == NULL) return 1;
     
    3233        }
    3334
    34         gethttp(ip, path, 80, FACEBOOKPIC, NULL, NULL, 0);
     35        gethttp(ip, path, 80, name, NULL, NULL, 0);
    3536
    3637        return 0;
     
    283284        tmpstr = getxmlentry(curlretbuf, "\"pic\":");
    284285        tmpstr = string_replace_all("\\", "", tmpstr, 1);
    285         getfacefoto(tmpstr);
     286        getfacefoto(tmpstr, FACEBOOKPIC);
    286287        changepic(foto, FACEBOOKPIC);
    287288        free(tmpstr); tmpstr = NULL;
     
    602603}
    603604
     605int getfacepicture(struct skin* facebook, struct skin* listbox, struct skin* facefriendslist, char* id)
     606{
     607        int ret = -1, i = 0, len = 0, treffer = 0;
     608        struct tm *loctime = NULL;
     609        jsmn_parser parser;
     610        jsmntok_t tokens[FACEMAXTOKEN]; //TODO
     611        char* buf = NULL, *buf1 = NULL, *tmpstr = NULL;
     612        struct skin* tmp = NULL, *node = NULL;
     613
     614        delmarkedscreennodes(facebook, 1);
     615        if(id == NULL) return 1;
     616
     617        tmpstr = ostrcat(FACEBOOKURL, "/fql?q=SELECT+created,caption,owner,object_id,src+FROM+photo+WHERE+aid=", 0, 0);
     618        tmpstr = ostrcat(tmpstr, id, 1, 0);
     619        tmpstr = ostrcat(tmpstr, "+LIMIT+0,", 1, 0);
     620        tmpstr = ostrcat(tmpstr, FACEMAXENTRY, 1, 0);
     621        tmpstr = ostrcat(tmpstr, "&access_token=", 1, 0);
     622        tmpstr = ostrcat(tmpstr, getconfig("facebooktoken", NULL), 1, 0);
     623        curlretbuf = gethttps(tmpstr);
     624printf("%s\n", tmpstr);
     625printf("%s\n", curlretbuf);
     626        free(tmpstr); tmpstr = NULL;
     627        if(curlretbuf == NULL || strstr(curlretbuf, "\"error\":") != NULL)
     628        {
     629                textbox(_("Message"), _("Can't get data from facebook"), _("OK"), getrcconfigint("rcok", NULL), _("EXIT"), getrcconfigint("rcexit", NULL), NULL, 0, NULL, 0, 600, 200, 0, 0);
     630                free(curlretbuf); curlretbuf = NULL;
     631                curlretbufsize = 0;
     632                return 1;
     633        }
     634
     635        buf = malloc(MINMALLOC);
     636        if(buf == NULL)
     637        {
     638                err("no mem");
     639                free(curlretbuf); curlretbuf = NULL;
     640                curlretbufsize = 0;
     641                return 1;
     642        }
     643
     644        buf1 = malloc(17);
     645        if(buf1 == NULL)
     646        {
     647                err("no mem");
     648                free(curlretbuf); curlretbuf = NULL;
     649                curlretbufsize = 0;
     650                free(buf); buf = NULL;
     651                return 1;
     652        }
     653
     654        jsmn_init(&parser);
     655
     656        ret = jsmn_parse(&parser, curlretbuf, tokens, FACEMAXTOKEN);
     657        if(ret == JSMN_SUCCESS)
     658        {
     659                for(i = 0; i < FACEMAXTOKEN; i++)
     660                {
     661                        if(tokens[i].start == -1) break;
     662
     663                        len = tokens[i].end - tokens[i].start;
     664                        if(len > MINMALLOC) len = MINMALLOC;
     665                        char* ptr = curlretbuf + tokens[i].start;
     666
     667                        if(treffer == 1)
     668                        {
     669                                tmp = addlistbox(facebook, listbox, tmp, 1);
     670                                if(tmp != NULL)
     671                                {
     672                                        time_t t = 0;
     673
     674                                        tmp->type = TEXTBOX;
     675                                        tmp->wrap = YES;
     676                                        tmp->height = 100;
     677
     678                                        strncpy(buf, ptr, len);
     679                                        buf[len] = '\0';
     680                                        if(buf != NULL)
     681                                                t = strtoul(buf, NULL, 10);
     682                                        loctime = olocaltime(&t);
     683                                        if(loctime != NULL)
     684                                                strftime(buf1, 17, "%d-%m-%Y %H:%M", loctime);
     685                                        free(loctime); loctime = NULL;
     686
     687                                        changetext(tmp, buf1);
     688                                }
     689                        }
     690
     691                        if(treffer == 2)
     692                        {
     693                                if(tmp != NULL)
     694                                {
     695                                        strncpy(buf, ptr, len);
     696                                        buf[len] = '\0';
     697                                        changetext2(tmp, buf);
     698                                }
     699                        }
     700
     701                        if(treffer == 3)
     702                        {
     703                                if(tmp != NULL)
     704                                {
     705                                        strncpy(buf, ptr, len);
     706                                        buf[len] = '\0';
     707                                        changetext(tmp, buf);
     708
     709                                        node = facefriendslist;
     710                                        while(node != NULL)
     711                                        {
     712                                                if(ostrcmp(node->ret, buf) == 0)
     713                                                {
     714                                                        tmp->text = ostrcat(tmp->text, " - ", 1, 0);
     715                                                        tmp->text = ostrcat(tmp->text, node->text, 1, 0);
     716                                                }
     717                                                node = node->next;
     718                                        }
     719                                }
     720                        }
     721
     722                        if(treffer == 4)
     723                        {
     724                                if(tmp != NULL)
     725                                {
     726                                        strncpy(buf, ptr, len);
     727                                        buf[len] = '\0';
     728                                        changeret(tmp, buf);
     729                                }
     730                        }
     731
     732                        if(treffer == 5)
     733                        {
     734                                if(tmp != NULL)
     735                                {
     736                                        char* tmppic = NULL;
     737
     738                                        strncpy(buf, ptr, len);
     739                                        buf[len] = '\0';
     740
     741                                        tmppic = ostrcat(FACEBOOKPATH, "/", 0, 0);
     742                                        tmppic = ostrcat(tmppic, tmp->ret, 1, 0);
     743                                        tmppic = ostrcat(tmppic, ".jpg", 1, 0);
     744                                        getfacefoto(buf, tmppic);
     745                                        changepic(tmp, tmppic);
     746                                        free(tmppic); tmppic = NULL;
     747                                }
     748                        }
     749
     750                        treffer = 0;
     751                        if(tokens[i].type == 3)
     752                        {
     753                                if(len > 0 && ostrncmp(ptr, "created", len) == 0)
     754                                        treffer = 1;
     755                                if(len > 0 && ostrncmp(ptr, "caption", len) == 0)
     756                                        treffer = 2;
     757                                else if(len > 0 && ostrncmp(ptr, "owner", len) == 0)
     758                                        treffer = 3;
     759                                else if(len > 0 && ostrncmp(ptr, "object_id", len) == 0)
     760                                        treffer = 4;
     761                                else if(len > 0 && ostrncmp(ptr, "src", len) == 0)
     762                                        treffer = 5;
     763                        }
     764                }
     765        }
     766
     767        free(curlretbuf); curlretbuf = NULL;
     768        curlretbufsize = 0;
     769        free(buf); buf = NULL;
     770        return 0;
     771}
     772
    604773int getfacealbum(struct skin* facebook, struct skin* listbox, struct skin* facefriendslist, char* id)
    605774{
     
    613782        if(id == NULL) return 1;
    614783
     784        //tmpstr = ostrcat(FACEBOOKURL, "/fql?q=SELECT+src_small,caption,object_id+FROM+photo+WHERE+aid=", 0, 0);
    615785        tmpstr = ostrcat(FACEBOOKURL, "/fql?q=SELECT+name,owner,aid+FROM+album+WHERE+owner=", 0, 0);
    616786        tmpstr = ostrcat(tmpstr, id, 1, 0);
     
    10701240                screenfaceregister();
    10711241
    1072         int rcret = -1, aktview = 0, aktlist = 0;
     1242        int rcret = -1, aktview = 0, aktlist = 0, aktuser = 1;
    10731243
    10741244        struct skin* facetitle = getscreen("facetitle");
     
    10861256
    10871257        drawscreen(load, 0, 0);
     1258        mkdir(FACEBOOKPATH, 0777);
     1259
    10881260        getfacefriens(facefriends, facefriendslist, "me()");
    10891261        getfaceuser(facename, facestatus, facegender, facefoto, "me()");
     
    11161288                                aktlist = 0;
    11171289
     1290                        if(aktuser != facefriendslist->aktline)
     1291                        {
     1292                                drawscreen(load, 0, 0);
     1293                                facebooklist->aktline = 1;
     1294                                facebooklist->aktpage = -1;
     1295                                getfaceuser(facename, facestatus, facegender, facefoto, facefriendslist->select->ret);
     1296                                if(aktview == 0)
     1297                                        getfacestream(facebook, facebooklist, facefriendslist->select->ret);
     1298                                else if(aktview == 1)
     1299                                        getfacenote(facebook, facebooklist, facefriendslist->select->ret);
     1300                                else if(aktview == 2)
     1301                                        getfacealbum(facebook, facebooklist, facefriendslist, facefriendslist->select->ret);
     1302                                clearscreen(load);
     1303
     1304                                drawscreen(faceuser, 0, 1);
     1305                                drawscreen(facebook, 0, 1);
     1306                                drawscreen(facefoto, 0, 0);
     1307
     1308                                aktuser = facefriendslist->aktline;
     1309                        }
     1310
    11181311                        continue;
    11191312                }
     
    11251318                        {
    11261319                                drawscreen(load, 0, 0);
     1320                                facebooklist->aktline = 1;
     1321                                facebooklist->aktpage = -1;
    11271322                                getfacestream(facebook, facebooklist, facefriendslist->select->ret);
    11281323                                clearscreen(load);
     
    11361331                        {
    11371332                                drawscreen(load, 0, 0);
     1333                                facebooklist->aktline = 1;
     1334                                facebooklist->aktpage = -1;
    11381335                                getfacenote(facebook, facebooklist, facefriendslist->select->ret);
    11391336                                clearscreen(load);
     
    11471344                        {
    11481345                                drawscreen(load, 0, 0);
     1346                                facebooklist->aktline = 1;
     1347                                facebooklist->aktpage = -1;
    11491348                                getfacealbum(facebook, facebooklist, facefriendslist, facefriendslist->select->ret);
    11501349                                clearscreen(load);
     
    11561355                {
    11571356                        drawscreen(load, 0, 0);
     1357                        facebooklist->aktline = 1;
     1358                        facebooklist->aktpage = -1;
    11581359                        getfaceuser(facename, facestatus, facegender, facefoto, facefriendslist->select->ret);
    11591360                        if(aktview == 0)
     
    11691370                        drawscreen(facefoto, 0, 0);
    11701371
     1372                        aktuser = facefriendslist->aktline;
     1373
    11711374                }
    11721375                if(aktlist == 1 && rcret == getrcconfigint("rcok", NULL) && facebooklist->select != NULL)
     
    11821385        }
    11831386
     1387        delallfiles(FACEBOOKPATH, ".jpg");
    11841388        delownerrc(facefriends);
    11851389        delmarkedscreennodes(facefriends, 1);
Note: See TracChangeset for help on using the changeset viewer.