@@ -22,9 +22,9 @@ object ReInvent2014Converter {
2222 val ssapi = SlideShareAPIFactory .getSlideShareAPI(
2323 config.getString(" slideshare.apikey" ),
2424 config.getString(" slideshare.sharedsecret" )
25- );
25+ )
2626
27- var shows = List [Slideshow ]();
27+ var shows = List [Slideshow ]()
2828 var page = 0
2929 var break = false
3030 while (! break) {
@@ -51,6 +51,13 @@ object ReInvent2014Converter {
5151 return " "
5252 }
5353
54+ def replaceEntities (raw: String ) : String = {
55+ var fixed = raw.replaceAll(" \\ p{Pd}" , " -" );
56+ fixed = fixed.replaceAll(" \u2019 " , " '" );
57+ // fixed.map(c => "%s\t\\u%04X".format(c, c.toInt)).foreach(println)
58+ return fixed
59+ }
60+
5461 def getSessionInfos (log: Logger , filename: String , slideShares: List [Slideshow ], config: Config , newerThanDate: DateTime ) : List [SessionInfo ] = {
5562 var infos = List [SessionInfo ]()
5663
@@ -66,7 +73,7 @@ object ReInvent2014Converter {
6673 for (div <- divs) {
6774 val id = (div \ " @id" ).text
6875 if (id.startsWith(" session_" )) {
69- val pureId = id.substring(8 );
76+ val pureId = id.substring(8 )
7077 log.debug(" processing session " + pureId)
7178 val sessInfo = new SessionInfo ()
7279
@@ -75,9 +82,9 @@ object ReInvent2014Converter {
7582 val shortHumanId = getDivField(" abbreviation" , spans).split(" +" )(0 )
7683 if (! shortHumanId.contains(" -R" )) {
7784 sessInfo.session = shortHumanId
78- sessInfo.title = getDivField(" title" , spans)
79- sessInfo.abstract1 = getDivField(" abstract" , spans)
80- sessInfo.speakers = getDivField(" speakers" , smalls)
85+ sessInfo.title = replaceEntities( getDivField(" title" , spans) )
86+ sessInfo.abstract1 = replaceEntities( getDivField(" abstract" , spans) )
87+ sessInfo.speakers = replaceEntities( getDivField(" speakers" , smalls) )
8188
8289 var queryString = " AWS " + shortHumanId
8390 var youtubeUrl = getYouTubeUrl(log, shortHumanId, queryString, query, service, newerThanDate)
@@ -105,7 +112,7 @@ object ReInvent2014Converter {
105112 (slideShare.getTitle().contains(shortHumanId)) &&
106113 (slideShare.getCreatedDate().isAfter(newerThanDate)) }
107114 if (! slide.isDefined) {
108- return " " ;
115+ return " "
109116 }
110117 return slide.get.getPermalink()
111118 }
@@ -117,7 +124,7 @@ object ReInvent2014Converter {
117124 log.debug(" short humanId = " + shortHumanId)
118125
119126 var youtubeUrl = " "
120- val vfEntriesLen = videoFeed.getEntries.size() - 1 ;
127+ val vfEntriesLen = videoFeed.getEntries.size() - 1
121128 for (ii <- 0 to vfEntriesLen) {
122129 val video = videoFeed.getEntries.get(ii)
123130 // TODO: Ensure that common attributes of publisher, etc are correct
@@ -139,11 +146,12 @@ object ReInvent2014Converter {
139146 def main (args: Array [String ]) = {
140147 val newerThanDate = new DateTime ().minusDays(config.getInt(" converter.daysAgo" ))
141148 val slides = getAmazonSlides(log, config)
149+ // val slides = List[Slideshow]()
142150 var allInfos = new SessionInfoList ()
143151 val fileNames = config.getStringList(" converter.files" ).asScala
144152 for (file <- fileNames) {
145153 val filename = " src/main/resources/" + file + " .html"
146- log.debug(" processing " + file + " sessions" );
154+ log.debug(" processing " + file + " sessions" )
147155 val infos = getSessionInfos(log, filename, slides, config, newerThanDate)
148156 log.debug(" infos = " + infos)
149157 allInfos.infos = allInfos.infos ::: infos
0 commit comments