Add interface for setting automark state.
This commit is contained in:
parent
0c5823cbeb
commit
57d87560a4
4 changed files with 51 additions and 1 deletions
|
@ -132,6 +132,18 @@ def post_refresh_channel():
|
||||||
channel.refresh(force=force)
|
channel.refresh(force=force)
|
||||||
return jsonify.make_json_response({})
|
return jsonify.make_json_response({})
|
||||||
|
|
||||||
|
@site.route('/channel/<channel_id>/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'])
|
@site.route('/start_download', methods=['POST'])
|
||||||
def post_start_download():
|
def post_start_download():
|
||||||
if 'video_ids' not in request.form:
|
if 'video_ids' not in request.form:
|
||||||
|
|
|
@ -172,6 +172,19 @@ https://stackoverflow.com/a/35153397
|
||||||
|
|
||||||
<p><!-- spacer --></p>
|
<p><!-- spacer --></p>
|
||||||
|
|
||||||
|
{% if channel is not none %}
|
||||||
|
<span>
|
||||||
|
New videos are:
|
||||||
|
<select onchange="set_automark_hook(event)">
|
||||||
|
<option value="pending" {{"selected" if channel.automark == "pending" else ""}} >pending</option>
|
||||||
|
<option value="downloaded" {{"selected" if channel.automark == "downloaded" else ""}} >downloaded</option>
|
||||||
|
<option value="ignored" {{"selected" if channel.automark == "ignored" else ""}} >ignored</option>
|
||||||
|
</select>
|
||||||
|
</span>
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
<p><!-- spacer --></p>
|
||||||
|
|
||||||
<span>Sort by
|
<span>Sort by
|
||||||
<a class="merge_params" href="?orderby=published">Date</a>,
|
<a class="merge_params" href="?orderby=published">Date</a>,
|
||||||
<a class="merge_params" href="?orderby=duration">Duration</a>,
|
<a class="merge_params" href="?orderby=duration">Duration</a>,
|
||||||
|
@ -477,6 +490,15 @@ function refresh_channel(channel_id, force, callback)
|
||||||
return common.post(url, data, 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)
|
function mark_video_state(video_ids, state, callback)
|
||||||
{
|
{
|
||||||
var url = "/mark_video_state";
|
var url = "/mark_video_state";
|
||||||
|
|
|
@ -50,6 +50,8 @@ DEFAULT_DATADIR = '.'
|
||||||
DEFAULT_DBNAME = 'ycdl.db'
|
DEFAULT_DBNAME = 'ycdl.db'
|
||||||
DEFAULT_CONFIGNAME = 'ycdl.json'
|
DEFAULT_CONFIGNAME = 'ycdl.json'
|
||||||
|
|
||||||
|
VIDEO_STATES = ['ignored', 'pending', 'downloaded']
|
||||||
|
|
||||||
DEFAULT_CONFIGURATION = {
|
DEFAULT_CONFIGURATION = {
|
||||||
'download_directory': '.',
|
'download_directory': '.',
|
||||||
}
|
}
|
||||||
|
|
|
@ -55,6 +55,20 @@ class Channel(Base):
|
||||||
if commit:
|
if commit:
|
||||||
self.ycdldb.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):
|
class Video(Base):
|
||||||
table = 'videos'
|
table = 'videos'
|
||||||
|
|
||||||
|
@ -83,7 +97,7 @@ class Video(Base):
|
||||||
'''
|
'''
|
||||||
Mark the video as ignored, pending, or downloaded.
|
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)
|
raise exceptions.InvalidVideoState(state)
|
||||||
|
|
||||||
pairs = {
|
pairs = {
|
||||||
|
|
Loading…
Reference in a new issue