def article_edit(article_id): """Takes in an article ID and displays that article for playback and edit purposes""" user_id_value = session.get("user_id") article_object = Article.get_article_by_article_id(article_id) if user_id_value: if int(user_id_value) == article_object.user_id: return render_template("article_edit.html", article_object=article_object) else: return redirect("/login")
def read_text(): """Takes in nothing, and returns an audio stream in chunks""" user_id_value = session.get("user_id") if user_id_value: # finds credentials associated with adminuser profile boto_session = BotoSession(aws_access_key_id=environ['ACCESS_KEY'], aws_secret_access_key=environ['SECRET_KEY'], region_name=environ['AWS_DEFAULT_REGION']) polly = boto_session.client("polly") # get the text from database using article ID rather than sending it via the request to route text = request.args.get("text") voice_id = request.args.get("voice") article_id = request.args.get("article_id") article_object = Article.get_article_by_article_id(int(article_id)) text_sequences = segment_text(text) audio_stream_sequences = [] for sequence in text_sequences: if int(user_id_value) == article_object.user_id: response = polly.synthesize_speech(Text=sequence, VoiceId=voice_id, OutputFormat='mp3') audio_stream = response.get("AudioStream") audio_stream_sequences.append(audio_stream) for stream in audio_stream_sequences: print "streamtype" print type(stream) if "user_id" in session: session_user_id = session["user_id"] if article_object.user_id == session_user_id: article_object.read_status = True article_object.last_listened = datetime.now() db.session.commit() def generate(): index = 0 while index < len(audio_stream_sequences): data = audio_stream_sequences[index].read(1024) while data: yield data data = audio_stream.read(1024) index += 1 return Response(generate(), mimetype='audio/mpeg') else: return redirect("user-articles/" + str(user_id_value)) else: return redirect("/login")
def article_closeup(article_id): """Takes in an article ID and displays that article for playback and edit purposes""" user_id_value = session.get("user_id") article_id = int(article_id) article_object = Article.get_article_by_article_id(article_id) if user_id_value: if article_object.user_id == int(user_id_value): #using credentials for adminuser boto_session = BotoSession( aws_access_key_id=environ['ACCESS_KEY'], aws_secret_access_key=environ['SECRET_KEY'], region_name=environ['AWS_DEFAULT_REGION']) polly = boto_session.client("polly") response = polly.describe_voices() all_voices = response.get('Voices') return render_template("article_closeup.html", article_object=article_object, all_voices=all_voices) else: return redirect("user-articles/" + str(user_id_value)) else: return redirect("/login")
def delete_article(article_id): """Takes in an article id via URL and deletes article with that article id""" user_id = session.get("user_id") Article.get_article_by_article_id(article_id) Tagging.delete_taggings_with_article_id(article_id) return redirect("/user-articles/" + str(user_id))