将API_KEY存储在环境变量中,并在播放列表URL中使用

时间:2019-03-07 22:48:08

标签: bash environment-variables global-variables audio-streaming playlist

我使用具有许多频道的流服务(di.fm)。每个频道都有一个我从CLI(使用mpv)流式播放的播放列表。每个播放列表中的每个URL都存储API密钥。

我想将API KEY存储在各个播放列表之外,因此,例如,如果我更改了API KEY,则不必更改每个播放列表。

我在Mac上。

1)声明export DI_KEY=""的最佳(最安全)位置是什么?在.bashrc中,我是第一个想到的,除了将其备份到github。还有其他更好的地方来声明每次我输入bash时都会创建的env var吗?

2)在播放列表文件中,如何在URL中使用$DI_KEY

[playlist]
NumberOfEntries=1
File1=http://prem4.di.fm:80/00sclubhits?$DI_KEY
Title1=DI.FM - 00s Club Hits
Length1=0
Version=2

仅仅直接引用它是行不通的。

enter image description here

我敢肯定,这可能会在其他地方得到解答,但是在所有搜索中,我找不到任何有用的答案,尤其是问题2。

1 个答案:

答案 0 :(得分:1)

关于在.bashrc之外设置环境变量,您可以创建一个单独的文件来定义敏感变量,然后从.bashrc内部获取该变量。

例如,创建文件~.my-private-variables,将文件名添加到.gitignore,并将行export DI_KEY="12345"添加到此文件。然后在.bashrc中添加以下代码块:

if [ -f ~/.my-private-variables ]; then                                                                               
  . ~/.my-private-variables                                                                                         
fi  

关于播放列表文件,bash没有运行该文件,因此不会扩展环境变量。

您可以在bash开始时动态生成播放列表,如下所示:

#!/bin/bash

filename=playlist-1.pls
baseurl=http://prem4.di.fm:80

cat << EOF > $filename
[playlist]
NumberOfEntries=1
File1=${baseurl}/00sclubhits?${DI_KEY}
Title1=DI.FM - 00s Club Hits
Length1=0
Version=2
EOF

这将展开变量并将其写入文件,在本例中为playlist-1.pls在当前工作目录中。您可以在引用播放列表目录的filename变量中添加绝对路径。

要运行此脚本,您可以创建一个名为playlist-generator的脚本,并如上所述在.bashrc中提供该脚本。您可以在此处添加任意数量的播放列表。