@@ -10,14 +10,35 @@ import com.github.mustachejava._
1010import java .io .PrintWriter
1111import com .google .gdata .client .youtube .{YouTubeQuery , YouTubeService }
1212import com .google .gdata .data .youtube .{VideoEntry , VideoFeed }
13- import java .net .URL ;
13+ import java .net .URL
14+ import com .benfante .jslideshare .{SlideShareAPI , SlideShareAPIFactory }
15+ import com .benfante .jslideshare .messages .{Slideshow , User }
1416
1517object ReInvent2014Converter {
1618 val log = Logger .getLogger(this .getClass)
1719 val config = ConfigFactory .load()
1820
19- def getAmazonSlides (log: Logger , config: Config ) : Array [Slideshow ] = {
20- return new Array [Slideshow ](0 )
21+ def getAmazonSlides (log: Logger , config: Config ) : List [Slideshow ] = {
22+ val ssapi = SlideShareAPIFactory .getSlideShareAPI(
23+ config.getString(" slideshare.apikey" ),
24+ config.getString(" slideshare.sharedsecret" )
25+ );
26+
27+ var shows = List [Slideshow ]();
28+ var page = 0
29+ var break = false
30+ while (! break) {
31+ var start = page * 100
32+ val awsUser = ssapi.getSlideshowByUser(" AmazonWebServices" , start, 100 )
33+ val returned = awsUser.getSlideshows().size()
34+ shows = shows ::: (awsUser.getSlideshows().asScala.toList)
35+ if (returned < 100 ) {
36+ break = true
37+ }
38+ page = page + 1
39+ }
40+ log.debug(" AmazonWebServices number of slide shares = " + shows.length)
41+ return shows
2142 }
2243
2344 def getDivField (classType: String , spans: NodeSeq ) : String = {
@@ -30,7 +51,7 @@ object ReInvent2014Converter {
3051 return " "
3152 }
3253
33- def getSessionInfos (log: Logger , filename: String , slideShares: Array [Slideshow ], config: Config , newerThanDate: DateTime ) : List [SessionInfo ] = {
54+ def getSessionInfos (log: Logger , filename: String , slideShares: List [Slideshow ], config: Config , newerThanDate: DateTime ) : List [SessionInfo ] = {
3455 var infos = List [SessionInfo ]()
3556
3657 val xml = XML .withSAXParser(new org.ccil.cowan.tagsoup.jaxp.SAXFactoryImpl ().newSAXParser())
@@ -65,17 +86,30 @@ object ReInvent2014Converter {
6586 queryString = " AWS " + shortHumanId + " R"
6687 youtubeUrl = getYouTubeUrl(log, shortHumanId, queryString, query, service, newerThanDate)
6788 }
68-
6989 log.debug(" youtube url = " + youtubeUrl)
7090 sessInfo.youtubeUrl = youtubeUrl
7191
92+ val slideshareUrl = getSlideshareUrl(log, slideShares, newerThanDate, shortHumanId)
93+ log.debug(" slideshare url = " + slideshareUrl)
94+ sessInfo.slideshareUrl = slideshareUrl
95+
7296 infos ::= sessInfo
7397 }
7498 }
7599 }
76100 return infos
77101 }
78102
103+ def getSlideshareUrl (log: Logger , slideShares: List [Slideshow ], newerThanDate: DateTime , shortHumanId: String ) : String = {
104+ var slide = slideShares.find { slideShare =>
105+ (slideShare.getTitle().contains(shortHumanId)) &&
106+ (slideShare.getCreatedDate().isAfter(newerThanDate)) }
107+ if (! slide.isDefined) {
108+ return " " ;
109+ }
110+ return slide.get.getPermalink()
111+ }
112+
79113 def getYouTubeUrl (log: Logger , shortHumanId: String , queryString: String , query: YouTubeQuery , service: YouTubeService , newerThanDate: DateTime ) : String = {
80114 query.setFullTextQuery(queryString)
81115 val videoFeed = service.query(query, classOf [VideoFeed ])
@@ -104,14 +138,13 @@ object ReInvent2014Converter {
104138
105139 def main (args: Array [String ]) = {
106140 val newerThanDate = new DateTime ().minusDays(config.getInt(" converter.daysAgo" ))
107- val shows = getAmazonSlides(log, config)
108- log.debug(" shows = " + shows)
141+ val slides = getAmazonSlides(log, config)
109142 var allInfos = new SessionInfoList ()
110143 val fileNames = config.getStringList(" converter.files" ).asScala
111144 for (file <- fileNames) {
112145 val filename = " src/main/resources/" + file + " .html"
113146 log.debug(" processing " + file + " sessions" );
114- val infos = getSessionInfos(log, filename, shows , config, newerThanDate)
147+ val infos = getSessionInfos(log, filename, slides , config, newerThanDate)
115148 log.debug(" infos = " + infos)
116149 allInfos.infos = allInfos.infos ::: infos
117150 }
0 commit comments