annotate src/handlers/tweet_sentiment_handler.py @ 8:6541622b6127

add tweet analysis method
author Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
date Fri, 17 Sep 2021 21:10:02 +0200
parents src/handlers/sentiment.py@db2ce7097ff3
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
8
6541622b6127 add tweet analysis method
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents: 6
diff changeset
1 import json
3
5c36f51105c2 fetch tweets working
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents: 1
diff changeset
2 import requests
6
db2ce7097ff3 add string parameters
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents: 4
diff changeset
3
db2ce7097ff3 add string parameters
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents: 4
diff changeset
4 # noinspection PyUnresolvedReferences
8
6541622b6127 add tweet analysis method
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents: 6
diff changeset
5 from aws_controller import AwsSecretsManager, AwsComprehend
6
db2ce7097ff3 add string parameters
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents: 4
diff changeset
6 # noinspection PyUnresolvedReferences
8
6541622b6127 add tweet analysis method
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents: 6
diff changeset
7 from event_controller import SentimentFunctionEvent
6
db2ce7097ff3 add string parameters
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents: 4
diff changeset
8 # noinspection PyUnresolvedReferences
8
6541622b6127 add tweet analysis method
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents: 6
diff changeset
9 from url_controller import TwitterApi
1
0277e7fc0f0a first successful sam deploy
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff changeset
10
0277e7fc0f0a first successful sam deploy
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff changeset
11
8
6541622b6127 add tweet analysis method
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents: 6
diff changeset
12 # noinspection PyUnusedLocal
1
0277e7fc0f0a first successful sam deploy
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff changeset
13 def get_tweet_sentiment(event, context):
0277e7fc0f0a first successful sam deploy
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff changeset
14 """
0277e7fc0f0a first successful sam deploy
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff changeset
15 :param event: dict, required
0277e7fc0f0a first successful sam deploy
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff changeset
16 API Gateway Lambda Proxy Input Format
0277e7fc0f0a first successful sam deploy
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff changeset
17 :param context: object, required
0277e7fc0f0a first successful sam deploy
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff changeset
18 Lambda Context runtime methods and attributes
0277e7fc0f0a first successful sam deploy
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff changeset
19 :return: dict
0277e7fc0f0a first successful sam deploy
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff changeset
20 API Gateway Lambda Proxy Output Format
0277e7fc0f0a first successful sam deploy
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff changeset
21 """
0277e7fc0f0a first successful sam deploy
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff changeset
22
6
db2ce7097ff3 add string parameters
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents: 4
diff changeset
23 # Unwrap query string parameters
8
6541622b6127 add tweet analysis method
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents: 6
diff changeset
24 twitter_user, number_of_tweets = SentimentFunctionEvent.unwrap_parameters(event)
6
db2ce7097ff3 add string parameters
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents: 4
diff changeset
25
db2ce7097ff3 add string parameters
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents: 4
diff changeset
26 # URL creation & authentication
8
6541622b6127 add tweet analysis method
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents: 6
diff changeset
27 twitter_url = TwitterApi.create_sentiment_url(twitter_user, number_of_tweets)
6541622b6127 add tweet analysis method
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents: 6
diff changeset
28 twitter_key = AwsSecretsManager.get_secret(secret_name='tweet-analysis-keys')
6
db2ce7097ff3 add string parameters
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents: 4
diff changeset
29 twitter_header = {"Authorization": "Bearer {}".format(twitter_key['BEARER'])}
db2ce7097ff3 add string parameters
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents: 4
diff changeset
30
db2ce7097ff3 add string parameters
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents: 4
diff changeset
31 # Request tweets to Twitter
3
5c36f51105c2 fetch tweets working
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents: 1
diff changeset
32 twitter_response = requests.request("GET", twitter_url, headers=twitter_header)
8
6541622b6127 add tweet analysis method
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents: 6
diff changeset
33 twitter_json_response = twitter_response.json()
6541622b6127 add tweet analysis method
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents: 6
diff changeset
34
6541622b6127 add tweet analysis method
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents: 6
diff changeset
35 tweets = []
6541622b6127 add tweet analysis method
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents: 6
diff changeset
36 for tweet in twitter_json_response['data']['tweets']:
6541622b6127 add tweet analysis method
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents: 6
diff changeset
37 tweets.append(tweet['text'])
1
0277e7fc0f0a first successful sam deploy
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff changeset
38
6
db2ce7097ff3 add string parameters
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents: 4
diff changeset
39 # Analyse tweets with AWS Comprehend
8
6541622b6127 add tweet analysis method
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents: 6
diff changeset
40 result = AwsComprehend.get_sentiment(tweets)
6
db2ce7097ff3 add string parameters
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents: 4
diff changeset
41
1
0277e7fc0f0a first successful sam deploy
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff changeset
42 return {
0277e7fc0f0a first successful sam deploy
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff changeset
43 "statusCode": 200,
6
db2ce7097ff3 add string parameters
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents: 4
diff changeset
44 "body": {
8
6541622b6127 add tweet analysis method
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents: 6
diff changeset
45 "tweets": json.dumps(result)
6
db2ce7097ff3 add string parameters
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents: 4
diff changeset
46 }
1
0277e7fc0f0a first successful sam deploy
Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com>
parents:
diff changeset
47 }