web.py 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111
  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/yt/')
  15. @app.route(BASE_PATH + '/list/yt')
  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(video["file"],
  57. job = tasks.jobrunner(tasks.crop_video,
  58. (video["file"],
  59. str(data["inicio"]),
  60. str(data["fin"]),
  61. out_filename,))
  62. ret["job_id"]=job.get_id()
  63. return jsonify(ret)
  64. @app.route(BASE_PATH + '/upload/', methods=["POST"])
  65. def upload():
  66. ret={"status":"Procesando"}
  67. today=datetime.date.today()
  68. data = request.get_json()
  69. video=data["id"]
  70. prof=data["prof"]
  71. texto1=data["texto1"]
  72. texto2=data["texto2"]
  73. tasks.upload_video(video,prof,texto1,texto2)
  74. return jsonify(ret)
  75. @app.route(BASE_PATH + '/job')
  76. def job():
  77. job = tasks.jobrunner(tasks.long_job, ("test",))
  78. #job = tasks.long_job.delay("test")
  79. ret = {"id":job.get_id()}
  80. return jsonify(ret)
  81. @app.route(BASE_PATH+"/results/<job_key>", methods=['GET'])
  82. def get_results(job_key):
  83. try:
  84. ret=tasks.result(job_key)
  85. except Exception as e:
  86. print(e)
  87. return "Error. Probablemente job_key es invalido", 400
  88. return ret
  89. if __name__ == '__main__':
  90. app.run(host="0.0.0.0",port=PORT, debug=True)