2013-04-15 5 views
0

동일한 디렉토리에 3 개의 파일이 있습니다. 하나는 파이썬 스크립트로, argumenet을 사용합니다. 하나는 자바 스크립트가있는 html 페이지입니다. 그리고 마지막 하나는 소스 .wav 파일입니다. 자바 스크립트가있는 웹 페이지에서 파이썬 스크립트를 실행합니다.

./myfolder/sound_manipulation.py 
./myfolder/volume_slider.html 
./myfolder/the_song.wav 

sound_manipulation.py 파일

처럼 실행될 수

python sound_manipulation.py -v 50 

그리고 the_song.wav에 기초하여 새로운 WAV 파일 new_song.wav을 생성하지만 단지 원래의 50 %를 갖는다 볼륨 레벨.

반면에 volume_slider.html에는 슬라이더가 0에서 100 %로 이동하고 onclick javascript 함수 인 update_vol()을 호출하는 버튼이 있습니다.

지금까지 update_vol()은 슬라이더의 값을 알려주고 있습니다.

function update_vol() { 
    var vol = document.getElementById('vol_slider').value; 
    alert(vol); 
} 

그러나 실제로 update_vol()이 vol를 사용하여 python 스크립트를 실행하기를 원합니다.

어떻게하면됩니까?

또한 "python sound_manipulation.py -v 50"이 실행될 때 new_song.wav의 위치를 ​​다시 volume_slider.html로 되돌릴 수 있습니까?

도와주세요. 감사!

답변

0

흠, 음, 네가 운이 없다고 생각해. 브라우저 스크립트 은 시스템에서 아무 것도 (파이썬 스크립트가 없으므로) 실행할 수 없습니다. 당신이 상상할 수 있듯이 이것은 엄청난 보안 위험을 초래할 수 있습니다. 바로 이것이 Microsoft ActiveX가 얼마나 많은 어려움을 겪고 있는지를 보여줍니다.

그래서 다른 방법은 수, 해당 스크립트에 대한 그래픽 인터페이스를 만들 겠지 :

  • 을 당신이 절대적으로 HTML을
  • 필요한 경우 파이썬 스크립트의 자바 스크립트에 해당 작업을 수행 또는 인터페이스를 생성 QT, GTK 등에서. 그런데 파이썬은 쉽게 그렇게 할 수 있습니다!
1

가장 단순하고 crudest 한 번의 CGI 스크립트로 문제를 해결할 수 있습니다.

사용자로부터 volume 값을 얻기 위해 CGI 스크립트/환경을 설정 한 다음 subprocess 모듈을 사용하여 .wav 파일을 처리하고이를 사용자에게 다시 보냅니다. 그 이상이 필요한 경우 자신의 웹 앱을 만드십시오.

import cgi 
import subprocess 
import sys 
form = cgi.FieldStorage() 
volume = form.getfirst('volume') #read from form 'volume' 

subprocess.call(['python', 'sound_manipulation.py', '-v', volume]) 

with open('new_song.wav', 'rb') as wav_file: 
    print("Content-Type: audio/wav\n") 
    sys.stdout.write(wav_file.read()) 
+0

감사합니다. 서버에서이 문제를 처리 할 준비가되었는지 알 수 있습니다. :) –

관련 문제