Advertisement
Guest User

Untitled

a guest
Mar 4th, 2024
187
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.98 KB | None | 0 0
  1.  
  2. import praw
  3. from datetime import datetime
  4. import time
  5. import scrapy
  6. from scrapy.crawler import CrawlerProcess
  7. from scrapy.utils.project import get_project_settings
  8.  
  9.  
  10. class praw_robot():
  11. def __init__(self, datas):
  12. self.__call__(datas)
  13.  
  14. def recherche_de_subbreddits(self, subr):
  15. # Initialize some variables
  16. reddits_ok = []
  17. reddits_ko = []
  18. moderator_values = []
  19. subrs = []
  20.  
  21. # Reddit session initialization
  22. reddit = praw.Reddit(client_id='Your_ID',
  23. client_secret='Your_Secret',
  24. user_agent='My_BOT',
  25. username='Your_Username',
  26. password='Your_Password')
  27.  
  28. # Looking for moderators
  29. for moderator in reddit.subreddit(subr).moderator():
  30. redditor = reddit.redditor(moderator)
  31. # If moderator is inactive or banned
  32. try:
  33. if hasattr(redditor, 'fullname'):
  34. # USER ALIVE !!!!
  35. # last comment
  36. flat_comment = redditor.comments.new(limit=1)
  37. # for loop waiting for.created_utc
  38. for comment in flat_comment:
  39. # created_utc in UNIX
  40. c = comment.created_utc
  41. # parse date
  42. parsed_date = datetime.utcfromtimestamp(c)
  43. # today date
  44. date_now = datetime.today()
  45. # difference between two dates
  46. time_abs = abs((parsed_date - date_now).days)
  47. if time_abs <= 15:
  48. val = redditor.name, 0
  49. moderator_values.append(val)
  50. else:
  51. val = redditor.name, 1
  52. moderator_values.append(val)
  53.  
  54. elif hasattr(redditor, 'is_suspended'):
  55. # USER SUSPENDED
  56. val = redditor.name, 1
  57. moderator_values.append(val)
  58. else:
  59. # USER SHADOWBANNED
  60. val = redditor.name, 1
  61. moderator_values.append(val)
  62. except:
  63. continue
  64. return moderator_values, subr
  65.  
  66. def parse_data(self, moderators_value, subrreddit):
  67. verif = all(flag == 1 for (_, flag) in moderators_value)
  68. if verif is True:
  69. var = 'CONSIDER ' + subrreddit + ' SAFE.'
  70. print(var)
  71. with open('Sub_safe.txt', 'a') as f:
  72. string = ''.join(var) + '\n'
  73. f.write(string)
  74. else:
  75. print('CONSIDER ' + subrreddit + ' NOT SAFE.')
  76.  
  77. def __call__(self, subrs):
  78. for subr in subrs:
  79. moderator_value, subrr = self.recherche_de_subbreddits(subr)
  80. self.parse_data(moderator_value, subr)
  81. time.sleep(10)
  82.  
  83.  
  84. class praw_rbt(scrapy.Spider):
  85. name = 'praw_rbt'
  86. allowed_domains = ['www.chaturbot.co']
  87.  
  88. def start_requests(self):
  89. list_of_urls = []
  90. max = 693
  91. i = 1
  92. while i <= max:
  93. i = str(i)
  94. urls = 'https://chaturbot.co/reddit_nsfw_index?page=' + i
  95. list_of_urls.append(urls)
  96. i = int(i)
  97. i += 1
  98. for url in list_of_urls:
  99. yield scrapy.Request(url.strip())
  100.  
  101.  
  102. def parse(self, response):
  103. datas = []
  104. subreddit_list = response.css('*.name a::text').getall()
  105. for data in subreddit_list:
  106. datas.append(data)
  107. praw_robot(datas)
  108.  
  109.  
  110. # starting bot, loop block
  111. process = CrawlerProcess(get_project_settings())
  112.  
  113. def _crawl(result, spider):
  114. deferred = process.crawl(spider)
  115. #deferred.addCallback(_crawl, spider)
  116. #time.sleep(14400)
  117. return deferred
  118.  
  119. _crawl(None, praw_rbt)
  120. process.start()
  121. # fin du bloc
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement