Search code examples
javaandroidtwitter4j

twitter4j status in twitter have image but there no media entities


I am trying to use twitter4j to get twitter user timeline statuses and the information about them. The problem is that in twitter there are images attached to some of the statuses but twitter4j returns empty media entities. Here is my code:

for (Status status : twStatuses) {
    String Iurl = status.getUser().getProfileImageURL();
    twitterLink.add("https://twitter.com/" + status.getUser().getScreenName() + "/status/" + status.getId());
    twitterText.add(status.getText());
    ExtendedMediaEntity[] media = status.getExtendedMediaEntities(); //get the media entities from the status

    if (media.length == 0) {
        twitterImage.add("0");
    } else {
        for (ExtendedMediaEntity mediaEntity : media) {
            if (mediaEntity.getMediaURL().equals("")) {
                twitterImage.add("0");
            } else {
                twitterImage.add(mediaEntity.getMediaURL());
            }
        }
    }

    twitterDate.add(status.getCreatedAt().toString());   
}

Solution

  • I remember, I used it like this before: edit:This was for getting 1 image only.

    for(MediaEntity me : status.getMediaEntities()){
        if(me.getMediaURLHttps() != null)//also check blank
            twitterImage.add(me.getMediaURLHttps());
    }
    

    To fetch all media entities(maximum 4 photos || 1 video || 1 GIF)

    Twitter twitter = TwitterFactory.getSingleton();
    List < Status > statuses = twitter.getHomeTimeline();
    
    for (Status status: statuses) {
     ExtendedMediaEntity[] extendedMediaEntities = status.getExtendedMediaEntities();
    
     for (ExtendedMediaEntity eme: extendedMediaEntities) {
      if (eme.getMediaURLHttps() != null) { //also check blank
       if (eme.getType.equals("photo"))
        twitterImage.add(me.getMediaURLHttps());
      }
     }
    }