/** * */ package com.gmail.charleszq.picorner.service.rss; import java.util.List; import org.mcsoxford.rss.RSSFeed; import org.mcsoxford.rss.RSSItem; import org.mcsoxford.rss.RSSReader; import org.mcsoxford.rss.RSSReaderException; import android.util.Log; import com.gmail.charleszq.picorner.model.MediaObject; import com.gmail.charleszq.picorner.model.MediaObjectCollection; import com.gmail.charleszq.picorner.model.MediaSourceType; import com.gmail.charleszq.picorner.service.IPhotoService; /** * @author charles(charleszq@gmail.com) * */ public class BigPictureService implements IPhotoService { private static final String BIG_PIC_RSS_LINK = "http://syndication.boston.com/bigpicture/index.xml"; //$NON-NLS-1$ private static final String TAG = BigPictureService.class.getSimpleName(); /* * (non-Javadoc) * * @see com.gmail.charleszq.picorner.service.IPhotoService#getPhotos(int, * int) */ @Override public MediaObjectCollection getPhotos(int pageSize, int pageNo) throws Exception { if (pageNo > 0) return null; RSSReader reader = new RSSReader(); try { RSSFeed feed = reader.load(BIG_PIC_RSS_LINK); List<RSSItem> items = feed.getItems(); Log.d(TAG, items.size() + " items"); //$NON-NLS-1$ MediaObjectCollection coll = new MediaObjectCollection(); for (RSSItem item : items) { String url = findImageLink(item.getDescription()); if( url == null || url.trim().length() == 0 ) continue; Log.d(TAG, url); MediaObject photo = new MediaObject(); photo.setMediaSource(MediaSourceType.RSS); photo.setThumbUrl(url); photo.setLargeUrl(url); photo.setTitle(item.getTitle()); coll.addPhoto(photo); photo.setId(url); } return coll; } catch (RSSReaderException e) { Log.w(TAG, e.getMessage()); } return null; } private String findImageLink(String str) { int index = str.indexOf("<img src="); //$NON-NLS-1$ if( index == -1 ) return null; StringBuilder sb = new StringBuilder(); while (true) { char ch = str.charAt(index + 10); if (ch == '"') { break; } sb.append(ch); index++; if( index >= str.length() ) break; } return sb.toString(); } }