forked from cullerth/jumpstart-bot-tutorial-2022
-
Notifications
You must be signed in to change notification settings - Fork 0
/
bonusbot2_talk-mashup-bot.py
81 lines (61 loc) · 2.74 KB
/
bonusbot2_talk-mashup-bot.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
#!/usr/bin/env python
# -*- coding: utf-8 -*-
### Tumblr Bot Starter Kit: Extra Bot 1
## ALA Talk generator
## This bot mashes up ALA talk titles to make new ones.
## First, it takes a list of talks from ALA Annual Meetings 2016-2021, and splits those titles half: beginnings and endings. Then, it chooses a random beginning and a random ending, smushes them together into a new talk title, and posts it.
#Housekeeping, do not edit
import pytumblr, random
from credentials import *
client = pytumblr.TumblrRestClient(
consumer_key,
consumer_secret,
oauth_token,
oauth_secret
)
# We're now making up our own function, a reusable piece of code
def splitTitles(myfile):
"""
This function takes a text file and splits each line in half.
It returns two lists, first halves and second halves.
"""
#open a text file
talk_title_file = open(myfile,'r',encoding='UTF-8')
talk_titles = talk_title_file.readlines()
talk_title_file.close()
#create empty lists
beginners_list = []
enders_list = []
for line in talk_titles:
line = line.split() #turn the string into a list of words ['like','this']
midpoint = len(line) / 2 #find a rough halfway point in line
midpoint = int(midpoint) #turn that point into an integer instead of a decimal
#stitch together the split-up words, one for the first half and one for the second
beginner = " ".join(line[:midpoint]) #the join syntax sucks, no one can ever remember it
ender = " ".join(line[midpoint:])
#add the talk halves to the two lists
beginners_list.append(beginner)
enders_list.append(ender)
return beginners_list, enders_list #return = what the function spits out to use
#this is the end of the splitTitles() function
# run the splitTitles function and separate the beginning and ending halves into two new lists, beginners and enders
beginners_and_enders = splitTitles('data/ala_all-talk-titles.txt')
beginners = beginners_and_enders[0]
enders = beginners_and_enders[1]
# find the length of the lists (number of items)
beginners_length = len(beginners)
enders_length = len(enders)
# choose a random line by picking a number between 1 and the number of lines in the lists. (yes, it's convoluted)
title_first_part = beginners[random.randrange(1, beginners_length)]
title_last_part = enders[random.randrange(1, enders_length)]
# putting it all together: what's the new talk title?
post_text = title_first_part + ' ' + title_last_part
print(post_text)
client_info = client.info()
# post it
client.create_text(
blogname=client_info['user']['name'],
state='published',
title='Randomly generated American Library Association Conference Talk Title:',
body=post_text)
print("...posted!")