Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import praw
- from datetime import datetime
- import time
- import scrapy
- from scrapy.crawler import CrawlerProcess
- from scrapy.utils.project import get_project_settings
- class praw_robot():
- def __init__(self, datas):
- self.__call__(datas)
- def recherche_de_subbreddits(self, subr):
- # Initialize some variables
- reddits_ok = []
- reddits_ko = []
- moderator_values = []
- subrs = []
- # Reddit session initialization
- reddit = praw.Reddit(client_id='Your_ID',
- client_secret='Your_Secret',
- user_agent='My_BOT',
- username='Your_Username',
- password='Your_Password')
- # Looking for moderators
- for moderator in reddit.subreddit(subr).moderator():
- redditor = reddit.redditor(moderator)
- # If moderator is inactive or banned
- try:
- if hasattr(redditor, 'fullname'):
- # USER ALIVE !!!!
- # last comment
- flat_comment = redditor.comments.new(limit=1)
- # for loop waiting for.created_utc
- for comment in flat_comment:
- # created_utc in UNIX
- c = comment.created_utc
- # parse date
- parsed_date = datetime.utcfromtimestamp(c)
- # today date
- date_now = datetime.today()
- # difference between two dates
- time_abs = abs((parsed_date - date_now).days)
- if time_abs <= 15:
- val = redditor.name, 0
- moderator_values.append(val)
- else:
- val = redditor.name, 1
- moderator_values.append(val)
- elif hasattr(redditor, 'is_suspended'):
- # USER SUSPENDED
- val = redditor.name, 1
- moderator_values.append(val)
- else:
- # USER SHADOWBANNED
- val = redditor.name, 1
- moderator_values.append(val)
- except:
- continue
- return moderator_values, subr
- def parse_data(self, moderators_value, subrreddit):
- verif = all(flag == 1 for (_, flag) in moderators_value)
- if verif is True:
- var = 'CONSIDER ' + subrreddit + ' SAFE.'
- print(var)
- with open('Sub_safe.txt', 'a') as f:
- string = ''.join(var) + '\n'
- f.write(string)
- else:
- print('CONSIDER ' + subrreddit + ' NOT SAFE.')
- def __call__(self, subrs):
- for subr in subrs:
- moderator_value, subrr = self.recherche_de_subbreddits(subr)
- self.parse_data(moderator_value, subr)
- time.sleep(10)
- class praw_rbt(scrapy.Spider):
- name = 'praw_rbt'
- allowed_domains = ['www.chaturbot.co']
- def start_requests(self):
- list_of_urls = []
- max = 693
- i = 1
- while i <= max:
- i = str(i)
- urls = 'https://chaturbot.co/reddit_nsfw_index?page=' + i
- list_of_urls.append(urls)
- i = int(i)
- i += 1
- for url in list_of_urls:
- yield scrapy.Request(url.strip())
- def parse(self, response):
- datas = []
- subreddit_list = response.css('*.name a::text').getall()
- for data in subreddit_list:
- datas.append(data)
- praw_robot(datas)
- # starting bot, loop block
- process = CrawlerProcess(get_project_settings())
- def _crawl(result, spider):
- deferred = process.crawl(spider)
- #deferred.addCallback(_crawl, spider)
- #time.sleep(14400)
- return deferred
- _crawl(None, praw_rbt)
- process.start()
- # fin du bloc
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement