diff --git a/frontends/ycdl_flask/backend/endpoints.py b/frontends/ycdl_flask/backend/endpoints.py index 0844e1b..862c9a2 100644 --- a/frontends/ycdl_flask/backend/endpoints.py +++ b/frontends/ycdl_flask/backend/endpoints.py @@ -132,6 +132,18 @@ def post_refresh_channel(): channel.refresh(force=force) return jsonify.make_json_response({}) +@site.route('/channel//set_automark', methods=['POST']) +def post_set_automark(channel_id): + state = request.form['state'] + channel = common.ycdldb.get_channel(channel_id) + + try: + channel.set_automark(state) + except exceptions.InvalidVideoState: + flask.abort(400) + + return jsonify.make_json_response({}) + @site.route('/start_download', methods=['POST']) def post_start_download(): if 'video_ids' not in request.form: diff --git a/frontends/ycdl_flask/templates/channel.html b/frontends/ycdl_flask/templates/channel.html index 4a7db6d..f1a7404 100644 --- a/frontends/ycdl_flask/templates/channel.html +++ b/frontends/ycdl_flask/templates/channel.html @@ -172,6 +172,19 @@ https://stackoverflow.com/a/35153397

+ {% if channel is not none %} + + New videos are: + + + {% endif %} + +

+ Sort by Date, Duration, @@ -477,6 +490,15 @@ function refresh_channel(channel_id, force, callback) return common.post(url, data, callback); } +function set_automark_hook(event) +{ + console.log("What"); + var url = "/channel/{{channel.id}}/set_automark"; + data = new FormData(); + data.append("state", event.target.value); + return common.post(url, data); +} + function mark_video_state(video_ids, state, callback) { var url = "/mark_video_state"; diff --git a/ycdl/constants.py b/ycdl/constants.py index b48cd63..6c7aa95 100644 --- a/ycdl/constants.py +++ b/ycdl/constants.py @@ -50,6 +50,8 @@ DEFAULT_DATADIR = '.' DEFAULT_DBNAME = 'ycdl.db' DEFAULT_CONFIGNAME = 'ycdl.json' +VIDEO_STATES = ['ignored', 'pending', 'downloaded'] + DEFAULT_CONFIGURATION = { 'download_directory': '.', } diff --git a/ycdl/objects.py b/ycdl/objects.py index 9b4aa21..a23de08 100644 --- a/ycdl/objects.py +++ b/ycdl/objects.py @@ -55,6 +55,20 @@ class Channel(Base): if commit: self.ycdldb.commit() + def set_automark(self, state, commit=True): + if state not in constants.VIDEO_STATES: + raise exceptions.InvalidVideoState(state) + + pairs = { + 'id': self.id, + 'automark': state, + } + self.ycdldb.sql_update(table='channels', pairs=pairs, where_key='id') + self.automark = state + + if commit: + self.ycdldb.commit() + class Video(Base): table = 'videos' @@ -83,7 +97,7 @@ class Video(Base): ''' Mark the video as ignored, pending, or downloaded. ''' - if state not in ['ignored', 'pending', 'downloaded']: + if state not in constants.VIDEO_STATES: raise exceptions.InvalidVideoState(state) pairs = {