Configuration stuff added.
This commit is contained in:
parent
fa69b264be
commit
8e47e88dc8
2 changed files with 32 additions and 8 deletions
38
radiorec.py
38
radiorec.py
|
@ -8,21 +8,23 @@ with "at" or "crontab".
|
||||||
|
|
||||||
import argparse
|
import argparse
|
||||||
import configparser
|
import configparser
|
||||||
|
import os
|
||||||
|
import sys
|
||||||
import threading
|
import threading
|
||||||
import urllib.request
|
import urllib.request
|
||||||
|
|
||||||
def _check_args():
|
def check_args():
|
||||||
parser = argparse.ArgumentParser(description='This program records '
|
parser = argparse.ArgumentParser(description='This program records '
|
||||||
'internet radio streams.')
|
'internet radio streams.')
|
||||||
parser.add_argument('station', type=str, help='Name of the radio station '
|
parser.add_argument('station', type=str, help='Name of the radio station '
|
||||||
'(see config file for a list)')
|
'(see config file for a list)')
|
||||||
parser.add_argument('duration', type=_check_duration,
|
parser.add_argument('duration', type=check_duration,
|
||||||
help='Recording time in minutes')
|
help='Recording time in minutes')
|
||||||
parser.add_argument('name', nargs='?', type=str,
|
parser.add_argument('name', nargs='?', type=str,
|
||||||
help='A name for the recording')
|
help='A name for the recording')
|
||||||
return parser.parse_args()
|
return parser.parse_args()
|
||||||
|
|
||||||
def _check_duration(value):
|
def check_duration(value):
|
||||||
try:
|
try:
|
||||||
value = int(value)
|
value = int(value)
|
||||||
except ValueError:
|
except ValueError:
|
||||||
|
@ -33,20 +35,40 @@ def _check_duration(value):
|
||||||
else:
|
else:
|
||||||
return value
|
return value
|
||||||
|
|
||||||
def record(stoprec):
|
def read_settings():
|
||||||
|
settings_base_dir = ''
|
||||||
|
if sys.platform == 'linux':
|
||||||
|
settings_base_dir = os.getenv('HOME') + os.sep + '.config' + os.sep + 'radiorec'
|
||||||
|
elif sys.platform == 'win32':
|
||||||
|
settings_base_dir = os.getenv('APPDATA') + os.sep + 'radiorec'
|
||||||
|
settings_base_dir += os.sep
|
||||||
|
config = configparser.ConfigParser()
|
||||||
|
config.read(settings_base_dir + 'settings.ini')
|
||||||
|
return dict(config.items())
|
||||||
|
|
||||||
|
def record(stoprec, streamurl):
|
||||||
target = open('./test.mp3', "wb")
|
target = open('./test.mp3', "wb")
|
||||||
conn = urllib.request.urlopen('http://dradio_mp3_dlf_m.akacast.akamaistream.net/7/249/142684/v1/gnl.akacast.akamaistream.net/dradio_mp3_dlf_m')
|
conn = urllib.request.urlopen(streamurl)
|
||||||
#print(conn.getheader('Content-Type'))
|
#print(conn.getheader('Content-Type'))
|
||||||
while(not stoprec.is_set() and not conn.closed):
|
while(not stoprec.is_set() and not conn.closed):
|
||||||
target.write(conn.read(1024))
|
target.write(conn.read(1024))
|
||||||
|
|
||||||
def main():
|
def main():
|
||||||
args = _check_args()
|
args = check_args()
|
||||||
|
settings = read_settings()
|
||||||
|
streamurl = ''
|
||||||
|
try:
|
||||||
|
settings['STATIONS'][args.station]
|
||||||
|
except KeyError:
|
||||||
|
print('Unkown station name: ' + args.station)
|
||||||
|
return
|
||||||
stoprec = threading.Event()
|
stoprec = threading.Event()
|
||||||
recthread = threading.Thread(target = record, args = (stoprec,), daemon = True)
|
|
||||||
|
recthread = threading.Thread(target = record,
|
||||||
|
args = (stoprec, streamurl), daemon = True)
|
||||||
recthread.start()
|
recthread.start()
|
||||||
recthread.join(args.duration * 60)
|
recthread.join(args.duration * 60)
|
||||||
|
|
||||||
if(recthread.is_alive):
|
if(recthread.is_alive):
|
||||||
stoprec.set()
|
stoprec.set()
|
||||||
|
|
||||||
|
|
2
settings.ini
Normal file
2
settings.ini
Normal file
|
@ -0,0 +1,2 @@
|
||||||
|
[STATIONS]
|
||||||
|
dlf = http://dradio_mp3_dlf_m.akacast.akamaistream.net/7/249/142684/v1/gnl.akacast.akamaistream.net/dradio_mp3_dlf_m
|
Loading…
Reference in a new issue