web.py 3.8 KB

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