远程控制pythonclass
Control python class remotely
我制作了 python class 来控制我家里的音响系统,class 看起来像这样:
from django.db import models
import youtube_dl, pygame, glob
class PlayerControl(object):
def __init__(self):
pygame.mixer.init()
def download_music(self, video_url):
ydl_opts = {
'format': 'bestaudio/best',
'postprocessors': [{
'key': 'FFmpegExtractAudio',
'preferredcodec': 'mp3',
'preferredquality': '192',
}],
'forcefilename': True,
}
ydl = youtube_dl.YoutubeDL(ydl_opts);
ydl.download(video_url)
def get_mp3_files_list(self):
return glob.glob("*.mp3")
def play_music(self, fileName):
pygame.mixer.music.load("1.mp3")
pygame.mixer.music.play()
def pause(self):
pygame.mixer.music.pause()
def replay(self):
pygame.mixer.music.play()
def get_volume(self):
return pygame.mixer.music.get_volume()
def set_volume(self, volume_to_set):
pygame.mixer.music.set_volume(volume_to_set)
为了向前迈出一步,我想制作一个界面来远程控制这个 class,使用比 python shell...[= 更好的界面13=]
我想通过浏览器控制它是最简单的事情,
我的问题是 - 如何使用 HTTP 请求从浏览器修改 python classes。
如果您想通过 http 控制它,您需要利用现有的资源构建一个可访问的 Web API。目前这方面的标准行业惯例是 REST API,但对于您的第一次尝试,我不会陷入细节。
我建议您从微框架开始,例如 Bottle 或 Flask。好消息是你已经编写了你想要与之交互的模型,现在你只需要将它连接到某个东西上。
按照 MVC 模式,您需要编写一个视图层,它从您的模型或其方法的 return 值中获取信息,并以您希望使用的方式显示它。然后使用您选择的 Web 微框架编写一个控制器,它将模型和视图绑定在一起,这样当您在给定端点上发出 http 请求时,它会调用相关方法并 returns 相关数据。
我在这里保持了较高的水平,但很乐意回答评论中的具体问题。
我制作了 python class 来控制我家里的音响系统,class 看起来像这样:
from django.db import models
import youtube_dl, pygame, glob
class PlayerControl(object):
def __init__(self):
pygame.mixer.init()
def download_music(self, video_url):
ydl_opts = {
'format': 'bestaudio/best',
'postprocessors': [{
'key': 'FFmpegExtractAudio',
'preferredcodec': 'mp3',
'preferredquality': '192',
}],
'forcefilename': True,
}
ydl = youtube_dl.YoutubeDL(ydl_opts);
ydl.download(video_url)
def get_mp3_files_list(self):
return glob.glob("*.mp3")
def play_music(self, fileName):
pygame.mixer.music.load("1.mp3")
pygame.mixer.music.play()
def pause(self):
pygame.mixer.music.pause()
def replay(self):
pygame.mixer.music.play()
def get_volume(self):
return pygame.mixer.music.get_volume()
def set_volume(self, volume_to_set):
pygame.mixer.music.set_volume(volume_to_set)
为了向前迈出一步,我想制作一个界面来远程控制这个 class,使用比 python shell...[= 更好的界面13=]
我想通过浏览器控制它是最简单的事情, 我的问题是 - 如何使用 HTTP 请求从浏览器修改 python classes。
如果您想通过 http 控制它,您需要利用现有的资源构建一个可访问的 Web API。目前这方面的标准行业惯例是 REST API,但对于您的第一次尝试,我不会陷入细节。
我建议您从微框架开始,例如 Bottle 或 Flask。好消息是你已经编写了你想要与之交互的模型,现在你只需要将它连接到某个东西上。
按照 MVC 模式,您需要编写一个视图层,它从您的模型或其方法的 return 值中获取信息,并以您希望使用的方式显示它。然后使用您选择的 Web 微框架编写一个控制器,它将模型和视图绑定在一起,这样当您在给定端点上发出 http 请求时,它会调用相关方法并 returns 相关数据。
我在这里保持了较高的水平,但很乐意回答评论中的具体问题。