|
|
Line 1: |
Line 1: |
| ==Twitter trends==
| |
|
| |
|
| === API ===
| |
|
| |
| Cancel culture happens in Twitter through design features such as hashtags and trending topics.</br>
| |
| To investigate better this movement, I understood I had to inform myself about which topics/people/things were being cancelled, how was the engagement with this topic, what were the language and strategies used.
| |
|
| |
|
| |
| '''1. Using the Twitter API I could get the current trends in the US.'''
| |
|
| |
| Steps:
| |
| *Create a Twitter developer account
| |
| *Get keys and tokens from Twitter
| |
| *Install Ruby
| |
| *Install Twurl
| |
| *Install JQ to read JSON
| |
| *Use the command line
| |
|
| |
| twurl "/1.1/trends/place.json?id=23424977" | jq
| |
|
| |
|
| |
| '''2. I was only interested in the trends related to cancel culture, so I used Python to develop the script a bit more.'''
| |
|
| |
| Steps:
| |
| *Use Python library Tweepy
| |
| *Get trends
| |
| *Look for trends with words related with cancel culture
| |
|
| |
|
| |
| '''3. It was useful to save the trends. Instead of saving them in a .txt file, it made more sense to post them back in a Twitter account.'''
| |
|
| |
| Steps:
| |
| *Create a status with the search results (a status is a tweet in the library)
| |
|
| |
|
| |
| '''4. To make it look for trends regularly I created a cron job on my computer.'''
| |
|
| |
| 46 * * * * /usr/local/bin/python3 /Users/0972516/desktop/ritaiscancelled/trends.py
| |
|
| |
|
| |
| '''Outcome:'''</br>
| |
| The account @CancelledWho looks for trends related to my topic and posts them. This way I can be always monitoring an important topic of my research.
| |
|
| |
| <source lang="python">
| |
| #!/usr/bin/python
| |
|
| |
| import tweepy
| |
| import key # this is a pyhton file with my API passwords
| |
| import time
| |
|
| |
| # using the passwords to OAuth process, authentication
| |
| auth = tweepy.OAuthHandler(key.consumer_key, key.consumer_secret)
| |
| auth.set_access_token(key.access_token, key.access_token_secret)
| |
| api = tweepy.API(auth)
| |
|
| |
|
| |
| trends1 = api.trends_place(23424977) # american woeid id
| |
|
| |
| trends = set([trend['name'] for trend in trends1[0]['trends']]) # just getting the name, not timestamp, author, etc.
| |
|
| |
| trendsLower = [item.lower() for item in trends] # makes everything lowercase, important for then to match with cancelwords.txt
| |
| trendsLine = '\n'.join(trendsLower) # makes it more readable, puts the names with line breaks
| |
|
| |
| #print(trendsLine)
| |
|
| |
| cancelwords = ["cancelled", "canceled", "cancel", "isoverparty", "booed", "boycott"]
| |
| #print(cancelwords)
| |
|
| |
|
| |
| for line in trendsLine.splitlines():
| |
| #print(line)
| |
| for word in cancelwords:
| |
| if word in line:
| |
| try:
| |
| status = "Who are we fighting today? " + line
| |
| print(status)
| |
| api.update_status(status) # Creates a tweet, a status is a tweet
| |
| time.sleep(5)
| |
| except tweepy.TweepError as e: # the error is occuring when the last status is the same
| |
| print("ups, you already tweeted this")
| |
| break
| |
| # time.sleep(3600) # so the script will wait 1h to run again if catches error
| |
|
| |
| </source>
| |
|
| |
|
| |
| [[File:Bot timeline.png|400px|thumb|left|Outcome]]
| |
| <br clear=all>
| |
|
| |
| ===Get trends from historical archive===
| |
|
| |
| ===Use existing database===
| |
|
| |
| ===Scrape from existing website===
| |
|
| |
| (less accurate, abandoned)
| |