远程控制python类

时间:2015-02-03 11:07:16

标签: python python-2.7 remote-access

我制作了python类来控制我家里的音响系统,这个类看起来像那样:

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)

为了向前迈出一步,我希望使用比python shell更好的界面来创建一个远程控制这个类的接口......

我想通过浏览器控制它是最简单的事情, 我的问题是 - 如何使用HTTP请求从浏览器修改python类。

1 个答案:

答案 0 :(得分:3)

如果你想通过http控制它,你需要拿走你拥有的东西并构建一个可通过Web访问的API。目前标准的行业惯例是REST API,但是对于您的第一次尝试,我不会被详细介绍。

我建议你从一个微型框架开始,比如Bottle或Flask。好消息是你已经编写了想要与之交互的模型,现在你只需要将它与某些内容联系起来。

遵循MVC模式,您将需要编写一个View层,该层从模型中获取信息,或者从其方法的返回值中获取信息,并以您希望使用的方式显示它。然后使用您选择的Web微框架编写一个控制器,它将模型和视图绑定在一起,这样当您在给定端点上发出http请求时,它会调用相关方法并返回相关数据。

我在这里保持了很高的水平,但很乐意回答评论中的具体问题。