Skip to content
Snippets Groups Projects
Select Git revision
  • 931508db9d010b2a8de77a5d83c35d0cf338c1f5
  • mui5-annotation-on-video-stable default
  • get_setter_canvasSizeInformations
  • fix-error-div-into-p
  • annotation-on-video-v2
  • detached
  • annotation-on-video-r17
  • mui5
  • mui5-react-18
  • jacob-test
  • annotation-on-video protected
  • master
  • test-antoinev1
  • 20-fetch-thumbnail-on-annotation
  • add-research-field
  • Save
  • add-plugin
  • 14-wip-no-seek-to
  • 14-bug-on-video-time-control
  • 9_wip_videotests
  • _upgrade_material_ui
  • latest-tetras-16
  • v3.3.0
  • v3.2.0
  • v3.1.1
  • v3.1.0
  • v3.0.0
  • v3.0.0-rc.7
  • v3.0.0-rc.6
  • v3.0.0-rc.5
  • v3.0.0-rc.4
  • v3.0.0-rc.3
  • v3.0.0-rc.2
  • v3.0.0-rc.1
  • v3.0.0-beta.10
  • v3.0.0-beta.9
  • v3.0.0-beta.8
  • v3.0.0-beta.7
  • v3.0.0-beta.6
  • v3.0.0-beta.5
  • v3.0.0-beta.3
41 results

WindowViewer.js

Blame
  • app.py 2.43 KiB
    #! /usr/bin/env python3
    
    from flask import Flask
    from flask import request
    from flask import render_template
    import tempfile
    from subprocess import Popen, PIPE, STDOUT
    import os
    
    app = Flask(__name__)
    
    
    @app.route('/')
    def main():
        return render_template('home.html')
    
    
    @app.route('/unl2rdf', methods=['GET', 'POST'])
    def unl2rdf():
        if request.method == 'POST':
            unl = request.form['unl']
            # Validate formats list
            formats = list(set(['rdf', 'dot']) & set(request.form.getlist('outputs')))
            output = convertUnl(unl, formats)
        else:
            unl = None
            output = None
        return render_template('unl2rdf.html', unl=unl, output=output)
    
    
    def convertUnl(unl, outputs):
        res = {}
    
        # Get a temporary filename
        with tempfile.NamedTemporaryFile() as temp:
            out_name = os.path.basename(temp.name)
            out_dir = os.path.dirname(temp.name)
    
        with tempfile.NamedTemporaryFile(mode="w") as in_file:
            # Remove CRLF and flush output to avoid java errors
            in_file.write(unl.replace("\r\n", "\n"))
            in_file.flush()
    
            # Run java parser
            cmd = ['java', '-jar', '/opt/unl2rdf.jar',
                   '--input-file', in_file.name,
                   '--output-Dir', out_dir, '--output-file', out_name,
                   '--output-type', ','.join(outputs)]
            with Popen(cmd, stdout=PIPE, stderr=STDOUT) as p:
                p.wait()
                if p.returncode != 0:
                    res['error'] = "unl2rdf: \n\n"+p.stdout.read().decode()
    
        # Handle rdf output if any
        if 'rdf' in outputs:
            try:
                fname = '{}/{}.ttl'.format(out_dir, out_name)
                with open(fname, 'r') as f:
                    res['rdf'] = f.read()
                os.remove(fname)
            except FileNotFoundError:
                res['rdf'] = 'Error : no ttl file'
    
        # Handle dot output if any
        if 'dot' in outputs:
            try:
                fname = '{}/{}.dot'.format(out_dir, out_name)
                with open(fname, 'r') as f:
                    res['dot'] = f.read()
                cmd = ['dot', '-Tsvg', fname]
                with Popen(cmd, stdout=PIPE, stderr=PIPE) as p:
                    p.wait()
                    if p.returncode != 0:
                        res['error'] += "Dot: \n\n"+p.stderr.read().decode()
                    else:
                        res['svg'] = p.stdout.read().decode()
                    os.remove(fname)
            except FileNotFoundError:
                res['svg'] = 'Error : no dot file'
    
        return res