Wordpress 等でのPHPのマルウェア・ウィルス・改ざんコードをデコードして難読化をオンラインで解除し、
元の読みやすいコードに戻し解読できます。
<?php
function rf_first_menu() { global $menudef; global $rfname; $nw = time(); rfplay_title($nw); $piddata = rfgw_ffplay_pid(); $n = rfplay_pid_disp($piddata); echo_scr(2,""); $rcnt = rfgw_rec_cnt_all(); $n = 0; foreach($menudef as $m) { $ttl = $m['title']; $opt = $m['opt']; if ($ttl == "-") { echo_menu(2,"",1); continue; } $n++; echo_menu(2,sprintf("%2d. %s",$n,$ttl),1); } $mn_max = count_73($menudef); echo_scr(2, ""); $ans = echo_select(2, $rfname."メニューを選択(1-".$mn_max.",end=x) : "); return $ans; } function rf_second_menu($ans) { global $menudef; global $menudef_s; global $menudef_t; $mn_cnt = count_73($menudef_s); if ($mn_cnt == 1) return 1; $fmt0 = "%2d. %s"; rfplay_subtitle(""); $n = 0; $m2 = array(); foreach($menudef_s as $m) { $ttl = $m['title']; if ($ttl == "-") { echo_menu(2,"",1); continue; } $n++; if ($m['opt'] == 0) { $ttl2 = sprintf($fmt0,$n,$ttl); } else { $ttl2 = sprintf($fmt0,$n,"-"); } echo_menu(2,$ttl2,1); $m2[$n] = $m['opt']; } echo_menu_ret_wt(); echo_scr(2, ""); $ans2 = echo_select(2, "サブメニューを選択(1-$n) : "); $ans2 = rfmenu_check_range($ans2,1,$n); if ($ans2 === false) { $ans2 = ""; } else { if ($m2[$ans2] == 1) $ans2 = ""; } return $ans2; } function rf_third_menu($ans,$ans2) { $ret = rfplay_menu_ans($ans, $ans2); return $ret; } function rf_para_check($str) { global $scr_height; global $scr_width; $ret[0] = 0; $ret[1] = 0; $ret[2] = 0; $ret[3] = 0; $para = explode(",",$str); $n = count_73($para); switch($n) { case 1: $ret[0] = $para[0]; break; case 2: $ret[0] = $para[0]; $ret[1] = $para[1]; break; case 4: $ret[0] = $para[0]; $ret[1] = $para[1]; $ret[2] = $para[2]; $ret[3] = $para[3]; break; default: break; } if (($ret[0] != 0) && ($ret[0] != 1)) $ret[0] = 0; if (($ret[1] != 0) && ($ret[1] != 1)) $ret[1] = 0; if ($ret[2] == 0) $ret[2] = $scr_height; if ($ret[3] == 3) $ret[2] = $scr_width; return $ret; } function rfplay_title($nw) { global $nowarea; global $rfriends_parts; global $radiru_area_1; global $rftitle; global $ui_mode; $dt = date("y/m/d(D) H:i:s", $nw); $tx11 = "rfplay"; $tx13 = $rfriends_parts[3]; $rftitle = "$tx11 $tx13 [$dt]"; $rfsubtitle = array(); if ($ui_mode == 0) { echo_scr(2, ""); echo_scr(2, "$rftitle"); } $radiko_ttl = "radiko: $nowarea"; $radiru_ttl = "radiru: ".$radiru_area_1; echo_msg(2," $radiko_ttl $radiru_ttl"); } function rfplay_menu_ans($ans, $ans2) { global $menudef; global $menudef_s; global $menudef_t; global $ex_radiko; global $ex_timefree; global $ex_radiru; global $ex_radiru_vod; $ret = 0; switch ($ans) { case 1: rfplay_subtitle("聴取するラジコ番組を選択します。"); rfmenu_onair($ex_radiko); break; case 2: rfplay_subtitle("聴取するタイムフリー番組を選択します"); rfplay_timefree(); break; case 3: rfplay_subtitle("聴取するらじる番組を選択します。"); rfmenu_onair($ex_radiru); break; case 4: rfplay_subtitle("聴取するらじる聞き逃し番組を選択します。"); rfplay_vod(); break; case 5: rfplay_subtitle("聴取中止・音量調整を行います。"); rfmenu_play_vol(0); break; case 6: $ret = rfplay_ini($ans2); break; case 7: $ret = rfplay_about($ans2); break; default: break; } return($ret); } function rfplay_subtitle($mes) { global $ttl_no; global $ttl_mes; global $rfsubtitle; global $ui_mode; $rfsubtitle = array(); $mtmp = array(); if ($ttl_no[0] > 0) { $no = $ttl_no[1]; $m = $ttl_mes[1]; if (substr($m,0,1) == "-") { $m = substr($m,1); } $mtmp[] = "[$no] $m"; } if ($ttl_no[0] > 1) { $no = $ttl_no[1]."-".$ttl_no[2]; $m = $ttl_mes[2]; if (substr($m,0,1) == "-") { $m = substr($m,1); } $mtmp[] = "[$no] $m"; } if ($ttl_no[0] > 2) { $no = $ttl_no[1]."-".$ttl_no[2]."-".$ttl_no[3]; $m = $ttl_mes[3]; if (substr($m,0,1) == "-") { $m = substr($m,1); } $mtmp[] = "[$no] $m"; } if ($ui_mode == 0) { echo_scr(2, ""); foreach($mtmp as $m) { echo_msg(2,$m); } echo_scr(2,""); if ($mes != "") { echo_msg(2,$mes); echo_scr(2,""); } } else if ($ui_mode == 2) { echo_scr(2, ""); foreach($mtmp as $m) { echo_msg(2,$m); } echo_scr(2,""); if ($mes != "") { echo_msg(2,$mes); echo_scr(2,""); } } else { $rfsubtitle = $mtmp; if ($mes != "") { $rfsubtitle[] = $mes; } } } function rfplay_pid_disp($piddata) { if ($piddata === false) { return 0; } $n = count_73($piddata); if ($n < 1) { return 0; } echo_scr(2, ""); foreach($piddata as $pd) { $p = explode(",",$pd); $pid = $p[0]; $ch = $p[1]; $pn = $p[2]; $fmt = sprintf("%6s On air : %s", $pid,$ch); echo_msg(2,$fmt); } return $n; } function rfplay_piddata() { if (($piddata = rfgw_ffplay_pid()) === false) return ""; if (count_73($piddata) < 1) return ""; $p = explode(",",$piddata[0]); return $p[1]; } function rfplay_ini($msel) { switch ($msel) { case 1: rfplay_subtitle("パラメータを設定します。"); rfplay_parameter(); break; case 2: rfplay_subtitle("ラジコエリアを変更します。"); rfplay_radiko_area(); break; case 3: rfplay_subtitle("らじるエリアを変更します。"); rfplay_radiru_area(); break; default: break; } } function rfplay_about($msel) { global $cfgdir; global $rf_stp; $ret = 0; switch ($msel) { case 1: rfplay_subtitle("使用ソフトウエアについて"); rfplay_info_apps(); break; case 2: rfplay_subtitle("rfplayについて"); rfplay_info(); break; default: break; } return($ret); } function rfplay_timefree() { global $ex_timefree; $ch = rfmenu_rec_ch($ex_timefree); if ($ch == "") { return; } if ($ch === false) { echo_msg(2, "入力エラー"); rf_pause(); return; } echo_msg(2, "CH : $ch"); echo_msg(2, ""); $ans1 = rfmenu_rec_date($ex_timefree,2); if ($ans1 === false) { echo_msg(2, "入力エラー"); rf_pause(); return; } $dt = $ans1[0]; $cnt = $ans1[1]; if ($cnt <= 0) { return; } $dt = strtotime("$dt day"); $rsvdata = rfmenu_radiko_program($ch, $dt, $cnt); rfplay_rec_sel($ex_timefree, $rsvdata, $dt); } function rfplay_rec_sel($ex_type, $wdat, $dt) { global $area_code; global $ex_radiko; global $ex_radiru; global $ex_timefree; global $ex_radiru_vod; global $ex_radiru_gogaku; $dt0 = date("m/d",$dt); $rmes = "終了"; $imes = "どれを聴取しますか"; $ynmes = "聴取しますか (y/N) ? : "; switch ($ex_type) { case $ex_radiko: case $ex_radiru: sort($wdat); $wdat = rfmenu_wdata_org($wdat); $wdat = rfmenu_del_passed_program($wdat); $ttl = "放送番組一覧"; break; case $ex_timefree: sort($wdat); $ttl = "放送済番組一覧[$dt0] "; break; case $ex_radiru_vod: case $ex_radiru_gogaku: rsort($wdat); $ttl = "放送済番組一覧"; break; default: $ttl = ""; break; } if (count_73($wdat) <= 0) { echo_msg(2,"リストが空です。"); rf_pause(); return; } $onairch = rfmenu_play_piddata(); while(1==1) { $wdat0 = rf_dat_sel_onair($ex_type, $wdat, $ttl, $onairch, $rmes, $imes); if ($wdat0 === true) { return; } if ($wdat0 === false) { continue; } $live = false; $flg = 0; $n = count_73($wdat0); if ($n == 1) { $para = get_para($wdat0[0], $ex_type); echo_msg(2," $para[8]"); if ($ex_type == $ex_radiko || $ex_type == $ex_radiru) { $onair = rf_program_onair_check($para); if ($onair === true) $live = true; } if ($ex_type == $ex_timefree) { $arc = rf_program_archive_check($para); if ($arc === true) $live = true; } } echo_msg(2, ""); if ($live === false) { echo_msg(2, "聴取できません。"); rf_pause(); continue; } echo_msg(2, ""); rfplay_live($ex_type,$para); rf_pause(); continue; } } function rfplay_vod() { global $tmpdir; global $radiru_recdir; global $radiru_vod_recdir; global $radiru_vod_url; global $radiru_gogaku_recdir; $rp = 0; $mcode_sel = rf_nhk_select(); if ($mcode_sel === false) { return; } $ond = ond_list($radiru_vod_url, $mcode_sel); rsort($ond); while ($rp == 0) { $rp = rfplay_ond_select($ond, $mcode_sel); } } function rfplay_ond_select($ond, $mcode_sel) { global $tmpdir; global $ex_radiru_vod; global $ex_radiru_gogaku; global $radiru_vod_recdir; global $radiru_vod_genre; global $radiru_gogaku_lang; global $rec_extension; global $scr_width; $ynmes = "聴取しますか ? (y/N) : "; $ttl = count_73($ond); if ($ttl < 1) { echo_msg(2, "番組がありません。"); rf_pause(); return -1; } $flist = array(); foreach ($ond as $nm) { $dtm = substr($nm[1], 2); if (strlen($nm[3]) <= 0) { $flst = $nm[2]; } else { $flst = $nm[2]."($nm[3])"; } if ($mcode_sel == -1) { } $bch = substr(ond_chconv2($nm[7])." ",0,4); $flist[] = $dtm." $bch ".$flst; } switch ($mcode_sel) { case 0: $mc = "all"; break; case 5: $mc = "r1"; break; case 6: $mc = "r2"; break; case 7: $mc = "r3"; break; case -1: $mc = "ゴガク"; break; default: $mc = "?"; break; } $opt = array( "title" => "聞き逃し一覧($mc)", "input_type" => 0, "page_control" => 1, "return_mes" => "終了", "input_mes" => "番組を選択してください", "mode" => 0, "multi" => 0, "confirm" => 1, "ht_selid" => "" ); $no1 = rf_pctl_disp($flist, $opt); $ans = $no1[0]; if ($ans == "r") { return 1; } if ($ans == "e") { echo_msg(2, "入力エラー"); rf_pause(); return 1; } if ($ans == "z") { echo_msg(2, "リストが空です"); rf_pause(); return 1; } $no = $no1[0]; $no = $no - 1; $nm = $ond[$no]; $pic = $nm[5]; $pgm = $nm[2]; $ond2 = array(); $ond2 = ond_detail($nm); foreach ($ond2 as $key => $value) { $st[$key] = $value[2]; } array_multisort($st, SORT_DESC, $ond2); $ttl2 = count_73($ond2); if ($ttl2 < 1) { return -1; } $tnm = $nm[2]; if (strlen($nm[3]) > 0) { $tnm = "$tnm($nm[3])"; } $tnm2 = rf_strimwidth($tnm, 0, $scr_width-12); $no2 = array(); $flist2 = array(); foreach ($ond2 as $nm) { if ($nm[0] == "") { $nm[0] = "_"; } $dtx = sprintf( "%s/%s/%s", substr($nm[2], 2, 2), substr($nm[2], 4, 2), substr($nm[2], 6, 2) ); $pgm2 = $nm[3]; if (mb_substr($pgm2,0,mb_strlen($pgm)) == $pgm) { $pgm2 = mb_substr($pgm2, mb_strlen($pgm)); $pgm2 = mb_convert_kana($pgm2,'s'); $pgm2 = trim($pgm2); if (strlen($pgm2) == 0) { $pgm2 = $pgm; } } $flist2[] = "$dtx $pgm2"; } $opt = array( "title" => "$tnm2", "input_type" => 1, "page_control" => 1, "return_mes" => "戻る", "input_mes" => "どれを聴取しますか", "mode" => 0, "multi" => 0, "confirm" => 1, "ht_selid" => "" ); $no2 = rf_pctl_disp($flist2, $opt); $ans = $no2[0]; if ($ans == "r") { if ($ttl == 1) { return 1; } return 0; } if ($ans == "e") { echo_msg(2, "入力エラー"); rf_pause(); return 0; } if ($ans == "z") { echo_msg(2, "リストが空です"); rf_pause(); return 0; } $wdat = array(); foreach ($no2 as $no2_s) { $no2x = $no2_s - 1; $nm2 = $ond2[$no2x]; $url = $nm2[5]; $sta = "$nm2[1]"; $fn2 = $nm2[3]; $dt = "$nm2[2]"; $fns = fn_edit($nm2[4]); $sz = 200 - strlen($radiru_vod_recdir); $sz2 = strlen($fn2); if ($sz2 > $sz) { $fn2 = rf_strimwidth($fn2, 0, $sz); } $fn = fn_edit($fn2); $full_fn = $sta."_".$fn."_".$dt.".$rec_extension"; $tx = sprintf("%2d %s", $no2_s, $full_fn); echo_msg(2, $tx); $wdat[] = get_wdata_vod($url, $sta, $fn, ";", $dt, $pic, $radiru_vod_recdir, $fns); } $ex_type = $ex_radiru_vod; $live = false; $flg = 0; $n = count_73($wdat); if ($n == 1) { $para = get_para($wdat[0], $ex_type); $arc = rf_program_archive_check($para); if ($arc === true) $live = true; } if ($live === false) { echo_msg(2, "聴取できません。"); return 0; } echo_msg(2, ""); rfplay_live($ex_type,$para); rf_pause(); return 0; } function rfplay_live($ex_type,$para) { $flg = rfgw_check_sshd(); rfgw_reconnect_bd(); rfriends_live($ex_type,$para,$flg); } function rfplay_parameter() { global $bindir; global $tmpdir; global $scrdir; global $cfgdir; global $rfplayini; global $nowarea; global $home_area_code; global $rfplay_auth_mode; echo_msg(2, "現在の認証モードは $rfplay_auth_mode です。"); rfgw_play_text($cfgdir.$rfplayini); rf_pause(); return true; } function rfplay_radiko_area() { global $bindir; global $tmpdir; global $playdir; global $nowarea; global $home_area_code; global $radiko_auth_mode; global $radiko_auth_mode3_dat; echo_msg(2, "現在の認証モードは $radiko_auth_mode です。"); echo_msg(2, ""); if ($radiko_auth_mode != 3) { echo_msg(2, "このモードでは現在地変更はできません。"); rf_pause(); return true; } $old_gps_dat = $playdir."radiko_play.dat"; if (file_exists($old_gps_dat))fin_unlink($old_gps_dat); echo_msg(2, "現在地変更を行います(テストモード)。"); echo_msg(2, ""); echo_msg(2, "現在地 : $home_area_code"); pref_view(); echo_msg(2, ""); $ans = echo_input(2, "エリア番号は? (1-47): "); if ($ans == "") { return false; } if ($ans < 1 || $ans > 47) { return false; } if ($ans == 0) { $area = $home_area_code; } else { $area = sprintf("JP%d", $ans); } $no = rf_convjp($area); $ret = rf_device_f_lat_lon($no); if ($ret === false) return false; $lat = $ret[0]; $lon = $ret[1]; $ret = file_put_contents($radiko_auth_mode3_dat, "$lat,$lon", LOCK_EX); if ($ret !== false) { echo_scr(2, ""); echo_msgbox(2, "現在地 : $area($lat,$lon)"); } else { echo_scr(2, ""); echo_msgbox(2, "現在地の変更に失敗しました。"); return false; } return true; } function rfplay_radiru_area() { global $radiru_area_1; $stationdata = rf_radiru_station(); $mnu = array(); foreach($stationdata as $key => $val) { $val2 = substr($key." ",0,10).": ".$val; $mnu[] = $val2; } if (array_key_exists($radiru_area_1,$stationdata)) { echo_msg(2, "現在のエリア : $radiru_area_1"); } else { echo_msg(2, "現在のエリア : unknown"); } echo_msg(2, ""); $ans = rf_sel_menu($mnu,1); if ($ans > 0) { echo_msg(2, "$ans ".$mnu[$ans-1]); $area = trim(substr($mnu[$ans-1],0,10)); if (!array_key_exists($area,$stationdata)) { echo_msg(2, "invalid key : $area"); } else { rfplay_radiru_putarea($area); $radiru_area_1 = $area; } } else { echo_scr(2, ""); echo_msg(2, "現在地の変更に失敗しました。"); } echo_msg(2, ""); echo_msgbox(2, "エリア : $radiru_area_1"); } function get_timefree_stream_url($area, $channel, $fromtime, $totime, $recfiletmp, $authtoken,$org) { global $timefree_pre_margin; global $timefree_post_margin; global $m3u8header; global $playlisturl; global $auth_token; $stream_url = ""; if ($timefree_pre_margin == 0 && $timefree_post_margin == 0) { $rectime = rf_radiko_make_rectime($channel,$fromtime,$totime,1); } else { $t_fr = get_mktime($fromtime) - $timefree_pre_margin; $t_to = get_mktime($totime) + $timefree_post_margin; $t_fr2 = date("YmdHis", $t_fr); $t_to2 = date("YmdHis", $t_to); $rectime = rf_radiko_make_rectime($channel,$t_fr2,$t_to2,1); } $purl = $playlisturl.$rectime; if ($org == 1) { return $purl; } file_put_contents("$recfiletmp.txt", $purl, LOCK_EX); $opt = $m3u8header . "--header=\"X-Radiko-AuthToken: $authtoken\" "; $exec_cmd = "wget -i $recfiletmp.txt -O $recfiletmp.m3u8 $opt "; $ret = external_program($exec_cmd); if ($ret != 0) { fin_unlink("$recfiletmp.txt"); fin_unlink("$recfiletmp.m3u8"); return $stream_url; } fin_unlink("$recfiletmp.txt"); $url = file("$recfiletmp.m3u8"); foreach ($url as $value) { if (substr($value, 0, 1) == "#") { continue; } if (substr($value, 0, 4) == "http" && strpos($value, "m3u8") !== false) { $value = str_replace(array("\r", "\n"), "", $value); $stream_url = $value; break; } } if ($stream_url == "") { return $stream_url; } fin_unlink("$recfiletmp.m3u8"); return $stream_url; } function rfplay_radiru_putarea($area) { global $radiruareafile; $fl = $radiruareafile; $parea = strtolower($area); file_put_contents($fl, $parea, LOCK_EX); return true; } function rfmenu_play_piddata() { if (($piddata = rfgw_ffplay_pid()) === false) return ""; if (count_73($piddata) < 1) return ""; $p = explode(",",$piddata[0]); return $p[1]; } function rfmenu_play_vol() { $piddata = rfgw_ffplay_pid(); if ($piddata === false) { echo_msg(2,"エラーが発生しました。"); rf_pause(); return; } $amixer = rfgw_amixer_utl(0); rf_amixer_sub($amixer); } function rfmenu_play_abort($mode) { if ($mode == 1) { if (($piddata = rfgw_ffplay_pid()) === false) return; if (rf_ffplay_pid_disp($piddata) < 1) return; rf_ffplay_pid_can($piddata); return; } $piddata = rfgw_ffplay_pid(); if ($piddata === false) { echo_msg(2,"エラーが発生しました。"); rf_pause(); return; } $n = rf_ffplay_pid_disp($piddata); if ($n < 1) { echo_msg(2, ""); echo_msg(2, "再生中のプロセスがありません。"); rf_pause(); return; } echo_msg(2, ""); $ans = echo_yesno(2, "再生を中止しますか? (y/N): "); if ($ans != "y" && $ans != "Y") { return; } echo_msg(2, ""); rf_ffplay_pid_can($piddata); echo_msg(2, ""); echo_msg(2, "再生を中止しました。"); rf_pause(); } function rfmenu_play_abort_all() { $piddata = rfgw_ffplay_pid(); if ($piddata === false) { return false; } $n = count_73($piddata); if ($n < 1) { return true; } rf_ffplay_pid_can($piddata); return true; } function rf_ffplay_pid_can($piddata) { foreach($piddata as $pd) { $p = explode(",",$pd); $pid = $p[0]; $pn = $p[1]; $ret = rfgw_rec_can($pid); } } function rf_ffplay_pid_disp($piddata) { if ($piddata === false) { return 0; } $n = count_73($piddata); if ($n < 1) { return 0; } echo_scr(2, ""); foreach($piddata as $pd) { $p = explode(",",$pd); $pid = $p[0]; $ch = $p[1]; $pn = $p[2]; $fmt = sprintf("%6s On air : %s", $pid,$ch); echo_msg(2,$fmt); } return $n; } function rfmenu_rec_ch($ex_type) { global $scrdir; global $rsvdir; global $phpdir; global $nowarea; global $home_area_code; global $area_code; global $nowarea; global $radiko_timeofbegin; global $schradiko_head; global $schradiru_head; global $radiru_ch; global $ex_radiko; global $ex_radiru; global $ex_timefree; global $ex_radiru_vod; $n = 0; switch ($ex_type) { case $ex_radiko: case $ex_timefree: $sch_name = "radiko"; $authtoken = auth_ex(0); echo_prn(1, "area : $nowarea ($area_code)"); $rk_sta = rf_radiko_station($area_code); foreach ($rk_sta as $key => $val) { if (!valid_chk($ex_radiko, $key)) { unset($rk_sta["$key"]); continue; } if ($ex_type == $ex_timefree) { $pos = strpos($val,"NHK"); if ($pos !== false) { if ($pos == 0) { unset($rk_sta["$key"]); continue; } } } $key2 = substr($key." ", 0, 8); $n++; $no = sprintf("%2d", $n); echo_menu(2, "$no. $key2 : $val",1); } break; case $ex_radiru: $sch_name = "radiru"; $radiru_ch2 = array(); foreach ($radiru_ch as $key) { if (!valid_chk($ex_radiru, $key)) { continue; } $radiru_ch2[] = $key; $n++; $no = sprintf("%2d", $n); $key2 = substr($key." ", 0, 2); $val = "NHK"; echo_menu(2, "$no. $key2 : $val",1); } $rk_sta = $radiru_ch2; break; default: return false; break; } echo_menu_ret_wt(); echo_msg(2, ""); if ($n < 1) { echo_msg(2, "リストが空です"); rf_pause(); return ""; } $ans = echo_ask(2, "CHの番号を入力してください (1-$n) : "); if ($ans == "" || $ans == "R" || $ans == "r") { return ""; } $ans = rfmenu_check_range($ans,1,$n); if ($ans === false) { echo_msg(2,"入力エラー"); rf_pause(); return; } switch ($ex_type) { case $ex_radiko: case $ex_timefree: $rk_sta2 = array_slice($rk_sta, $ans-1, 1, true); $ch = key($rk_sta2); $val = $rk_sta[$ch]; break; case $ex_radiru: $ch = $rk_sta[$ans - 1]; $val = "NHK"; break; default: $ch = ""; break; } return $ch; } function rfplay_info_apps() { echo_msg(2, "rfplay は以下のソフトウエアを使用しています。"); echo_msg(2, ""); $app = rfgw_info_app(); $phpexts = rf_php_ext(); echo_msg(2, ""); echo_msg(2, $app[0]); $str = ""; foreach($phpexts as $phpext) { $str .= " $phpext"; } echo_msg(2, $str); echo_msg(2, ""); echo_msg(2, $app[1]); echo_msg(2, $app[2]); echo_msg(2, $app[4]); echo_msg(2, $app[5]); echo_msg(2, ""); msgx('・<a href=https://www.gsi.go.jp/>国土地理院</a>'); msgx('・<a href=https://www.openstreetmap.org/copyright/ja>OpenStreetMap</a>'); echo_msg(2, ""); rf_pause(); } function rfplay_info() { global $base; global $rfriends; global $os_l; $rfriends_ver = trim(file_get_contents($base.$rfriends)); $rfplay_ver = str_replace("Rfriends","rfplay",$rfriends_ver,$cnt); echo_msg(2, $rfplay_ver); echo_msg(2, "rfriends2017(yahoo.co.jp), @rfriends2017"); echo_msg(2, ""); echo_msg(2, "OS : $os_l"); $pretty = rfgw_get_prettyname(); if ($pretty != "") echo_msg(2, "NAME : $pretty"); $ppid = rfgw_get_accessid(); echo_msg(2, "ACCESS : $ppid"); $hn = getHostName(); echo_msg(2, "HOSTNAME : $hn"); $ip = rfgw_getip(); echo_msg(2, "IPADDR : $ip"); rf_pause(); }<?php
function rf_first_menu()
{
global $menudef;
global $rfname;
$nw = time();
rfplay_title($nw);
$piddata = rfgw_ffplay_pid();
$n = rfplay_pid_disp($piddata);
echo_scr(2, "");
$rcnt = rfgw_rec_cnt_all();
$n = 0;
foreach ($menudef as $m) {
$ttl = $m['title'];
$opt = $m['opt'];
if ($ttl == "-") {
echo_menu(2, "", 1);
continue;
}
$n++;
echo_menu(2, sprintf("%2d. %s", $n, $ttl), 1);
}
$mn_max = count_73($menudef);
echo_scr(2, "");
$ans = echo_select(2, $rfname . "メニューを選択(1-" . $mn_max . ",end=x) : ");
return $ans;
}
function rf_second_menu($ans)
{
global $menudef;
global $menudef_s;
global $menudef_t;
$mn_cnt = count_73($menudef_s);
if ($mn_cnt == 1) {
return 1;
}
$fmt0 = "%2d. %s";
rfplay_subtitle("");
$n = 0;
$m2 = array();
foreach ($menudef_s as $m) {
$ttl = $m['title'];
if ($ttl == "-") {
echo_menu(2, "", 1);
continue;
}
$n++;
if ($m['opt'] == 0) {
$ttl2 = sprintf($fmt0, $n, $ttl);
} else {
$ttl2 = sprintf($fmt0, $n, "-");
}
echo_menu(2, $ttl2, 1);
$m2[$n] = $m['opt'];
}
echo_menu_ret_wt();
echo_scr(2, "");
$ans2 = echo_select(2, "サブメニューを選択(1-{$n}) : ");
$ans2 = rfmenu_check_range($ans2, 1, $n);
if ($ans2 === false) {
$ans2 = "";
} else {
if ($m2[$ans2] == 1) {
$ans2 = "";
}
}
return $ans2;
}
function rf_third_menu($ans, $ans2)
{
$ret = rfplay_menu_ans($ans, $ans2);
return $ret;
}
function rf_para_check($str)
{
global $scr_height;
global $scr_width;
$ret[0] = 0;
$ret[1] = 0;
$ret[2] = 0;
$ret[3] = 0;
$para = explode(",", $str);
$n = count_73($para);
switch ($n) {
case 1:
$ret[0] = $para[0];
break;
case 2:
$ret[0] = $para[0];
$ret[1] = $para[1];
break;
case 4:
$ret[0] = $para[0];
$ret[1] = $para[1];
$ret[2] = $para[2];
$ret[3] = $para[3];
break;
default:
break;
}
if ($ret[0] != 0 && $ret[0] != 1) {
$ret[0] = 0;
}
if ($ret[1] != 0 && $ret[1] != 1) {
$ret[1] = 0;
}
if ($ret[2] == 0) {
$ret[2] = $scr_height;
}
if ($ret[3] == 3) {
$ret[2] = $scr_width;
}
return $ret;
}
function rfplay_title($nw)
{
global $nowarea;
global $rfriends_parts;
global $radiru_area_1;
global $rftitle;
global $ui_mode;
$dt = date("y/m/d(D) H:i:s", $nw);
$tx11 = "rfplay";
$tx13 = $rfriends_parts[3];
$rftitle = "{$tx11} {$tx13} [{$dt}]";
$rfsubtitle = array();
if ($ui_mode == 0) {
echo_scr(2, "");
echo_scr(2, "{$rftitle}");
}
$radiko_ttl = "radiko: {$nowarea}";
$radiru_ttl = "radiru: " . $radiru_area_1;
echo_msg(2, " {$radiko_ttl} {$radiru_ttl}");
}
function rfplay_menu_ans($ans, $ans2)
{
global $menudef;
global $menudef_s;
global $menudef_t;
global $ex_radiko;
global $ex_timefree;
global $ex_radiru;
global $ex_radiru_vod;
$ret = 0;
switch ($ans) {
case 1:
rfplay_subtitle("聴取するラジコ番組を選択します。");
rfmenu_onair($ex_radiko);
break;
case 2:
rfplay_subtitle("聴取するタイムフリー番組を選択します");
rfplay_timefree();
break;
case 3:
rfplay_subtitle("聴取するらじる番組を選択します。");
rfmenu_onair($ex_radiru);
break;
case 4:
rfplay_subtitle("聴取するらじる聞き逃し番組を選択します。");
rfplay_vod();
break;
case 5:
rfplay_subtitle("聴取中止・音量調整を行います。");
rfmenu_play_vol(0);
break;
case 6:
$ret = rfplay_ini($ans2);
break;
case 7:
$ret = rfplay_about($ans2);
break;
default:
break;
}
return $ret;
}
function rfplay_subtitle($mes)
{
global $ttl_no;
global $ttl_mes;
global $rfsubtitle;
global $ui_mode;
$rfsubtitle = array();
$mtmp = array();
if ($ttl_no[0] > 0) {
$no = $ttl_no[1];
$m = $ttl_mes[1];
if (substr($m, 0, 1) == "-") {
$m = substr($m, 1);
}
$mtmp[] = "[{$no}] {$m}";
}
if ($ttl_no[0] > 1) {
$no = $ttl_no[1] . "-" . $ttl_no[2];
$m = $ttl_mes[2];
if (substr($m, 0, 1) == "-") {
$m = substr($m, 1);
}
$mtmp[] = "[{$no}] {$m}";
}
if ($ttl_no[0] > 2) {
$no = $ttl_no[1] . "-" . $ttl_no[2] . "-" . $ttl_no[3];
$m = $ttl_mes[3];
if (substr($m, 0, 1) == "-") {
$m = substr($m, 1);
}
$mtmp[] = "[{$no}] {$m}";
}
if ($ui_mode == 0) {
echo_scr(2, "");
foreach ($mtmp as $m) {
echo_msg(2, $m);
}
echo_scr(2, "");
if ($mes != "") {
echo_msg(2, $mes);
echo_scr(2, "");
}
} else {
if ($ui_mode == 2) {
echo_scr(2, "");
foreach ($mtmp as $m) {
echo_msg(2, $m);
}
echo_scr(2, "");
if ($mes != "") {
echo_msg(2, $mes);
echo_scr(2, "");
}
} else {
$rfsubtitle = $mtmp;
if ($mes != "") {
$rfsubtitle[] = $mes;
}
}
}
}
function rfplay_pid_disp($piddata)
{
if ($piddata === false) {
return 0;
}
$n = count_73($piddata);
if ($n < 1) {
return 0;
}
echo_scr(2, "");
foreach ($piddata as $pd) {
$p = explode(",", $pd);
$pid = $p[0];
$ch = $p[1];
$pn = $p[2];
$fmt = sprintf("%6s On air : %s", $pid, $ch);
echo_msg(2, $fmt);
}
return $n;
}
function rfplay_piddata()
{
if (($piddata = rfgw_ffplay_pid()) === false) {
return "";
}
if (count_73($piddata) < 1) {
return "";
}
$p = explode(",", $piddata[0]);
return $p[1];
}
function rfplay_ini($msel)
{
switch ($msel) {
case 1:
rfplay_subtitle("パラメータを設定します。");
rfplay_parameter();
break;
case 2:
rfplay_subtitle("ラジコエリアを変更します。");
rfplay_radiko_area();
break;
case 3:
rfplay_subtitle("らじるエリアを変更します。");
rfplay_radiru_area();
break;
default:
break;
}
}
function rfplay_about($msel)
{
global $cfgdir;
global $rf_stp;
$ret = 0;
switch ($msel) {
case 1:
rfplay_subtitle("使用ソフトウエアについて");
rfplay_info_apps();
break;
case 2:
rfplay_subtitle("rfplayについて");
rfplay_info();
break;
default:
break;
}
return $ret;
}
function rfplay_timefree()
{
global $ex_timefree;
$ch = rfmenu_rec_ch($ex_timefree);
if ($ch == "") {
return;
}
if ($ch === false) {
echo_msg(2, "入力エラー");
rf_pause();
return;
}
echo_msg(2, "CH : {$ch}");
echo_msg(2, "");
$ans1 = rfmenu_rec_date($ex_timefree, 2);
if ($ans1 === false) {
echo_msg(2, "入力エラー");
rf_pause();
return;
}
$dt = $ans1[0];
$cnt = $ans1[1];
if ($cnt <= 0) {
return;
}
$dt = strtotime("{$dt} day");
$rsvdata = rfmenu_radiko_program($ch, $dt, $cnt);
rfplay_rec_sel($ex_timefree, $rsvdata, $dt);
}
function rfplay_rec_sel($ex_type, $wdat, $dt)
{
global $area_code;
global $ex_radiko;
global $ex_radiru;
global $ex_timefree;
global $ex_radiru_vod;
global $ex_radiru_gogaku;
$dt0 = date("m/d", $dt);
$rmes = "終了";
$imes = "どれを聴取しますか";
$ynmes = "聴取しますか (y/N) ? : ";
switch ($ex_type) {
case $ex_radiko:
case $ex_radiru:
sort($wdat);
$wdat = rfmenu_wdata_org($wdat);
$wdat = rfmenu_del_passed_program($wdat);
$ttl = "放送番組一覧";
break;
case $ex_timefree:
sort($wdat);
$ttl = "放送済番組一覧[{$dt0}] ";
break;
case $ex_radiru_vod:
case $ex_radiru_gogaku:
rsort($wdat);
$ttl = "放送済番組一覧";
break;
default:
$ttl = "";
break;
}
if (count_73($wdat) <= 0) {
echo_msg(2, "リストが空です。");
rf_pause();
return;
}
$onairch = rfmenu_play_piddata();
while (true) {
$wdat0 = rf_dat_sel_onair($ex_type, $wdat, $ttl, $onairch, $rmes, $imes);
if ($wdat0 === true) {
return;
}
if ($wdat0 === false) {
continue;
}
$live = false;
$flg = 0;
$n = count_73($wdat0);
if ($n == 1) {
$para = get_para($wdat0[0], $ex_type);
echo_msg(2, " {$para[8]}");
if ($ex_type == $ex_radiko || $ex_type == $ex_radiru) {
$onair = rf_program_onair_check($para);
if ($onair === true) {
$live = true;
}
}
if ($ex_type == $ex_timefree) {
$arc = rf_program_archive_check($para);
if ($arc === true) {
$live = true;
}
}
}
echo_msg(2, "");
if ($live === false) {
echo_msg(2, "聴取できません。");
rf_pause();
continue;
}
echo_msg(2, "");
rfplay_live($ex_type, $para);
rf_pause();
continue;
}
}
function rfplay_vod()
{
global $tmpdir;
global $radiru_recdir;
global $radiru_vod_recdir;
global $radiru_vod_url;
global $radiru_gogaku_recdir;
$rp = 0;
$mcode_sel = rf_nhk_select();
if ($mcode_sel === false) {
return;
}
$ond = ond_list($radiru_vod_url, $mcode_sel);
rsort($ond);
while ($rp == 0) {
$rp = rfplay_ond_select($ond, $mcode_sel);
}
}
function rfplay_ond_select($ond, $mcode_sel)
{
global $tmpdir;
global $ex_radiru_vod;
global $ex_radiru_gogaku;
global $radiru_vod_recdir;
global $radiru_vod_genre;
global $radiru_gogaku_lang;
global $rec_extension;
global $scr_width;
$ynmes = "聴取しますか ? (y/N) : ";
$ttl = count_73($ond);
if ($ttl < 1) {
echo_msg(2, "番組がありません。");
rf_pause();
return 1;
}
$flist = array();
foreach ($ond as $nm) {
$dtm = substr($nm[1], 2);
if (strlen($nm[3]) <= 0) {
$flst = $nm[2];
} else {
$flst = $nm[2] . "({$nm[3]})";
}
if ($mcode_sel == 1) {
}
$bch = substr(ond_chconv2($nm[7]) . " ", 0, 4);
$flist[] = $dtm . " {$bch} " . $flst;
}
switch ($mcode_sel) {
case 0:
$mc = "all";
break;
case 5:
$mc = "r1";
break;
case 6:
$mc = "r2";
break;
case 7:
$mc = "r3";
break;
case 1:
$mc = "ゴガク";
break;
default:
$mc = "?";
break;
}
$opt = array("title" => "聞き逃し一覧({$mc})", "input_type" => 0, "page_control" => 1, "return_mes" => "終了", "input_mes" => "番組を選択してください", "mode" => 0, "multi" => 0, "confirm" => 1, "ht_selid" => "");
$no1 = rf_pctl_disp($flist, $opt);
$ans = $no1[0];
if ($ans == "r") {
return 1;
}
if ($ans == "e") {
echo_msg(2, "入力エラー");
rf_pause();
return 1;
}
if ($ans == "z") {
echo_msg(2, "リストが空です");
rf_pause();
return 1;
}
$no = $no1[0];
$no -= 1;
$nm = $ond[$no];
$pic = $nm[5];
$pgm = $nm[2];
$ond2 = array();
$ond2 = ond_detail($nm);
foreach ($ond2 as $key => $value) {
$st[$key] = $value[2];
}
array_multisort($st, SORT_DESC, $ond2);
$ttl2 = count_73($ond2);
if ($ttl2 < 1) {
return 1;
}
$tnm = $nm[2];
if (strlen($nm[3]) > 0) {
$tnm = "{$tnm}({$nm[3]})";
}
$tnm2 = rf_strimwidth($tnm, 0, $scr_width - 12);
$no2 = array();
$flist2 = array();
foreach ($ond2 as $nm) {
if ($nm[0] == "") {
$nm[0] = "_";
}
$dtx = sprintf("%s/%s/%s", substr($nm[2], 2, 2), substr($nm[2], 4, 2), substr($nm[2], 6, 2));
$pgm2 = $nm[3];
if (mb_substr($pgm2, 0, mb_strlen($pgm)) == $pgm) {
$pgm2 = mb_substr($pgm2, mb_strlen($pgm));
$pgm2 = mb_convert_kana($pgm2, 's');
$pgm2 = trim($pgm2);
if (strlen($pgm2) == 0) {
$pgm2 = $pgm;
}
}
$flist2[] = "{$dtx} {$pgm2}";
}
$opt = array("title" => "{$tnm2}", "input_type" => 1, "page_control" => 1, "return_mes" => "戻る", "input_mes" => "どれを聴取しますか", "mode" => 0, "multi" => 0, "confirm" => 1, "ht_selid" => "");
$no2 = rf_pctl_disp($flist2, $opt);
$ans = $no2[0];
if ($ans == "r") {
if ($ttl == 1) {
return 1;
}
return 0;
}
if ($ans == "e") {
echo_msg(2, "入力エラー");
rf_pause();
return 0;
}
if ($ans == "z") {
echo_msg(2, "リストが空です");
rf_pause();
return 0;
}
$wdat = array();
foreach ($no2 as $no2_s) {
$no2x = $no2_s - 1;
$nm2 = $ond2[$no2x];
$url = $nm2[5];
$sta = "{$nm2[1]}";
$fn2 = $nm2[3];
$dt = "{$nm2[2]}";
$fns = fn_edit($nm2[4]);
$sz = 200 - strlen($radiru_vod_recdir);
$sz2 = strlen($fn2);
if ($sz2 > $sz) {
$fn2 = rf_strimwidth($fn2, 0, $sz);
}
$fn = fn_edit($fn2);
$full_fn = $sta . "_" . $fn . "_" . $dt . ".{$rec_extension}";
$tx = sprintf("%2d %s", $no2_s, $full_fn);
echo_msg(2, $tx);
$wdat[] = get_wdata_vod($url, $sta, $fn, ";", $dt, $pic, $radiru_vod_recdir, $fns);
}
$ex_type = $ex_radiru_vod;
$live = false;
$flg = 0;
$n = count_73($wdat);
if ($n == 1) {
$para = get_para($wdat[0], $ex_type);
$arc = rf_program_archive_check($para);
if ($arc === true) {
$live = true;
}
}
if ($live === false) {
echo_msg(2, "聴取できません。");
return 0;
}
echo_msg(2, "");
rfplay_live($ex_type, $para);
rf_pause();
return 0;
}
function rfplay_live($ex_type, $para)
{
$flg = rfgw_check_sshd();
rfgw_reconnect_bd();
rfriends_live($ex_type, $para, $flg);
}
function rfplay_parameter()
{
global $bindir;
global $tmpdir;
global $scrdir;
global $cfgdir;
global $rfplayini;
global $nowarea;
global $home_area_code;
global $rfplay_auth_mode;
echo_msg(2, "現在の認証モードは {$rfplay_auth_mode} です。");
rfgw_play_text($cfgdir . $rfplayini);
rf_pause();
return true;
}
function rfplay_radiko_area()
{
global $bindir;
global $tmpdir;
global $playdir;
global $nowarea;
global $home_area_code;
global $radiko_auth_mode;
global $radiko_auth_mode3_dat;
echo_msg(2, "現在の認証モードは {$radiko_auth_mode} です。");
echo_msg(2, "");
if ($radiko_auth_mode != 3) {
echo_msg(2, "このモードでは現在地変更はできません。");
rf_pause();
return true;
}
$old_gps_dat = $playdir . "radiko_play.dat";
if (file_exists($old_gps_dat)) {
fin_unlink($old_gps_dat);
}
echo_msg(2, "現在地変更を行います(テストモード)。");
echo_msg(2, "");
echo_msg(2, "現在地 : {$home_area_code}");
pref_view();
echo_msg(2, "");
$ans = echo_input(2, "エリア番号は? (1-47): ");
if ($ans == "") {
return false;
}
if ($ans < 1 || $ans > 47) {
return false;
}
if ($ans == 0) {
$area = $home_area_code;
} else {
$area = sprintf("JP%d", $ans);
}
$no = rf_convjp($area);
$ret = rf_device_f_lat_lon($no);
if ($ret === false) {
return false;
}
$lat = $ret[0];
$lon = $ret[1];
$ret = file_put_contents($radiko_auth_mode3_dat, "{$lat},{$lon}", LOCK_EX);
if ($ret !== false) {
echo_scr(2, "");
echo_msgbox(2, "現在地 : {$area}({$lat},{$lon})");
} else {
echo_scr(2, "");
echo_msgbox(2, "現在地の変更に失敗しました。");
return false;
}
return true;
}
function rfplay_radiru_area()
{
global $radiru_area_1;
$stationdata = rf_radiru_station();
$mnu = array();
foreach ($stationdata as $key => $val) {
$val2 = substr($key . " ", 0, 10) . ": " . $val;
$mnu[] = $val2;
}
if (array_key_exists($radiru_area_1, $stationdata)) {
echo_msg(2, "現在のエリア : {$radiru_area_1}");
} else {
echo_msg(2, "現在のエリア : unknown");
}
echo_msg(2, "");
$ans = rf_sel_menu($mnu, 1);
if ($ans > 0) {
echo_msg(2, "{$ans} " . $mnu[$ans - 1]);
$area = trim(substr($mnu[$ans - 1], 0, 10));
if (!array_key_exists($area, $stationdata)) {
echo_msg(2, "invalid key : {$area}");
} else {
rfplay_radiru_putarea($area);
$radiru_area_1 = $area;
}
} else {
echo_scr(2, "");
echo_msg(2, "現在地の変更に失敗しました。");
}
echo_msg(2, "");
echo_msgbox(2, "エリア : {$radiru_area_1}");
}
function get_timefree_stream_url($area, $channel, $fromtime, $totime, $recfiletmp, $authtoken, $org)
{
global $timefree_pre_margin;
global $timefree_post_margin;
global $m3u8header;
global $playlisturl;
global $auth_token;
$stream_url = "";
if ($timefree_pre_margin == 0 && $timefree_post_margin == 0) {
$rectime = rf_radiko_make_rectime($channel, $fromtime, $totime, 1);
} else {
$t_fr = get_mktime($fromtime) - $timefree_pre_margin;
$t_to = get_mktime($totime) + $timefree_post_margin;
$t_fr2 = date("YmdHis", $t_fr);
$t_to2 = date("YmdHis", $t_to);
$rectime = rf_radiko_make_rectime($channel, $t_fr2, $t_to2, 1);
}
$purl = $playlisturl . $rectime;
if ($org == 1) {
return $purl;
}
file_put_contents("{$recfiletmp}.txt", $purl, LOCK_EX);
$opt = $m3u8header . "--header=\"X-Radiko-AuthToken: {$authtoken}\" ";
$exec_cmd = "wget -i {$recfiletmp}.txt -O {$recfiletmp}.m3u8 {$opt} ";
$ret = external_program($exec_cmd);
if ($ret != 0) {
fin_unlink("{$recfiletmp}.txt");
fin_unlink("{$recfiletmp}.m3u8");
return $stream_url;
}
fin_unlink("{$recfiletmp}.txt");
$url = file("{$recfiletmp}.m3u8");
foreach ($url as $value) {
if (substr($value, 0, 1) == "#") {
continue;
}
if (substr($value, 0, 4) == "http" && strpos($value, "m3u8") !== false) {
$value = str_replace(array("\r", "\n"), "", $value);
$stream_url = $value;
break;
}
}
if ($stream_url == "") {
return $stream_url;
}
fin_unlink("{$recfiletmp}.m3u8");
return $stream_url;
}
function rfplay_radiru_putarea($area)
{
global $radiruareafile;
$fl = $radiruareafile;
$parea = strtolower($area);
file_put_contents($fl, $parea, LOCK_EX);
return true;
}
function rfmenu_play_piddata()
{
if (($piddata = rfgw_ffplay_pid()) === false) {
return "";
}
if (count_73($piddata) < 1) {
return "";
}
$p = explode(",", $piddata[0]);
return $p[1];
}
function rfmenu_play_vol()
{
$piddata = rfgw_ffplay_pid();
if ($piddata === false) {
echo_msg(2, "エラーが発生しました。");
rf_pause();
return;
}
$amixer = rfgw_amixer_utl(0);
rf_amixer_sub($amixer);
}
function rfmenu_play_abort($mode)
{
if ($mode == 1) {
if (($piddata = rfgw_ffplay_pid()) === false) {
return;
}
if (rf_ffplay_pid_disp($piddata) < 1) {
return;
}
rf_ffplay_pid_can($piddata);
return;
}
$piddata = rfgw_ffplay_pid();
if ($piddata === false) {
echo_msg(2, "エラーが発生しました。");
rf_pause();
return;
}
$n = rf_ffplay_pid_disp($piddata);
if ($n < 1) {
echo_msg(2, "");
echo_msg(2, "再生中のプロセスがありません。");
rf_pause();
return;
}
echo_msg(2, "");
$ans = echo_yesno(2, "再生を中止しますか? (y/N): ");
if ($ans != "y" && $ans != "Y") {
return;
}
echo_msg(2, "");
rf_ffplay_pid_can($piddata);
echo_msg(2, "");
echo_msg(2, "再生を中止しました。");
rf_pause();
}
function rfmenu_play_abort_all()
{
$piddata = rfgw_ffplay_pid();
if ($piddata === false) {
return false;
}
$n = count_73($piddata);
if ($n < 1) {
return true;
}
rf_ffplay_pid_can($piddata);
return true;
}
function rf_ffplay_pid_can($piddata)
{
foreach ($piddata as $pd) {
$p = explode(",", $pd);
$pid = $p[0];
$pn = $p[1];
$ret = rfgw_rec_can($pid);
}
}
function rf_ffplay_pid_disp($piddata)
{
if ($piddata === false) {
return 0;
}
$n = count_73($piddata);
if ($n < 1) {
return 0;
}
echo_scr(2, "");
foreach ($piddata as $pd) {
$p = explode(",", $pd);
$pid = $p[0];
$ch = $p[1];
$pn = $p[2];
$fmt = sprintf("%6s On air : %s", $pid, $ch);
echo_msg(2, $fmt);
}
return $n;
}
function rfmenu_rec_ch($ex_type)
{
global $scrdir;
global $rsvdir;
global $phpdir;
global $nowarea;
global $home_area_code;
global $area_code;
global $nowarea;
global $radiko_timeofbegin;
global $schradiko_head;
global $schradiru_head;
global $radiru_ch;
global $ex_radiko;
global $ex_radiru;
global $ex_timefree;
global $ex_radiru_vod;
$n = 0;
switch ($ex_type) {
case $ex_radiko:
case $ex_timefree:
$sch_name = "radiko";
$authtoken = auth_ex(0);
echo_prn(1, "area : {$nowarea} ({$area_code})");
$rk_sta = rf_radiko_station($area_code);
foreach ($rk_sta as $key => $val) {
if (!valid_chk($ex_radiko, $key)) {
unset($rk_sta["{$key}"]);
continue;
}
if ($ex_type == $ex_timefree) {
$pos = strpos($val, "NHK");
if ($pos !== false) {
if ($pos == 0) {
unset($rk_sta["{$key}"]);
continue;
}
}
}
$key2 = substr($key . " ", 0, 8);
$n++;
$no = sprintf("%2d", $n);
echo_menu(2, "{$no}. {$key2} : {$val}", 1);
}
break;
case $ex_radiru:
$sch_name = "radiru";
$radiru_ch2 = array();
foreach ($radiru_ch as $key) {
if (!valid_chk($ex_radiru, $key)) {
continue;
}
$radiru_ch2[] = $key;
$n++;
$no = sprintf("%2d", $n);
$key2 = substr($key . " ", 0, 2);
$val = "NHK";
echo_menu(2, "{$no}. {$key2} : {$val}", 1);
}
$rk_sta = $radiru_ch2;
break;
default:
return false;
}
echo_menu_ret_wt();
echo_msg(2, "");
if ($n < 1) {
echo_msg(2, "リストが空です");
rf_pause();
return "";
}
$ans = echo_ask(2, "CHの番号を入力してください (1-{$n}) : ");
if ($ans == "" || $ans == "R" || $ans == "r") {
return "";
}
$ans = rfmenu_check_range($ans, 1, $n);
if ($ans === false) {
echo_msg(2, "入力エラー");
rf_pause();
return;
}
switch ($ex_type) {
case $ex_radiko:
case $ex_timefree:
$rk_sta2 = array_slice($rk_sta, $ans - 1, 1, true);
$ch = key($rk_sta2);
$val = $rk_sta[$ch];
break;
case $ex_radiru:
$ch = $rk_sta[$ans - 1];
$val = "NHK";
break;
default:
$ch = "";
break;
}
return $ch;
}
function rfplay_info_apps()
{
echo_msg(2, "rfplay は以下のソフトウエアを使用しています。");
echo_msg(2, "");
$app = rfgw_info_app();
$phpexts = rf_php_ext();
echo_msg(2, "");
echo_msg(2, $app[0]);
$str = "";
foreach ($phpexts as $phpext) {
$str .= " {$phpext}";
}
echo_msg(2, $str);
echo_msg(2, "");
echo_msg(2, $app[1]);
echo_msg(2, $app[2]);
echo_msg(2, $app[4]);
echo_msg(2, $app[5]);
echo_msg(2, "");
msgx('・<a href=https://www.gsi.go.jp/>国土地理院</a>');
msgx('・<a href=https://www.openstreetmap.org/copyright/ja>OpenStreetMap</a>');
echo_msg(2, "");
rf_pause();
}
function rfplay_info()
{
global $base;
global $rfriends;
global $os_l;
$rfriends_ver = trim(file_get_contents($base . $rfriends));
$rfplay_ver = str_replace("Rfriends", "rfplay", $rfriends_ver, $cnt);
echo_msg(2, $rfplay_ver);
echo_msg(2, "rfriends2017(yahoo.co.jp), @rfriends2017");
echo_msg(2, "");
echo_msg(2, "OS : {$os_l}");
$pretty = rfgw_get_prettyname();
if ($pretty != "") {
echo_msg(2, "NAME : {$pretty}");
}
$ppid = rfgw_get_accessid();
echo_msg(2, "ACCESS : {$ppid}");
$hn = getHostName();
echo_msg(2, "HOSTNAME : {$hn}");
$ip = rfgw_getip();
echo_msg(2, "IPADDR : {$ip}");
rf_pause();
}■【無料】ワードプレス:マルウェアスキャン&セキュリティープラグイン [マルウェア・ウィルス検出と駆除]
■WordPress のマルウェア駆除、セキュリティー対策 カスタマイズや修正、引っ越し・復旧のご依頼承ります
(C)2019 ワードプレス ドクター All rights reserved.