web.py 2.1 KB

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