Mercurial > public > tweet-analysis
annotate src/handlers/tweet_sentiment_handler.py @ 16:355216ee5cd4 default tip
Move to mercurial
author | Dennis C. M. <dennis@denniscm.com> |
---|---|
date | Tue, 03 Jun 2025 14:38:35 +0100 |
parents | 6541622b6127 |
children |
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 } |