/* * ConverRssToJavaScript.java * * Created on May 9, 2007, 3:02 PM * * To change this template, choose Tools | Template Manager * and open the template in the editor. */ package com.sun.smugmug; import com.sun.syndication.feed.synd.SyndEnclosure; import com.sun.syndication.feed.synd.SyndEntry; import com.sun.syndication.feed.synd.SyndFeed; import com.sun.syndication.io.SyndFeedInput; import com.sun.syndication.io.XmlReader; import java.io.PrintWriter; import java.net.URL; import java.util.Iterator; import java.util.List; import org.jdom.Element; /** * * @author Owner */ public class ConvertRssToJavaJSON { static final String PBB_US_FEED="http://pmonday.smugmug.com/hack/feed.mg?Type=gallery&Data=2575943&format=rss200"; static final String PBB_OVERSEAS_FEED="http://pmonday.smugmug.com/hack/feed.mg?Type=gallery&Data=2825694&format=rss200"; static final String PBB_US_OUTFILE = "uspictures.js"; static final String PBB_OVERSEAS_OUTFILE = "eupictures.js"; SyndFeed feed = null; boolean ok=false; /** Creates a new instance of ConverRssToJavaScript */ public ConvertRssToJavaJSON(String urlToRss) { try { URL feedUrl = new URL(urlToRss); SyndFeedInput input = new SyndFeedInput(); feed = input.build(new XmlReader(feedUrl)); ok = true; } catch (Exception ex) { ex.printStackTrace(); System.out.println("ERROR: "+ex.getMessage()); } } public String convert() { if(!ok) { return null; } StringBuffer jsonBuffer = new StringBuffer(); jsonBuffer.append("["); List entries = feed.getEntries(); Iterator entryIterator = entries.iterator(); boolean first=true; while(entryIterator.hasNext()) { String title = null; String link = null; String latitude = null; String longitude = null; String thumbnail = null; SyndEntry entry = (SyndEntry)entryIterator.next(); title = entry.getTitle(); link = entry.getLink(); List fmc = (List)entry.getForeignMarkup(); Iterator fmi = fmc.iterator(); List enclosures = entry.getEnclosures(); Iterator enclosuresIterator = enclosures.iterator(); while(enclosuresIterator.hasNext()) { SyndEnclosure encEntry = (SyndEnclosure)enclosuresIterator.next(); String encValue = encEntry.getUrl(); if(encValue.endsWith("Th.jpg")) { thumbnail = encValue; } if(thumbnail!=null) break; } while(fmi.hasNext()) { Element fmcEntry = (Element)fmi.next(); String name = fmcEntry.getName(); if("long".equals(name)) { longitude = fmcEntry.getText(); } else if("lat".equals(name)) { latitude = fmcEntry.getText(); } if(latitude!=null && longitude!=null) break; } if(title!=null && link!=null && latitude!=null && longitude!=null && thumbnail!=null) { if(!first) { jsonBuffer.append(","); } else { first = false; } jsonBuffer.append("{\"title\":\""); jsonBuffer.append(title); jsonBuffer.append("\","); jsonBuffer.append("\"link\":\""); jsonBuffer.append(link); jsonBuffer.append("\","); jsonBuffer.append("\"latitude\":\""); jsonBuffer.append(latitude); jsonBuffer.append("\","); jsonBuffer.append("\"longitude\":\""); jsonBuffer.append(longitude); jsonBuffer.append("\","); jsonBuffer.append("\"thumbnail\":\""); jsonBuffer.append(thumbnail); jsonBuffer.append("\"}"); } else { System.out.println("Node incomplete"); } } jsonBuffer.append("]"); System.out.println(jsonBuffer.toString()); return jsonBuffer.toString(); } public static final void main(String args[]) { ConvertRssToJavaJSON converter = new ConvertRssToJavaJSON(PBB_US_FEED); String jsonObject = converter.convert(); String javaScript = "uspictures = eval( \'(\' + \'" +jsonObject+"\' + \')\' );"; try { PrintWriter pw = new PrintWriter(PBB_US_OUTFILE); pw.println(javaScript); pw.flush(); pw.close(); } catch (Exception e) { e.printStackTrace(); } converter = new ConvertRssToJavaJSON(PBB_OVERSEAS_FEED); jsonObject = converter.convert(); javaScript = "eupictures = eval( \'(\' + \'" +jsonObject+"\'+ \')\' );"; try { PrintWriter pw = new PrintWriter(PBB_OVERSEAS_OUTFILE); pw.println(javaScript); pw.flush(); pw.close(); } catch (Exception e) { e.printStackTrace(); } } }