Add separate API endpoint for add_channel, apply to web ui.
Previously, the "add channel" box was just calling refresh, which implicitly adds the channel. This adds a separate endpoint for add_channel, and as a bonus the web ui will navigate you to the channel after it has been loaded.
This commit is contained in:
parent
480eeb9ac3
commit
3e27e6e2e8
3 changed files with 28 additions and 16 deletions
|
@ -71,11 +71,9 @@ def get_channel(channel_id=None, download_filter=None):
|
||||||
videos=videos,
|
videos=videos,
|
||||||
)
|
)
|
||||||
|
|
||||||
@site.route('/refresh_channel', methods=['POST'])
|
@site.route('/add_channel', methods=['POST'])
|
||||||
def post_refresh_channel():
|
def post_add_channel():
|
||||||
if 'channel_id' not in request.form:
|
channel_id = request.form.get('channel_id', '')
|
||||||
flask.abort(400)
|
|
||||||
channel_id = request.form['channel_id']
|
|
||||||
channel_id = channel_id.strip()
|
channel_id = channel_id.strip()
|
||||||
if not channel_id:
|
if not channel_id:
|
||||||
flask.abort(400)
|
flask.abort(400)
|
||||||
|
@ -86,11 +84,20 @@ def post_refresh_channel():
|
||||||
except IndexError:
|
except IndexError:
|
||||||
flask.abort(404)
|
flask.abort(404)
|
||||||
|
|
||||||
|
channel = common.ycdldb.add_channel(channel_id, get_videos=True)
|
||||||
|
return jsonify.make_json_response(ycdl.jsonify.channel(channel))
|
||||||
|
|
||||||
|
@site.route('/channel/<channel_id>/refresh', methods=['POST'])
|
||||||
|
def post_refresh_channel(channel_id):
|
||||||
force = request.form.get('force', False)
|
force = request.form.get('force', False)
|
||||||
force = ycdl.helpers.truthystring(force)
|
force = ycdl.helpers.truthystring(force)
|
||||||
channel = common.ycdldb.add_channel(channel_id, commit=False)
|
try:
|
||||||
|
channel = common.ycdldb.get_channel(channel_id)
|
||||||
|
except ycdl.exceptions.NoSuchChannel as exc:
|
||||||
|
return jsonify.make_json_response(ycdl.jsonify.exception(exc), status=404)
|
||||||
|
|
||||||
channel.refresh(force=force)
|
channel.refresh(force=force)
|
||||||
return jsonify.make_json_response({})
|
return jsonify.make_json_response(ycdl.jsonify.channel(channel))
|
||||||
|
|
||||||
@site.route('/refresh_all_channels', methods=['POST'])
|
@site.route('/refresh_all_channels', methods=['POST'])
|
||||||
def post_refresh_all_channels():
|
def post_refresh_all_channels():
|
||||||
|
|
|
@ -483,16 +483,14 @@ function receive_action_response(response)
|
||||||
|
|
||||||
function refresh_channel(channel_id, force, callback)
|
function refresh_channel(channel_id, force, callback)
|
||||||
{
|
{
|
||||||
var url = "/refresh_channel";
|
var url = `/channel/${channel_id}/refresh`;
|
||||||
data = new FormData();
|
data = new FormData();
|
||||||
data.append("channel_id", channel_id);
|
|
||||||
data.append("force", force)
|
data.append("force", force)
|
||||||
return common.post(url, data, callback);
|
return common.post(url, data, callback);
|
||||||
}
|
}
|
||||||
|
|
||||||
function set_automark_hook(event)
|
function set_automark_hook(event)
|
||||||
{
|
{
|
||||||
console.log("What");
|
|
||||||
var url = "/channel/{{channel.id}}/set_automark";
|
var url = "/channel/{{channel.id}}/set_automark";
|
||||||
data = new FormData();
|
data = new FormData();
|
||||||
data.append("state", event.target.value);
|
data.append("state", event.target.value);
|
||||||
|
|
|
@ -52,7 +52,7 @@
|
||||||
<span><button class="refresh_button" onclick="refresh_all_channels(true, function(){location.reload()})">Refresh everything</button></span>
|
<span><button class="refresh_button" onclick="refresh_all_channels(true, function(){location.reload()})">Refresh everything</button></span>
|
||||||
<div>
|
<div>
|
||||||
<input type="text" id="new_channel_textbox">
|
<input type="text" id="new_channel_textbox">
|
||||||
<button id="new_channel_button" onclick="_new_channel_submit()">Add new channel</button>
|
<button id="new_channel_button" onclick="add_channel_form(event)">Add new channel</button>
|
||||||
</div>
|
</div>
|
||||||
{% for channel in channels %}
|
{% for channel in channels %}
|
||||||
{% if channel.has_pending() %}
|
{% if channel.has_pending() %}
|
||||||
|
@ -75,20 +75,27 @@ var box = document.getElementById('new_channel_textbox');
|
||||||
var button = document.getElementById('new_channel_button');
|
var button = document.getElementById('new_channel_button');
|
||||||
common.bind_box_to_button(box, button);
|
common.bind_box_to_button(box, button);
|
||||||
|
|
||||||
function _new_channel_submit()
|
function add_channel_form(event)
|
||||||
{
|
{
|
||||||
if (box.value !== "")
|
if (box.value !== "")
|
||||||
{
|
{
|
||||||
refresh_channel(box.value, true, function(){location.reload()});
|
add_channel(box.value, add_channel_callback);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
function refresh_channel(channel_id, force, callback)
|
function add_channel_callback(response)
|
||||||
{
|
{
|
||||||
var url = "/refresh_channel";
|
if (response["meta"]["status"] == 200)
|
||||||
|
{
|
||||||
|
window.location.href = "/channel/" + response["data"]["id"];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function add_channel(channel_id, callback)
|
||||||
|
{
|
||||||
|
var url = "/add_channel";
|
||||||
data = new FormData();
|
data = new FormData();
|
||||||
data.append("channel_id", channel_id);
|
data.append("channel_id", channel_id);
|
||||||
data.append("force", force)
|
|
||||||
return common.post(url, data, callback);
|
return common.post(url, data, callback);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue