RedditInfo   A
last analyzed

Complexity

Total Complexity 7

Size/Duplication

Total Lines 42
Duplicated Lines 0 %

Importance

Changes 2
Bugs 1 Features 0
Metric Value
c 2
b 1
f 0
dl 0
loc 42
rs 10
wmc 7

2 Methods

Rating   Name   Duplication   Size   Complexity  
B handle() 0 24 6
A __init__() 0 16 1
1
import requests
2
import version
3
try:
4
  import praw
5
  successful_import = True
6
except ImportError:
7
  print "WARNING: redditinfo requires praw (https://github.com/praw-dev/praw/, or pip install praw)."
8
  successful_import = False
9
10
if successful_import is True:
11
  import re
12
  from event import Event
13
  class RedditInfo:
14
    def __init__(self, events=None, printer_handle=None, bot=None, say=None):
15
      self.events = events
16
      self.printer = printer_handle
17
      self.interests = ['__reddit__']
18
      self.bot = bot
19
      self.say = say
20
21
      self.user_agent = 'pybot ' + version.__version__ + ' by /u/hlmtre; http://bitbucket.org/hlmtre/pybot'
22
23
      self.help = None
24
25
      reddit = Event("__reddit__")
26
      reddit.define("https?://www.reddit.com/[\S]+|https?://reddit.com/[\S]+|reddit.com/[\S]+")
27
      reddit.subscribe(self)
28
29
      self.bot.register_event(reddit, self)
30
31
    def handle(self, event):
32
      url = re.search("https?://www.reddit.com/[\S]+|https?://reddit.com/[\S]+|reddit.com/[\S]+", event.line).group(0)
33
      me = praw.Reddit(self.user_agent)
34
      try:
35
        s = me.get_submission(url)
36
      except requests.exceptions.MissingSchema:
37
        s = me.get_submission('http://'+url)
38
      except TypeError:
39
        return
40
      message = '[REDDIT] ' + s.title
41
      if s.is_self:
42
          message = message + ' (self.' + s.subreddit.display_name + ')'
43
      else:
44
          message = message + ' to r/' + s.subreddit.display_name
45
      if s.over_18:
46
          message = message + ' 05[NSFW]'
47
          #TODO implement per-channel settings db, and make this able to kick
48
      if s.author:
49
          author = s.author.name
50
      else:
51
          author = '[deleted]'
52
      message = (message + ' | ' + author)
53
      #TODO add creation time with s.created
54
      self.printer("PRIVMSG " + event.channel + " :" + message + "\n")
55