web.py 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134
  1. #!/usr/bin/env python3
  2. from constants import BASE_PATH,PORT
  3. import datetime
  4. import json
  5. import tasks
  6. from db import db
  7. from flask import Flask, jsonify, request
  8. from rq import Queue
  9. app = Flask(__name__)
  10. d=db()
  11. @app.route(BASE_PATH + '/')
  12. def index():
  13. return "Hello world"
  14. @app.route(BASE_PATH + '/list/uploaded/')
  15. @app.route(BASE_PATH + '/list/uploaded')
  16. def uploaded_list():
  17. ret={'list': d.uploaded()}
  18. return jsonify(ret)
  19. @app.route(BASE_PATH + '/list/raw/')
  20. @app.route(BASE_PATH + '/list/raw')
  21. def raw_list():
  22. ret={'list': d.raw() }
  23. return jsonify(ret)
  24. @app.route(BASE_PATH + '/list/processed/')
  25. @app.route(BASE_PATH + '/list/processed')
  26. def processed_list():
  27. ret={'list': d.processed() }
  28. return jsonify(ret)
  29. @app.route(BASE_PATH + '/list/jobs/')
  30. @app.route(BASE_PATH + '/list/jobs')
  31. def jobs():
  32. working = tasks.jobs()
  33. return json.dumps({"working":working})
  34. @app.route(BASE_PATH + '/raw/<video_id>')
  35. def raw_file(video_id):
  36. ret=d.raw(video_id)
  37. print(ret)
  38. if ret is not None:
  39. ret["file"]=ret["file"].split("front")[1] #FIXME, path relativo al webserver
  40. return jsonify(ret)
  41. return "{}"
  42. @app.route(BASE_PATH + '/processed/<video_id>')
  43. def processed_file(video_id):
  44. ret=d.processed(video_id)
  45. ret["out_fname"]=ret["out_fname"].split("front")[1] #FIXME, path relativo al webserver
  46. return jsonify(ret)
  47. @app.route(BASE_PATH + '/crop/', methods=["POST"])
  48. def crop():
  49. ret={"status":"Procesando"}
  50. today=datetime.date.today()
  51. data = request.get_json()
  52. video=d.raw(data["id"])
  53. out_filename="%s_%s_%s.mp4" % (data["curso"],
  54. today.strftime('%Y%m%d'),
  55. data["desc"])
  56. job = tasks.crop_video.delay(
  57. video["file"],
  58. str(data["inicio"]),
  59. str(data["fin"]),
  60. out_filename)
  61. job.meta["type"]="Cortar"
  62. job.meta["target"]=out_filename
  63. job.save()
  64. ret["job_id"]=job.get_id()
  65. return jsonify(ret)
  66. @app.route(BASE_PATH + '/upload/', methods=["POST"])
  67. def upload():
  68. ret={"status":"Procesando"}
  69. today=datetime.date.today()
  70. data = request.get_json()
  71. video=data["id"]
  72. prof=data["prof"]
  73. texto1=data["texto1"]
  74. texto2=data["texto2"]
  75. tasks.upload_video(video,prof,texto1,texto2)
  76. return jsonify(ret)
  77. @app.route(BASE_PATH + '/cargar/<video_id>')
  78. def cargar(video_id):
  79. return jsonify(tasks.cargar_plataforma(video_id))
  80. @app.route(BASE_PATH + '/reupload/<video_id>')
  81. def reupload(video_id):
  82. today=datetime.date.today()
  83. data = d.videoData(video_id)
  84. video=data["video"]
  85. tsplit=data["title"].split("-")
  86. prof=tsplit[0]
  87. texto1=tsplit[1]
  88. texto2=tsplit[2]
  89. cutid = d.findCutId(video)
  90. tasks.upload_video(cutid,prof,texto1,texto2)
  91. ret={"status":"Procesando"}
  92. return jsonify(ret)
  93. @app.route(BASE_PATH + '/job')
  94. def job():
  95. job = tasks.long_job.delay("test")
  96. ret = {"id":job.get_id()}
  97. return jsonify(ret)
  98. @app.route(BASE_PATH+"/results/<job_key>", methods=['GET'])
  99. def get_results(job_key):
  100. try:
  101. ret=tasks.result(job_key)
  102. except Exception as e:
  103. print(e)
  104. return "Error. Probablemente job_key es invalido", 400
  105. return ret
  106. if __name__ == '__main__':
  107. app.run(host="0.0.0.0",port=PORT, debug=True)