def rec(data): program_data = data[0] wait_start_time = data[1] AuthToken = data[2] SAVEROOT = data[3] #ディレクトリの作成 dir_path = SAVEROOT + "/" + program_data["title"].replace(" ", "_") f.createSaveDir(dir_path) #保存先パスの作成 file_path = dir_path + "/" + program_data["title"] + "_" + program_data[ "ft"][:12] file_path = file_path.replace(" ", "_") #stream urlの取得 url = 'http://f-radiko.smartstream.ne.jp/%s/_definst_/simul-stream.stream/playlist.m3u8' % program_data[ "station"] m3u8 = gen_temp_chunk_m3u8_url(url, AuthToken) #コマンドの実行 time.sleep(wait_start_time) cwd = ( 'ffmpeg -loglevel error -headers "X-Radiko-AuthToken: %s" -i "%s" -acodec copy "%s.m4a"' % (AuthToken, m3u8, file_path)) p1 = subprocess.Popen(cwd, stdin=subprocess.PIPE, stdout=subprocess.DEVNULL, shell=True) print("sleep for " + str(program_data["dur"] - 10)) time.sleep(program_data["dur"] - 10) print("STOP SIGNAL......") p1.communicate(b'q') time.sleep(10) if (f.is_recording_succeeded(file_path)): f.recording_successful_toline(program_data["title"]) # fs = open(file_path+".m4a", "rb") # f.DropBox.upload(program_data["title"], program_data["ft"], fs.read()) url = f.Swift.upload_file(filePath=file_path + ".m4a") f.Mysql.insert(title=program_data["title"].replace(" ", "_"), pfm=program_data["pfm"], timestamp=program_data["ft"], station=program_data["station"], uri=url, path=file_path + ".m4a", info=program_data["info"]) if (f.Swift.hadInit): cmd = 'rm "%s"' % (file_path + ".m4a") subprocess.run(cmd, shell=True) # fs.close() else: f.recording_failure_toline(program_data["title"])
def rec(data): program_data = data[0] wait_start_time = data[1] AuthToken = data[2] SAVEROOT = data[3] dbx = data[4] #ディレクトリの作成 dir_path = SAVEROOT + "/" + program_data["title"].replace(" ", "_") f.createSaveDir(dir_path) dbx_path = "/radio/" + program_data["title"] res = dbx.files_list_folder('/radio') db_list = [d.name for d in res.entries] if not program_data["title"] in db_list: dbx.files_create_folder(dbx_path) #保存先パスの作成 file_path = dir_path + "/" + program_data["title"] + "_" + program_data[ "ft"][:12] file_path = file_path.replace(" ", "_") dbx_path += "/" + program_data["title"] + "_" + program_data[ "ft"][:12] + ".m4a" #print(program_data["title"]) #stream urlの取得 url = 'http://f-radiko.smartstream.ne.jp/%s/_definst_/simul-stream.stream/playlist.m3u8' % program_data[ "station"] m3u8 = gen_temp_chunk_m3u8_url(url, AuthToken) #コマンドの実行 time.sleep(wait_start_time) cwd = ( 'ffmpeg -loglevel error -headers "X-Radiko-AuthToken: %s" -i "%s" -acodec copy "%s.m4a"' % (AuthToken, m3u8, file_path)) p1 = subprocess.Popen(cwd, stdin=subprocess.PIPE, stdout=subprocess.DEVNULL, shell=True) print("sleep for " + str(program_data["dur"] - 10)) time.sleep(program_data["dur"] - 10) print("STOP SIGNAL......") p1.communicate(b'q') time.sleep(10) if (f.is_recording_succeeded(file_path)): f.recording_successful_toline(program_data["title"]) fs = open(file_path + ".m4a", "rb") dbx.files_upload(fs.read(), dbx_path) fs.close() else: f.recording_failure_toline(program_data["title"])
def rec(self, data): program_data = data[0] wait_start_time = data[1] SAVEROOT = data[2] # print(program_data["title"]) dir_name = program_data["title"].replace(" ", "_") dir_path = SAVEROOT + "/" + dir_name f.createSaveDir(dir_path) file_path = dir_path + "/" + program_data["title"].replace(" ", "_") + "_" + program_data["ft"][:12] cwd = ('rtmpdump -r rtmp://fms-base1.mitene.ad.jp/agqr/aandg1 ') cwd += ('--stop %s ' % str(program_data["dur"]*60)) cwd += ('--live -o "%s.flv"' % (file_path)) time.sleep(wait_start_time) #rtmpdumpは時間指定の終了ができるので以下を同期処理にする subprocess.run(cwd, shell=True) #変換をする cwd2 = ('ffmpeg -loglevel error -i "%s.flv" -vn -c:a aac -b:a 256k "%s.m4a"' % (file_path, file_path)) subprocess.run(cwd2.split()) print("agqr: finished!") if (f.is_recording_succeeded(file_path)): f.recording_successful_toline(program_data["title"]) # dropbox # fs = open(file_path+".m4a", "rb") # f.DropBox.upload(program_data["title"], program_data["ft"], fs.read()) # fs.close() # rclone f.Rclone.upload(dir_path, dir_name) #object storage url = f.Swift.upload_file(filePath=file_path+".m4a") f.Mysql.insert( title= program_data["title"].replace(" ", "_"), pfm= program_data["pfm"], timestamp= program_data["ft"] + "00", station= "AGQR", uri= url ) if (f.Swift.hadInit): cmd = 'rm "%s"' % (file_path + ".m4a") subprocess.run(cmd, shell=True) else: f.recording_failure_toline(program_data["title"]) os.remove(file_path + ".flv")
def rec(self, data): program_data = data[0] #print(program_data) wait_start_time = data[1] SAVEROOT = data[2] dbx = data[3] dir_path = SAVEROOT + "/" + program_data["title"].replace(" ", "_") f.createSaveDir(dir_path) dbx_path = "/radio/" + program_data["title"] res = dbx.files_list_folder('/radio') db_list = [d.name for d in res.entries] if not program_data["title"] in db_list: dbx.files_create_folder(dbx_path) dbx_path += "/" + program_data["title"] + "_" + program_data[ "ft"][:12] + ".m4a" file_path = dir_path + "/" + program_data["title"].replace( " ", "_") + "_" + program_data["ft"][:12] cwd = ('rtmpdump -r rtmp://fms-base1.mitene.ad.jp/agqr/aandg1b ') cwd += ('--stop %s ' % str(program_data["dur"] * 60)) cwd += ('--live -o "%s.flv"' % (file_path)) time.sleep(wait_start_time) #rtmpdumpは時間指定の終了ができるので以下を同期処理にする subprocess.run(cwd, shell=True) #変換をする cwd2 = ( 'ffmpeg -loglevel error -i "%s.flv" -vn -acodec copy "%s.m4a"' % (file_path, file_path)) subprocess.run(cwd2, shell=True) print("agqr finish!") if (f.is_recording_succeeded(file_path)): f.recording_successful_toline(program_data["title"]) fs = open(file_path + ".m4a", "rb") dbx.files_upload(fs.read(), dbx_path) fs.close() else: f.recording_failure_toline(program_data["title"]) os.remove(file_path + ".flv")