def main(): global options, args oparser = optparse.OptionParser() oparser.add_option('-m', '--mode', dest='mode', default=MODE_ALL, help='friends selection method ({0})'.format('|'.join(MODES))) oparser.add_option('-u', '--lj-username', default='', metavar='USERNAME', help='LiveJournal username') oparser.add_option('', '--filename', default='lj.opml', help='OPML filename') oparser.add_option('', '--folder', default='livejournal', help='LJ folder name in OPML') options, args = oparser.parse_args() if not options.lj_username: raise LjrssException('No username specified') if options.mode not in MODES: raise LjrssException('Unknown mode "{0}"'.format(options.mode)) options.lj_password = getpass.getpass() console.writeline('Getting friends list...') mutual, nonmutual = getfriends(options.lj_username, options.lj_password) console.writeline('User {0} has {1} friends (including {2} mutual)'.format( options.lj_username, len(mutual) + len(nonmutual), len(mutual))) document, folder = opml(xml.dom.minidom.Document(), options.folder) if options.mode == MODE_MUTUAL: friends = mutual elif options.mode == MODE_ALL: friends = sorted(mutual + nonmutual) mutual = set(mutual) friends = [user for user in friends if not (user.is_identity or user.is_deleted)] console.writeline('Generating feeds...') progressbar = console.ProgressBar(maxval=len(friends)) for friend in friends: feed = ljusername2url(friend.name) if options.mode == MODE_ALL and friend in mutual: feed = freefeed(digest(feed)) folder.appendChild(opmlentry(document, friend.name, feed)) progressbar.update(1) progressbar.finish() console.writeline('Creating OPML file...') open(options.filename, 'w').write(document.toprettyxml(indent=XML_INDENT)) return 0
def error(message): console.writeline(u'%s: error: %s' % (os.path.basename(__file__), message)) return 1
else: process = compressor.compress if not args: oparser.error('Wrong number of arguments') else: for arg in args: check_existence(arg) check_access(arg, os.R_OK) # temporary src = args[0] dst = options.archive with open(src, 'rb') as fsrc: with open(dst, 'wb') as fdst: freader = reader.BufferedReader(fsrc, reader.calc_buffer_size(src)) pbar = console.ProgressBar(maxval=os.path.getsize(src)) pbar.start() process(freader, fdst, pbar) pbar.finish() return 0 if __name__ == '__main__': try: sys.exit(main()) except KeyboardInterrupt: console.writeline('Interrupted by user') except ArchiverException, ex: error(ex.args[0]) sys.exit(1)
friends = [user for user in friends if not (user.is_identity or user.is_deleted)] console.writeline('Generating feeds...') progressbar = console.ProgressBar(maxval=len(friends)) for friend in friends: feed = ljusername2url(friend.name) if options.mode == MODE_ALL and friend in mutual: feed = freefeed(digest(feed)) folder.appendChild(opmlentry(document, friend.name, feed)) progressbar.update(1) progressbar.finish() console.writeline('Creating OPML file...') open(options.filename, 'w').write(document.toprettyxml(indent=XML_INDENT)) return 0 if __name__ == '__main__': try: options, args = None, None sys.exit(main()) except KeyboardInterrupt: console.writeline('Interrupted by user') except FreeMyFeedException, ex: console.writeline('FreeMyFeed error: {0}'.format(ex.args[0])) except LjrssException, ex: console.writeline(ex.args[0]) sys.exit(1)