#!/usr/bin/env python import os import sys import argparse project_path = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) if project_path not in sys.path: sys.path.append(project_path) from control.veda_utils import EmailAlert from youtube_callback.daemon import generate_course_list, get_course from youtube_callback.sftp_id_retrieve import callfunction """ Youtube Callback Command Line Interface """ class YoutubeCallbackCli(): def __init__(self, **kwargs): self.args = None self.test = False self.logging = kwargs.get('logging', True) self.course_list = [] def get_args(self): parser = argparse.ArgumentParser() parser.usage = ''' {cmd} -l List {cmd} -c course [-l -c ] Use --help to see all options. '''.format(cmd=sys.argv[0]) parser.add_argument( '-l', '--list', help='List Eligible Courses, Exit', action='store_true' ) parser.add_argument( '-c', '--courseid', default=None, help='Parse Specific Course ID, Exit', ) self.args = parser.parse_args() self._parse_args() def _parse_args(self): self.course_id = self.args.courseid self.list = self.args.list def run(self): if self.list is True: self.listcourses() else: self.loop() def loop(self): """ Daemon Loop """ if self.course_id is not None: course = get_course(course_id=self.course_id) if course is not None: callfunction(course) return None runcommand = ' '.join(( 'python', os.path.join(os.path.dirname(os.path.abspath(__file__)), 'loop.py'), '-y' )) os.system(runcommand) E1 = EmailAlert(message='Youtube Callback Daemon Crash', subject='Youtube Callback Daemon') E1.email() def listcourses(self): """ list and exit :return: """ self.course_list = generate_course_list() for course in self.course_list: print course.institution print course.edx_classid def main(): YTCC = YoutubeCallbackCli() YTCC.get_args() YTCC.run() if __name__ == '__main__': sys.exit(main())