Files
autotoot/helper.py
2022-04-05 21:22:01 -04:00

71 lines
2.5 KiB
Python

import requests
import os
import logging
from datetime import datetime
### HELPER METHODS
# helper method to clean out folder (delete all contents)
# expected structure: [["temp/a/1", "temp/a/2"], [], [], ["temp/e/1"]]
class helper():
def __init__(service):
# copy the service's variables to make them local
# because it's easier to access and doesn't requre the
# service to pass itself in every time
service = service.service
low_activity_random = service.low_activity_random
debug = service.debug
places = service.places
seent = service.seent
def remove_folders(folders_list):
for folder in folders_list:
logging.info(f"Clearing folder {folder}")
for file in folder:
os.remove(file)
if len(folder) > 0:
subfolder = "/".join(folder[0].split("/")[:-1])
os.rmdir(subfolder)
# helper method to download media
def download_media(url, filename):
# get file first
logging.info(f"Downloading {url} info {filename}")
resp = requests.get(url)
if resp.ok:
# make sure directory structure exists
structure = filename.split("/")
for i in range(len(structure[:-1])):
d = "/".join(structure[0:i+1])
if not os.path.isdir(d): os.mkdir(d)
# write the downloaded content to file
with open(filename, "wb+") as f:
f.write(resp.content)
# reddit helper method to return the post type
def get_post_type(post):
if post.url[8] == 'i': return "image"
if post.url[8] == 'v': return "video"
if post.url[23:30] == "gallery": return "gallery"
return "unknown"
# returns True if the ts1 is older than ts2
# tsx should be a timestamp value
def ts_older(ts1, ts2):
# timedelta of `hours`
hours_delta = datetime.fromtimestamp(ts2) - datetime.fromtimestamp(0)
# timedelta of timestamp
stamp_delta = datetime.fromtimestamp(ts1)
stamp_delta = datetime.now() - stamp_delta
return stamp_delta > hours_delta
# returns True if place hasn't had a post in the past 12 hours according
# to the savefile
def been_awhile(seent_time, hours=12):
long_time = 60 * 60 * hours
return helper.ts_older(int(seent_time), long_time)
# takes in a ListingGenerator (list of reddit posts) and
# reverses it
def reddit_listify(LG):
return [p for p in LG]