

def main(args=sys.argv[1:]):
    options = {
        'oauth': False,
        'save-dir': '.',
        'api-rate': False,
        'timeline': '',
        'mentions': '',
        'dms': '',
        'favorites': False,
        'follow-redirects': False,
        'redirect-sites': None,
        'isoformat': False,
    }
    try:
        parse_args(args, options)
    except GetoptError as e:
        err(("I can't do that, %s." % e))
        raise SystemExit(1)
    if ((not options['extra_args']) and (not (options['api-rate'] or options['timeline'] or options['mentions'] or options['dms']))):
        print(__doc__)
        return
    if options['oauth']:
        oauth_filename = ((os.environ.get('HOME', os.environ.get('USERPROFILE', '')) + os.sep) + '.twitter-archiver_oauth')
        if (not os.path.exists(oauth_filename)):
            oauth_dance('Twitter-Archiver', CONSUMER_KEY, CONSUMER_SECRET, oauth_filename)
        (oauth_token, oauth_token_secret) = read_token_file(oauth_filename)
        auth = OAuth(oauth_token, oauth_token_secret, CONSUMER_KEY, CONSUMER_SECRET)
    else:
        auth = NoAuth()
    twitter = Twitter(auth=auth, api_version='1.1', domain='api.twitter.com')
    if options['api-rate']:
        rate_limit_status(twitter)
        return
    global format_text
    if (options['follow-redirects'] or options['redirect-sites']):
        if options['redirect-sites']:
            hosts = parse_host_list(options['redirect-sites'])
        else:
            hosts = None
        format_text = functools.partial(expand_format_text, hosts)
    else:
        format_text = direct_format_text
    if (options['timeline'] or options['mentions']):
        if isinstance(auth, NoAuth):
            err('You must be authenticated to save timeline or mentions.')
            raise SystemExit(1)
        if options['timeline']:
            filename = ((options['save-dir'] + os.sep) + options['timeline'])
            print(('* Archiving own timeline in %s' % filename))
        elif options['mentions']:
            filename = ((options['save-dir'] + os.sep) + options['mentions'])
            print(('* Archiving own mentions in %s' % filename))
        tweets = {
            
        }
        try:
            tweets = load_tweets(filename)
        except Exception as e:
            err(('Error when loading saved tweets: %s - continuing without' % str(e)))
        try:
            statuses(twitter, '', tweets, options['mentions'], options['favorites'], isoformat=options['isoformat'])
        except KeyboardInterrupt:
            err()
            err('Interrupted')
            raise SystemExit(1)
        save_tweets(filename, tweets)
        if options['timeline']:
            print(('Total tweets in own timeline: %i' % len(tweets)))
        elif options['mentions']:
            print(('Total mentions: %i' % len(tweets)))
    if options['dms']:
        if isinstance(auth, NoAuth):
            err('You must be authenticated to save DMs.')
            raise SystemExit(1)
        filename = ((options['save-dir'] + os.sep) + options['dms'])
        print(('* Archiving own DMs in %s' % filename))
        dms = {
            
        }
        try:
            dms = load_tweets(filename)
        except Exception as e:
            err(('Error when loading saved DMs: %s - continuing without' % str(e)))
        try:
            statuses(twitter, '', dms, received_dms=True, isoformat=options['isoformat'])
            statuses(twitter, '', dms, received_dms=False, isoformat=options['isoformat'])
        except KeyboardInterrupt:
            err()
            err('Interrupted')
            raise SystemExit(1)
        save_tweets(filename, dms)
        print(('Total DMs sent and received: %i' % len(dms)))
    users = options['extra_args']
    if ((len(users) == 1) and (users[0] == '-')):
        users = [line.strip() for line in sys.stdin.readlines()]
    (total, total_new) = (0, 0)
    for user in users:
        filename = ((options['save-dir'] + os.sep) + user)
        if options['favorites']:
            filename = (filename + '-favorites')
        print(('* Archiving %s tweets in %s' % (user, filename)))
        tweets = {
            
        }
        try:
            tweets = load_tweets(tweets)
        except Exception as e:
            err(('Error when loading saved tweets: %s - continuing without' % str(e)))
        new = 0
        before = len(tweets)
        try:
            statuses(twitter, user, tweets, options['mentions'], options['favorites'], isoformat=options['isoformat'])
        except KeyboardInterrupt:
            err()
            err('Interrupted')
            raise SystemExit(1)
        save_tweets(filename, tweets)
        total += len(tweets)
        new = (len(tweets) - before)
        total_new += new
        print(('Total tweets for %s: %i (%i new)' % (user, len(tweets), new)))
    print(('Total: %i tweets (%i new) for %i users' % (total, total_new, len(users))))

dataset/ETHPy150Open sixohsix/twitter/twitter/archiver.py main/VarMisuse@928/1405 `filename`->`tweets`