geemusic, 谷歌音乐与亚马逊Alexa之间的桥梁

分享于 

19分钟阅读

GitHub

  繁體 雙語
A bridge between Google Music Free Tier and Amazon's Alexa
  • 源代码名称:geemusic
  • 源代码网址:http://www.github.com/stevenleeg/geemusic
  • geemusic源代码文档
  • geemusic源代码下载
  • Git URL:
    git://www.github.com/stevenleeg/geemusic.git
    Git Clone代码到本地:
    git clone http://www.github.com/stevenleeg/geemusic
    Subversion代码到本地:
    $ svn co --depth empty http://www.github.com/stevenleeg/geemusic
    Checked out revision 1.
    $ cd repo
    $ svn up trunk
    

    GeeMusic是一个Alexa的技能,可以桥接谷歌音乐和亚马逊的Alexa。 它希望救救所有想要回声/点但不想要 switch 音乐或者额外支付亚马逊音乐无限订阅。

    这个项目仍处于早期阶段,并且受到一点改变,但是它的功能并准备好了。 唯一的一个选择是,你需要在自己的服务器上运行它,以便时间为( 理想情况下,我最终将在mvc技能市场上发布这个信息,但是之前有很多工作要做。)。 这意味着你应该熟悉如何设置你自己的HTTPS服务器。

    注释

    这项技能不受谷歌的支持,也不。 ,based Simon Simon Simon Simon Simon, Simon Simon,只要谷歌没有决定以主要方式锁定它的api,这就 is。

    使用和一个应用特定密码的建议。 如果无法使用应用程序specifc密码和 2,则可能会要求你重新设置密码,直到你使用密码。 由于失败,有多个登录报告失败,因为未能执行这里步骤。 更多关于应用程序特定密码的信息这里是,这里是 2FA。

    支持回显语言

    这项技能是在Amazon美国账户的设备上开发的。这是由于使用ask库中的ask开发者预览features功能而使用的English(US)。 因此,只有在美国开发者才可以使用它( 编辑: 六个月后仍然没有访问英国/de的权限。

    如果 English(UK) 和日本用户设置技能稍有不同,则会有一个解决方法。

    这个语言问题只影响 echo/amazon的内容,而不影响你的谷歌音乐帐户 #100.

    特性

    这个小狗能做什么你可能会问? 下面列出了一个示例短语,你可以在获得GeeMusic和运行时尝试一下。 请记住,每个短语都需要以"Alexa,告诉 GeeMusic。"为前缀,以便让in知道从GeeMusic中请求音乐,而不是音乐服务。 他们也是模糊的,所以可以随意尝试一些短语的变化,看看他们是否能工作。

    当前实现

    
    Play artist Radiohead
    
    
    Play songs by LCD Soundsystem
    
    
    Play top songs by Nujabes
    
    
    Play music by A Tribe Called Quest
    
    
    
    Play the album Science For Girls
    
    
    Play album Plastic Beach
    
    
    Play the album To Pimp A Butterfly by Kendrick Lamar
    
    
    Play album and The Anonymous Nobody by De La Soul
    
    
    
    Play the song Fitter Happier
    
    
    Play song Cocoa Butter Kisses
    
    
    Play the song Drunk Girls by LCD Soundsystem
    
    
    Start a radio station for artist Weezer
    
    
    Play some music (plays your I'm Feeling Lucky station)
    
    
    Start playlist Dancy Party
    
    
    
    What is currently playing?
    
    
    Like this song
    
    
    Dislike this song
    
    
    Thumbs-up this song
    
    
    Thumbs-down this song
    
    
    
    Play the latest album by Run The Jewels
    
    
    List the latest albums by The Wonder Years
    
    
    List all albums by Pink Floyd (up to 25 listed)
    
    
    Play an album by Dryjacket
    
    
    Play a different album
    
    
    
    Skip to Scar Tissue by Red Hot Chili Peppers
    
    
    Jump to Knee Deep by Zac Brown Band
    
    
    
    

    当然你也可以说"alexa,"","等等。

    路线图

    
    Play a station for bedtime
    
    
    Play a station for partying
    
    
    
    
    • 播放bedtime睡眠
    • 为聚会打一个站

    设置

    让我们切入正题: 你如何在你自己的点/echo上启用这个技能? 不幸的是这个过程有点麻烦,但我会尽可以能简单地使它变得简单。

    在UNIXy环境中已经测试了以下指令,即 OS X。Arch和 Ubuntu。 如果你能够在 Windows 上运行,可以能很好,但如果不是,请不要打开问题,因为它是不支持的环境。

    启动本地开发服务器

    让我们从让GeeMusic服务器运行在你的机器上开始。 在开始之前,请注意,这里服务器必须随时运行,并且可以通过互联网公开访问。 如果服务器关闭了聚会。

    首先,将这个仓库克隆到你的服务器:

    $ git clone https://github.com/stevenleeg/geemusic.git

    接下来,确保已经安装了 python 3并安装并安装依赖项,如果安装了这些依赖项,最好在 virtualenv 中进行安装,但是如果你安装了它,那么你可以忽略这些步骤,并只。 注意,某些依赖项需要一些你在系统中可能还没有的软件包: python3-devlibssl-devlibffi-dev。 在Ubuntu上,这些可以通过运行 sudo apt-get install python3-dev libssl-dev libffi-dev

    # Run this if you have virtualenv installed:$ virtualenv. venv
    $ source. venv/bin/activate# Continue on if you have virtualenv or start here if you don't:$ pip3 install -r requirements.txt

    安装需求后,我们需要创建一个文件 .env 来存储我们的凭证。 下面是一个示例:

    
    # Google credentials
    
    
    GOOGLE_EMAIL=steve@stevegattuso.me
    
    
    GOOGLE_PASSWORD=password
    
    
    
    # Publicly accessible URL to your server, WITHOUT trailing slash
    
    
    APP_URL=https://alexa-geemusic.stevegattuso.me
    
    
    
    # Debug mode: Set to True or False
    
    
    DEBUG_MODE=False
    
    
    
    

    如果你在Google帐户上启用了 2-factor 身份验证,并且只在这里文件中插入应用程序特定的密码,那么我就会对它的进行高度的reccomend身份验证。 记住,它是以明文形式存储在本地计算机上的 ! ( TODO: 修复这里问题) !

    准备好 .env 文件之后,让我们启动服务器。 在亲自运行服务器的过程中,我亲自使用领班插件,因为它会自动将文件加载到我的环境中并启动web服务器。 当然还有它的他方法可以做到这一点,但如果你想遵循我的指导,你可以运行 gem install foreman

    一旦 foreman 准备好了,只需运行

    $ foreman start

    你应该可以看到你的web服务器从 http://localhost:5000 ( 如果你用浏览器访问它,它不会做得太多)。

    有关设置服务器的替代方案,请参阅可选节,如果你不熟悉自己的HTTPS服务器,请参阅。

    在Amazon上创建开发技能

    打开 Alexa仪表板,点击 Alexa技能套件框中的"开始"。 然后点击右上角的黄色"添加新技能"按钮。

    通过各个部分

    技能信息

    字段值
    技能类型自定义交互模型
    语言选择美国英语,英国英语或者日语
    姓名Gee音乐
    调用名称gee音乐
    音频播放器是的

    交互模型

    这里设置因回显设备使用的语言设置而有所不同。

    关于支持的语言,请参见顶部的注释。

    美国英语用户

    在"交互模型"步骤中,将内容粘贴到 speech_assets/interactionModel.json 到JSON编辑器。

    其他语言用户

    在"交互模型"步骤中,将内容粘贴到 speech_assets/non_us_custom_slot_version/interactionModel.json 到JSON编辑器。

    配置

    我们将把我们的技能指向开发服务器的URL。 选择HTTPS作为端点类型,并在相应的框中输入服务器的URL。 请记住,你的开发服务器必须公开访问,使用HTTPS可以连接/交互。

    如果开发服务器在internet上已经可以用的服务器上运行,请键入它的URL ( 如 https://geemusic.example.com/alexa )。 确保包含 /alexa,否则将无法工作 !

    如果你防火墙后面的计算机上运行服务器,我们将需要通过隧道公开服务器,这样才能正常工作。 我通常在这些情况下使用 ngrok,并使用它来开发这个项目。 启动隧道在控制台窗口中运行 ngrok http 4000。 然后你应该看到一些 url,其中之一是为你的开发服务器公开访问的HTTPS链接。 复制这个 URL,确保附加 /alexa,最终结果看起来像 https://[some-code].ngrok.io/alexa重要: 确保你的文件更新到这个新的网址,否则Alexa将不能流音乐 !

    你还需要在继续之前为"帐户链接"字段选择"没有"。

    SSL证书

    使用 ngrok 或者 heroku选择第二个选项"我的开发端点是具有证书颁发机构的通配符证书的域的子域。"

    测试

    向下滚动到"服务模拟器"部分,检查技巧与 Alexa correcty输入单词帮助 ,然后单击"ask音乐",然后在服务响应框中看到某些结果 JSON。 然后你可以尝试测试 like_"用Radiohead在彩虹中播放专辑"_

    发布信息,隐私&合规性

    不要填写这些内容,确保你从不点击"提交认证"。 你没有向Amazon提交技能,将它的包括在 public 技能存储中。

    如果一切顺利,技能也应该在你的echo/点上运行 ! 看看这个自述文件的功能部分,以获得你可以告诉它的内容。

    通过Alexa享受streaming音乐 !

    ( 可选) 设置Heroku实例

    对于你来说,设置一个实例可以能是一个更容易的选择,这些说明详细地说明了。 以下步骤取代了安装本地服务器的需要。 第一个必须在本地机器上安装Heroku和一个关联的帐户。 访问文档有关设置这个的详细信息。

    然后必须克隆存储库。

    $ git clone https://github.com/stevenleeg/geemusic.git

    接下来,cd 将部署代码。 然后,通过键入以下两个命令来设置Heroku服务器。

    $ heroku create
    $ git push heroku master

    我们现在需要将它配置为使用你的Google帐户。 键入以下命令,并使用你自己的帐户凭据和应用程序设置替换详细信息。

    $ heroku config:set GOOGLE_EMAIL=steve@stevegattuso.me
    $ heroku config:set GOOGLE_PASSWORD=[password]
    $ heroku config:set APP_URL=https://[heroku_app_name].herokuapp.com
    $ heroku config:set DEBUG_MODE=False

    此时,你的服务器应按现场方式运行,并准备开始接受 https://[heroku_app_name].herokuapp.com/alexa. 注意,在使用免费层时,当服务器收到超过 30分钟的请求时,可能会遇到超时错误。 但是,你可以使用服务( 如 Kaffeine ) 来最小化停机时间。

    ( 可选) 使用 Docker

    如果服务器上运行 Docker,则将这里服务器作为 Docker 容器运行可能对你的安装有最大意义。 目前DockerHub中没有可用的图像,但是构建容器非常容易。

    首先,克隆这个存储库。

    $ git clone https://github.com/stevenleeg/geemusic.git

    现在,cd 进入并构建容器。 我们把它标记为'geemusic'但是你可以随便叫它什么。

    $ docker build -t geemusic .

    最后,使用适当的环境变量 和端口来运行容器。 或者设置一个撰写文件或者你的编排引擎,但是这些不在本文的讨论范围内。

    $ docker run -d -e GOOGLE_EMAIL=steve@stevegattuso.me -e GOOGLE_PASSWORD=[password] 
    -e APP_URL=http://alexa-geemusic.stevegattuso.me -p 5000:5000 geemusic

    现在你已经准备好了。

    ( 可选) 使用 AWS Lambda

    注意:注意这里成本大约为 $0.30,根据使用情况,每月10个。

    为AWS的Lambda设置实际上并不是那么糟糕。 不过,你需要先创建AWS帐户,然后单击"创建AWS帐户",然后单击并按照说明创建帐户。

    我们还需要更多的依赖性,因这里在你的virtualenv 键入以下内容时: pip install zappa awscli 然后 pip freeze> requirements.txt 如果你希望覆盖基本 requirements.txt 文件,并将它的部署到 AWS。

    部署第 1部分。 设置IAM帐户。

    创建你的帐户后:

    • 打开 IAM控制台,并使用你的帐户登录,你应该已经。
    • 在导航窗格中,选择用户。
    • 单击 Add User 按钮。
    • 将用户Zappa部署命名为deploy访问类型 Programmatic,然后单击 Next: Permissions 按钮。
    • 在权限页上,单击直接附加现有策略选项。
    • 大量策略的列表是 diplayed。 找到AdministratorAccess策略,单击它的复选框,然后单击 Next: Review 按钮。
    • 最后,查看上面的步骤显示的信息,然后单击 Create User 按钮。
    • 创建用户后,它的Access key IDSecret access key 将显示为( 点击秘密访问旁边的Show 链接以显示它)。
    • 保持标签打开或者将它们复制到安全的地方,因为以后我们需要这些。 像你的密码一样对待那些密钥,因为它们拥有相同的权限。

    部署第 2部分。 本地配置IAM凭据。

    键入aws配置以开始本地设置。

    按照propts输入你的Access key IDSecret access key。 对于默认区域 NAME,键入: 用于默认输出格式的us-east-1 ( 它必须是有效的区域),接受输入键,接受默认值。

    aws configure 命令将凭证和配置安装在你的主页directoy中的. aws 目录中。 Zappa知道如何使用这种形状来创建部署烧瓶请求技能所需的AWS资源。

    现在我们几乎可以用Zappa来部署我们的技能了。

    部署第 3部分。 使用Zappa部署技能。

    在终端中,通过键入以下命令创建Zappa配置文件: zappa init

    初始化完成后,通过键入以下命令部署该技能: zappa deploy dev

    编辑 zappa_settings.json 文件并填写 redacted 信息,使用你的部署特定的个人信息

    然后键入以下内容:zappa update dev

    最后,你必须更新你的,配置选项卡,以使用这个 URL +/alexa.,例如它看起来像这样 https://[random-stuff].execute-api.us-east-1.amazonaws.com/dev/alexa 配置的其他内容与heroku设置相同。

    它仍然使用通配符SSL证书,并且不使用帐户链接或者列表读/写。

    ( 可选) Last.fm-支持

    如果你有重要的技术专长,你才会尝试。 注意:将所有播放到的音轨都播放到 Last.fm 按照的指示操作,以获取认证令牌。

    然后将它们作为environement变量添加到你的设置( 比如。 LAST_FM_APILAST_FM_API_SECRETLAST_FM_SESSION_KEY )。 完成启用创建 LAST_FM_ACTIVE environement变量并将它的设置为 True

    ( 可选) 语言支持

    下面列出了你所需要的语言,你可以简单地将 LANGUAGE 环境变量设置为下面指定的2字符国家代码:

    
    # English
    
    
    LANGUAGE=en
    
    
    
    # German
    
    
    LANGUAGE=de
    
    
    
    

    如果要添加语言,请在 geemusic/templates/ 目录中添加一个 PR,并使用全局两个字符国家代码+ yaml 添加你想要支持的语言的翻译。 例如文件的geemusic/templates/en.yaml 为。

    故障排除

    暂停/恢复跳到歌曲的开头。

    Flask 要求有一个 Bug,它不能从正确的偏移量恢复歌曲。 确保它,并且你的pip模块都是最新的。

    音乐不会开始播放

    Alexa响应你的请求但不播放音乐的问题通常是由 APP_URL 环境变量设置不当引起的。 确保它设置为类似于 APP_URL=https://ff9b5cce.ngrok.io没有结尾斜杠或者 /alexa

    请随意打开问题或者公关,如果你找到了一个 Bug。 如果你想要实现一个特性,请在创建公关之前打开一个问题,以便我可以查看它。

    许可证

    这个项目是在GNU通用 public 许可证v3.0下发布的。 有关更多信息,请参见 LICENSE.txt。


    亚马逊  音乐  bri  Bridge  alex  Alexa  
    相关文章