GenerateNewsPaper.scala (2054B)
1 package generator 2 3 import java.io.File 4 import java.text.SimpleDateFormat 5 import java.util.Date 6 7 import com.github.tototoshi.csv.CSVReader 8 import com.typesafe.scalalogging.StrictLogging 9 import org.quartz.{Job, JobExecutionContext} 10 import twitterCrawler.RestAPISingleton 11 12 import scala.concurrent.Await 13 14 class GenerateNewsPaper extends Job with StrictLogging { 15 def execute(context: JobExecutionContext): Unit = { 16 //TODO parse CSV from yesterday and generate Feed 17 println("=============") 18 val reader = this.getReader 19 val api = RestAPISingleton.getRestAPI 20 reader.foreach(line => { 21 val tweetID: Long = line.head.toLong 22 println("--------------") 23 //Get Tweet from id 24 val tweets = Await.result(api.getTweet(id = tweetID), scala.concurrent.duration.Duration.Inf) 25 val tweet = tweets.data 26 tweet.in_reply_to_status_id_str match { 27 case Some(value) => logger.info(s"inReplyTo: $value") 28 case None => logger.info("inReplyTo: None") 29 } 30 val df = new SimpleDateFormat("dd.MM.yyyy HH:mm:ss") 31 val created_at = df.format(tweet.created_at) 32 val retweet_count = tweet.retweet_count 33 val retweeted = tweet.retweeted 34 val favorite_count = tweet.favorite_count 35 logger.info(s"Created at: $created_at") 36 logger.info(s"ID: $tweetID") 37 logger.info(s"RetweetCount: $retweet_count") 38 logger.info(s"RetweetStatus: $retweeted") 39 logger.info(s"FavoriteCount: $favorite_count") 40 println("--------------") 41 }) 42 println("=============") 43 } 44 45 private def getReader: CSVReader = { 46 var reader: CSVReader = null 47 val yesterdayDate = this.yesterday 48 val yesterday = new SimpleDateFormat("dd_MM_yyyy").format(yesterdayDate) 49 val yesterdaysTweets = new File(s"data/tweets.$yesterday") 50 if (yesterdaysTweets.exists()) { 51 reader = CSVReader.open(yesterdaysTweets) 52 } 53 reader 54 } 55 56 import java.util.Calendar 57 58 private def yesterday: Date = { 59 val cal = Calendar.getInstance 60 cal.add(Calendar.DATE, -1) 61 cal.getTime 62 } 63 }