def testCreateFolder(): print("______________________") printInfo("testCreateFolder {}started".format(CLR_OK)) folderName = 'createFolderTest' if not utilsReddit.createFolder('./' + folderName): printInfo("testCreateFolder {}not ok".format(CLR_FAIL)) else: printInfo("test 1 {}passed".format(CLR_OK)) if utilsReddit.createFolder('./' + folderName) != None: printInfo("testCreateFolder {}not ok".format(CLR_FAIL)) else: os.rmdir('./' + folderName) printInfo("testCreationDatabase {}passed".format(CLR_OK)) print("______________________")
def execute(self): while True: logging.info("Start to search new image") self.getPictureURL() picture = { "name": self.submission.title, "url": self.submission.url, "filename": self.submission.url[self.submission.url.rfind("/") + 1 :], "anime": utilsReddit.extractAnimeName(self.submission.title), } try: nbEntriesPic = self.mydb.checkEntryPictures(picture["url"]) if nbEntriesPic > 0: continue except sqlite3.OperationalError: continue folder = self.rootFolder + picture["anime"] + "/" if picture["anime"] else self.rootFolder if self.mydb.addEntry(picture["name"], picture["filename"], picture["url"], folder): utilsReddit.createFolder(folder) self.downloadImageFromURL(picture["filename"], picture["url"], folder) self.twitter.updateMediaTweet(folder + picture["filename"], "[NSFW bot] " + picture["name"]) timeToWait = random.randint(self.TIME_MIN, self.TIME_MAX) logging.info("time until next picture: %d", timeToWait) time.sleep(timeToWait)
def __init__(self, reddit, dropbox, twitter): self.subreddit = reddit["subreddit"] self.user_agent = reddit["user_agent"] self.rootFolder = reddit["root"] self.access_token = dropbox["token"] self.rootDropbox = dropbox["root"] self.submission = None logging.basicConfig( filename="./logs/redditBot.log", format="%(asctime)s %(funcName)-20s %(levelname)-8s %(message)s", datefmt="%m/%d/%Y %I:%M:%S %p", level=logging.INFO, ) if not utilsReddit.createFolder(self.rootFolder): self.rootFolder = "./" try: self.reddit = praw.Reddit(user_agent=self.user_agent) logging.info("Connected to reddit") self.mydb = db.Database("sqlite3.db") self.dropbox = dropboxHelper.DropboxHelper(self.access_token) self.twitter = twitterHelper.TwitterHelper( twitter["consumer_key"], twitter["consumer_secret"], twitter["access_key"], twitter["access_secret"] ) except praw.errors.APIException as e: logging.error("Unable to use praw.Reddit (server side): %s", e) logging.info("========Bot stopped===========") raise praw.errors.APIException except praw.errors.ClientException as e: logging.error("Unable to use praw.Reddit (client side): %s", e) logging.info("========Bot stopped===========") raise praw.errors.ClientException except sqlite3.OperationalError: logging.info("========Bot stopped===========") raise sqlite3.OperationalError except tweepy.error.TweepError: logging.info("========Bot stopped===========") raise rest.ErrorResponse except rest.ErrorResponse: logging.info("========Bot stopped===========") raise rest.ErrorResponse