Beispiel #1
0
def initSettings(args):
    parser = OptionParser()
    parser.usage = '%prog init [options] <twitter username> <twitter password> <sms username> <sms password> <sms number>'
    parser.add_option('-f',
                      '--file',
                      dest='state',
                      default='state',
                      help='use configuration in FILE, defaults to "state"',
                      metavar='FILE')
    parser.add_option(
        '-g',
        '--debug',
        action="store_true",
        dest='debug',
        default=False,
        help='print debug output and don\'t actually send any messages')
    (options, args) = parser.parse_args(args)

    if len(args) != 5:
        parser.print_help()
        exit()

    settings = Settings(args)
    twitter = Twitter(settings.twitter_username, settings.twitter_password)
    (messages, settings.lastTimelineID) = twitter.GetTimeline()
    (messages, settings.lastReplyID) = twitter.GetReplies()
    (messages, settings.lastDirectMessageID) = twitter.GetDirectMessages()
    f = open(options.state, 'w')
    pickle.dump(settings, f)
    f.close()
Beispiel #2
0
def getUpdates(skip, args):
    parser = OptionParser()
    parser.add_option('-f',
                      '--file',
                      dest='state',
                      default='state',
                      help='use configuration in FILE, defaults to "state"',
                      metavar='FILE')
    parser.add_option(
        '-g',
        '--debug',
        action='store_true',
        dest='debug',
        default=False,
        help='print debug output and don\'t actually send any messages')
    if not skip:
        parser.usage = '%prog send [options]'
        parser.add_option(
            '-s',
            '--status',
            action='store_true',
            dest='status',
            default=False,
            help='include regular status updates from users you follow')
        parser.add_option('-r',
                          '--replies',
                          action='store_true',
                          dest='replies',
                          default=False,
                          help='include replies')
        parser.add_option('-d',
                          '--direct',
                          action='store_true',
                          dest='direct',
                          default=False,
                          help='include direct messages')
        parser.add_option('-m',
                          '--max',
                          dest='max',
                          default=10,
                          help='abort if MAX message were to be sent',
                          metavar='MAX')
    else:
        parser.usage = '%prog skip [options]'
    (options, args) = parser.parse_args(args)
    if len(args) > 0:
        printUsage()
        return
    if options.debug:
        if not skip:
            print "Sending all new messages"
        else:
            print "Skipping all new messages"

    f = open(options.state, 'r')
    settings = pickle.load(f)
    f.close()
    twitter = Twitter(settings.twitter_username, settings.twitter_password)
    try:
        (statuses, settings.lastTimelineID) = twitter.GetTimeline(
            settings.lastTimelineID)
        (replies,
         settings.lastReplyID) = twitter.GetReplies(settings.lastReplyID)
        (directs, settings.lastDirectMessageID) = twitter.GetDirectMessages(
            settings.lastDirectMessageID)
        if options.debug:
            print "Seen %s statuses, %s replies and %s direct messages" % (
                len(statuses), len(replies), len(directs))
        if not skip:
            messages = []
            if not options.status and not options.replies and not options.direct:
                options.direct = True
            if options.status:
                messages += statuses
            if options.replies:
                messages += replies
            if options.direct:
                messages += directs
            messages.sort(key=lambda x: x.date)
            removeDuplicates(messages)
            if not options.debug and len(messages) > options.max:
                raise Exception("Refusing to send %s updates" % len(messages))
            sms = ClickSMS(settings.sms_username, settings.sms_password)
            for message in messages:
                if options.debug:
                    print "%s message from %s: %s" % (
                        message.type, message.sender, message.text)
                elif message.type == 'direct':
                    sms.sendMessage(
                        settings.sms_number,
                        "%s(d): %s" % (message.sender, message.text),
                        '07624801423')
                else:
                    sms.sendMessage(settings.sms_number,
                                    "%s: %s" % (message.sender, message.text),
                                    '07624801423')
    except HTTPError, error:
        if error.code < 500 or error.code >= 600:
            print error