Exemplo n.º 1
0
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