Files
tilde-projects/Code/irc/tumblr.py
T

49 lines
1.6 KiB
Python
Raw Normal View History

import urllib
from bs4 import BeautifulSoup
import random
import re
2018-10-05 16:02:38 -04:00
def tumble(url):
2018-10-05 16:02:38 -04:00
# Find the max pages
soup = BeautifulSoup(urllib.urlopen(url).read(), "html.parser")
pages = soup.findAll("span", "page-numbers")[0].text.split("/")[
1
] # this could totally fail several ways
tries = 3
while True:
try:
page = random.randrange(1, int(pages) + 1)
2018-10-05 16:02:38 -04:00
# Parse a page
soup = BeautifulSoup(
urllib.urlopen(url + "/page/" + str(page)).read(), "html.parser"
)
article = random.choice(soup.findAll("article"))
quote = article.find("blockquote").text.replace("\n", "")
if len(article.find("footer").findAll("ul")) > 1:
quote += re.sub(
"\n+", " ", article.find("footer").findAll("ul")[0].text
)
# the hash tags
quote += (
"("
+ re.sub("\n+", " ", article.find("footer").findAll("ul")[1].text)
+ ")"
)
# and the date and notes
else:
quote += (
"("
+ re.sub("\n+", " ", article.find("footer").findAll("ul")[0].text)
+ ")"
)
# just the date and notes
2018-10-05 16:02:38 -04:00
return quote.encode("ascii", "ignore")
except: # sometimes we fail. let's retry a few times
if tries == 0:
return ""
else:
tries -= 1
break