web.py 2.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192
  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/raw/')
  15. @app.route(BASE_PATH + '/list/raw')
  16. def raw_list():
  17. ret={'list': d.raw() }
  18. return jsonify(ret)
  19. @app.route(BASE_PATH + '/raw/<video_id>')
  20. def raw_file(video_id):
  21. ret=d.raw(video_id)
  22. ret["file"]=ret["file"].split("front")[1] #FIXME, path relativo al webserver
  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 + '/crop/', methods=["POST"])
  30. def crop():
  31. ret={"status":"Procesando"}
  32. today=datetime.date.today()
  33. data = request.get_json()
  34. video=d.raw(data["id"])
  35. out_filename="%s_%s_%s.mp4" % (data["curso"],
  36. today.strftime('%Y%m%d'),
  37. data["desc"])
  38. job = tasks.jobrunner(tasks.crop_video,
  39. (video["file"],
  40. str(data["inicio"]),
  41. str(data["fin"]),
  42. out_filename,))
  43. #job = tasks.crop_video.delay(video["file"],
  44. # str(data["inicio"]),
  45. # str(data["fin"]),
  46. # out_filename)
  47. ret["job_id"]=job.get_id()
  48. return jsonify(ret)
  49. @app.route(BASE_PATH + '/list/jobs/')
  50. @app.route(BASE_PATH + '/list/jobs')
  51. def jobs():
  52. working = tasks.jobs()
  53. finished = d.getJobs()
  54. return json.dumps({"working":working, "finished":finished})
  55. @app.route(BASE_PATH + '/job')
  56. def job():
  57. job = tasks.jobrunner(tasks.long_job, ("test",))
  58. #job = tasks.long_job.delay("test")
  59. # job = tasks.upload_video.delay("titulo","/home/david/photo_2016-07-10_13-49-56.jpg","/home/david/movie-1467033043.flv")
  60. ret = {"id":job.get_id()}
  61. return jsonify(ret)
  62. @app.route(BASE_PATH+"/results/<job_key>", methods=['GET'])
  63. def get_results(job_key):
  64. try:
  65. ret=tasks.result(job_key)
  66. except Exception as e:
  67. print(e)
  68. return "Error. Probablemente job_key es invalido", 400
  69. return ret
  70. @app.route(BASE_PATH + '/uploaded')
  71. def uploaded_list():
  72. ret=[]
  73. return jsonify(ret)
  74. if __name__ == '__main__':
  75. app.run(host="0.0.0.0",port=PORT, debug=True)