Skip to content

Commit 62fc7d5

Browse files
committed
add slideshare queries
1 parent d38865d commit 62fc7d5

File tree

1 file changed

+41
-8
lines changed

1 file changed

+41
-8
lines changed

src/main/scala/org/aspyker/tools/ReInvent2014Converter.scala

Lines changed: 41 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -10,14 +10,35 @@ import com.github.mustachejava._
1010
import java.io.PrintWriter
1111
import com.google.gdata.client.youtube.{YouTubeQuery, YouTubeService}
1212
import 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

1517
object 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

Comments
 (0)