Main.scala (2632B)
1 import com.danielasfregola.twitter4s.entities.enums.AccessType 2 import com.danielasfregola.twitter4s.entities.enums.AccessType.AccessType 3 import com.danielasfregola.twitter4s.entities.{AccessToken, ConsumerToken} 4 import com.danielasfregola.twitter4s.{TwitterAuthenticationClient, TwitterRestClient, TwitterStreamingClient} 5 import com.typesafe.config.{Config, ConfigFactory} 6 import com.typesafe.scalalogging.StrictLogging 7 import twitterCrawler.RestAPISingleton 8 9 import scala.concurrent.ExecutionContext.Implicits.global 10 import scala.concurrent.duration.DurationInt 11 import scala.concurrent.{Await, Future} 12 import scala.util.{Failure, Success} 13 14 /** 15 * @author MTRNord <freifunknews@nordgedanken.blog> 16 * @todo rework to make this more generic 17 * @version 0.1.0 18 * 19 */ 20 object Main extends App with StrictLogging { 21 val conf: Config = ConfigFactory.load 22 val consumerToken = 23 ConsumerToken(key = conf.getString("twitter.consumer.key"), secret = conf.getString("twitter.consumer.secret")) 24 val TwitterAuthClient = new TwitterAuthenticationClient(consumerToken) 25 26 val write_access: AccessType = AccessType.Write 27 28 val reqToken = 29 TwitterAuthClient.requestToken(x_auth_access_type = Some(write_access)) 30 31 reqToken onComplete { 32 case Success(token) => 33 println( 34 TwitterAuthClient 35 .authenticateUrl(token = token.token, force_login = false) 36 ) 37 38 val pin = scala.io.StdIn.readLine("Insert Pin: ") 39 40 val AccessTokenResp = 41 Await.result( 42 TwitterAuthClient.accessToken(token.token, pin), 43 10 seconds 44 ) 45 46 val accessToken = AccessToken( 47 key = AccessTokenResp.accessToken.key, 48 secret = AccessTokenResp.accessToken.secret 49 ) 50 51 val streamingClient = 52 TwitterStreamingClient.apply( 53 accessToken = accessToken, 54 consumerToken = consumerToken 55 ) 56 val restClient = TwitterRestClient.apply( 57 accessToken = accessToken, 58 consumerToken = consumerToken 59 ) 60 61 //val sender = new twitterSender.Sender(restClient = restClient) 62 //sender.sendHelloWorld 63 64 RestAPISingleton.setRestAPI(restClient) 65 66 val stream = new twitterCrawler.StreamingApi( 67 streamingClient = streamingClient 68 ) 69 stream.fetchTweets 70 71 /*val test = new GenerateNewsPaper 72 test.execute(null)*/ 73 74 generator.Scheduler.main() 75 case Failure(err) => logger.error(err.toString) 76 } 77 78 /** 79 * Keep alive workaround 80 */ 81 val waitFunc = Future { 82 while (true) { 83 Thread.sleep(1000) 84 } 85 } 86 87 Await.result(waitFunc, scala.concurrent.duration.Duration.Inf) 88 }