def pleblist_add(): if not request.method == 'POST': return make_response(jsonify({'error': 'Invalid request method'}), 405) if 'youtube_id' not in request.form: return make_response(jsonify({'error': 'Missing data youtube_id'}), 400) if 'password' not in request.form: return make_response(jsonify({'error': 'Missing data password'}), 400) salted_password = generate_password_hash(config['web']['pleblist_password'], config['web']['pleblist_password_salt']) try: user_password = base64.b64decode(request.form['password']) except binascii.Error: return make_response(jsonify({'error': 'Invalid data password'}), 400) if not user_password == salted_password: return make_response(jsonify({'error': 'Invalid password'}), 401) with DBManager.create_session_scope() as session: youtube_id = request.form['youtube_id'] current_stream = session.query(Stream).filter_by(ended=False).order_by(Stream.stream_start).first() if current_stream is None: return make_response(jsonify({'error': 'Stream offline'}), 400) song_requested = PleblistSong(current_stream.id, youtube_id) session.add(song_requested) song_info = session.query(PleblistSongInfo).filter_by(pleblist_song_youtube_id=youtube_id).first() if song_info is None and song_requested.song_info is None: PleblistManager.init(config['youtube']['developer_key']) song_info = PleblistManager.create_pleblist_song_info(song_requested.youtube_id) if song_info is not False: session.add(song_info) session.commit() return jsonify({'success': True})
def pleblist_validate(): if not request.method == 'POST': return make_response(jsonify({'error': 'Invalid request method'}), 405) if 'youtube_id' not in request.form: return make_response(jsonify({'error': 'Missing data youtube_id'}), 400) with DBManager.create_session_scope() as session: youtube_id = request.form['youtube_id'] print(youtube_id) song_info = session.query(PleblistSongInfo).filter_by( pleblist_song_youtube_id=youtube_id).first() if song_info is not None: return jsonify({ 'message': 'success', 'song_info': song_info.jsonify() }) PleblistManager.init(config['youtube']['developer_key']) song_info = PleblistManager.create_pleblist_song_info(youtube_id) if not song_info and len(youtube_id) > 11: youtube_id = youtube_id[:11] song_info = session.query(PleblistSongInfo).filter_by( pleblist_song_youtube_id=youtube_id).first() if song_info is not None: return jsonify({ 'message': 'success', 'new_youtube_id': youtube_id, 'song_info': song_info.jsonify() }) else: song_info = PleblistManager.create_pleblist_song_info( youtube_id) if song_info: print(song_info) session.add(song_info) session.commit() return jsonify({ 'message': 'success', 'new_youtube_id': youtube_id, 'song_info': song_info.jsonify() }) return jsonify({'message': 'invalid youtube id', 'song_info': None})
def pleblist_validate(): if not request.method == 'POST': return make_response(jsonify({'error': 'Invalid request method'}), 405) if 'youtube_id' not in request.form: return make_response(jsonify({'error': 'Missing data youtube_id'}), 400) with DBManager.create_session_scope() as session: youtube_id = request.form['youtube_id'] print(youtube_id) song_info = session.query(PleblistSongInfo).filter_by(pleblist_song_youtube_id=youtube_id).first() if song_info is not None: return jsonify({ 'message': 'success', 'song_info': song_info.jsonify() }) PleblistManager.init(config['youtube']['developer_key']) song_info = PleblistManager.create_pleblist_song_info(youtube_id) if not song_info and len(youtube_id) > 11: youtube_id = youtube_id[:11] song_info = session.query(PleblistSongInfo).filter_by(pleblist_song_youtube_id=youtube_id).first() if song_info is not None: return jsonify({ 'message': 'success', 'new_youtube_id': youtube_id, 'song_info': song_info.jsonify() }) else: song_info = PleblistManager.create_pleblist_song_info(youtube_id) if song_info: print(song_info) session.add(song_info) session.commit() return jsonify({ 'message': 'success', 'new_youtube_id': youtube_id, 'song_info': song_info.jsonify() }) return jsonify({ 'message': 'invalid youtube id', 'song_info': None })
def pleblist_add(): if not request.method == 'POST': return make_response(jsonify({'error': 'Invalid request method'}), 405) if 'youtube_id' not in request.form: return make_response(jsonify({'error': 'Missing data youtube_id'}), 400) if 'password' not in request.form: return make_response(jsonify({'error': 'Missing data password'}), 400) salted_password = generate_password_hash( config['web']['pleblist_password'], config['web']['pleblist_password_salt']) try: user_password = base64.b64decode(request.form['password']) except binascii.Error: return make_response(jsonify({'error': 'Invalid data password'}), 400) if not user_password == salted_password: return make_response(jsonify({'error': 'Invalid password'}), 401) with DBManager.create_session_scope() as session: youtube_id = request.form['youtube_id'] current_stream = session.query(Stream).filter_by(ended=False).order_by( Stream.stream_start).first() if current_stream is None: return make_response(jsonify({'error': 'Stream offline'}), 400) song_requested = PleblistSong(current_stream.id, youtube_id) session.add(song_requested) song_info = session.query(PleblistSongInfo).filter_by( pleblist_song_youtube_id=youtube_id).first() if song_info is None and song_requested.song_info is None: PleblistManager.init(config['youtube']['developer_key']) song_info = PleblistManager.create_pleblist_song_info( song_requested.youtube_id) if song_info is not False: session.add(song_info) session.commit() return jsonify({'success': True})