From 7b33e51f84b8487c167e1729fa2c161ac4ad7619 Mon Sep 17 00:00:00 2001 From: satomichan Date: Sun, 19 Apr 2026 18:49:40 +0900 Subject: [PATCH] =?utf8?q?=E7=AC=AC2=E6=94=BE=E9=80=81(r2)=E3=81=AE?= =?utf8?q?=E5=BB=83=E6=AD=A2=E3=81=AB=E5=AF=BE=E5=BF=9C.=20=E4=BF=9D?= =?utf8?q?=E5=AD=98=E3=83=95=E3=82=A1=E3=82=A4=E3=83=AB=E3=83=91=E3=82=B9?= =?utf8?q?=E3=82=92=E5=88=B6=E9=99=90=E9=95=B7=E3=81=95=E3=81=AB=E5=8F=8E?= =?utf8?q?=E3=82=81=E3=82=8B=E5=87=A6=E7=90=86=E3=82=92bytes=E5=8D=98?= =?utf8?q?=E4=BD=8D=E3=81=A7=E5=8E=B3=E5=AF=86=E3=81=AB.=20=E3=83=95?= =?utf8?q?=E3=82=A1=E3=82=A4=E3=83=AB=E5=90=8D=E7=94=A8=E3=81=AB=E3=83=A9?= =?utf8?q?=E3=82=B8=E3=82=AA=E6=B7=B1=E5=A4=9C=E4=BE=BF=E3=81=AE=E7=95=AA?= =?utf8?q?=E7=B5=84=E6=83=85=E5=A0=B1=E3=82=92=E7=B8=AE=E3=82=81=E3=82=8B?= =?utf8?q?=E5=87=A6=E7=90=86=E3=82=92=E8=BF=BD=E5=8A=A0.?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- get-nhk-title.pl | 17 ++++++++++++----- rec-nhk-radio.pl | 21 ++++++++++++--------- 2 files changed, 24 insertions(+), 14 deletions(-) diff --git a/get-nhk-title.pl b/get-nhk-title.pl index 18aab9c..361d6b7 100755 --- a/get-nhk-title.pl +++ b/get-nhk-title.pl @@ -14,9 +14,8 @@ NHKオンライン テキスト版 (https://k.nhk.jp/) で提供されている には放送局を指定します. 指定できるのは, - r2 (第2放送), sapporo-r1, sendai-r1, tokyo-r1, nagoya-r1, osaka-r1, - hiroshima-r1, matsuyama-r1, fukuoka-r1 (ここまで第1放送), + hiroshima-r1, matsuyama-r1, fukuoka-r1 (ここまでAM放送), sapporo-fm, sendai-fm, tokyo-fm, nagoya-fm, osaka-fm, hiroshima-fm, matsuyama-fm, fukuoka-fm (ここまでFM放送) です. @@ -128,9 +127,17 @@ if ($program) { my $title = ''; #ラジオ深夜便対策 - if ($option{shinyabin} && $program->{list}[0] =~ /^ラジオ深夜便/) { - $title = 'ラジオ深夜便'; - $option{li} = '2,3'; + if ($option{shinyabin} && $program->{list}[0] =~ /^関西発ラジオ深夜便/) { + $title = '関西発ラジオ深夜便'. $program->{list}[2]; + $title =~ s/▽天気概況//g; + $title =~ s/・?各地の天気と予想気温//g; + $option{li} = ''; + }elsif ($option{shinyabin} && $program->{list}[0] =~ /^ラジオ深夜便/) { + $title = 'ラジオ深夜便'. $program->{list}[1]. $program->{list}[2]; + $title =~ s/▽天気概況//g; + $title =~ s/・?各地の天気と予想気温//g; + $title =~ s/【アンカー】/_/g; + $option{li} = ''; } #タイトル取得・エスケープ diff --git a/rec-nhk-radio.pl b/rec-nhk-radio.pl index 63a336b..1fe4f06 100755 --- a/rec-nhk-radio.pl +++ b/rec-nhk-radio.pl @@ -32,8 +32,8 @@ use Getopt::Long qw(:config posix_default no_ignore_case gnu_compat); use Time::Piece; use Encode; -my $FILE_PERMISSION = 644; -my $MAX_TITLE_LENGTH = 160; +my $FILE_PERMISSION = 644; +my $MAX_PATH_BYTES = 230; @@ -108,8 +108,8 @@ unless (@ARGV) { デフォルトは $end_margin_sec 秒です. <放送局ID> : 地域(sapporo, sendai, tokyo, nagoya, osaka, hiroshima, matsuyama, fukuoka) と - 放送(r1, r2, fm) の組み合わせ. ただし r2 には地域なし. - ex) tokyo-r1, matsuyama-fm, r2 + 放送(AM放送=>r1, FM放送=>fm) の組み合わせ. + ex) tokyo-r1, matsuyama-fm <録音長(分)> <タイトル> を省略したときには, get-nhk-title.pl を使用して取得します. @@ -152,10 +152,13 @@ $title =~ s/\s+/_/g; die "無効な引数です." unless ($y && $m && $d && $time_h <= 24 && $time_h >= 0 && $time_m <= 59 && $time_m >= 0 && $min > 0 && length $title); -my $file_name_base = sprintf('%04d-%02d-%02d_%02d%02d_nhk-%s_%s_%dmin', $y, $m, $d, $time_h, $time_m, $station, - substr($title, 0, $MAX_TITLE_LENGTH) , $min); -my $mp3 = "${file_name_base}.mp3"; -my $txt = "${file_name_base}.txt"; +#保存ファイル名 (長さ制限内に収める) +my $base = sprintf('%04d-%02d-%02d_%02d%02d_nhk-%s_%dmin_%s', $y, $m, $d, $time_h, $time_m, + $station, $min, $title ); +my $len_bytes_save_dir = bytes::length($ENV{RADIKO_SAVE_TO}. '/.mp3'); +$base = substr($base, 0, -1) while bytes::length($base) + $len_bytes_save_dir > $MAX_PATH_BYTES; +my $mp3 = "${base}.mp3"; +my $txt = "${base}.txt"; my $duration = get_duration_string($min, $end_margin_sec); @@ -168,7 +171,7 @@ my $rec_cmd = "cd $ENV{RADIKO_SAVE_TO}; $SLEEP $offset_time_sec; ". (length $ffmpeg_seg_max_retry ? "--ffmpeg-seg_max_retry $ffmpeg_seg_max_retry " : ''). "$station $duration $mp3 ". ($is_logging_mode ? ">> $txt; " : '; '). - "$CHMOD $FILE_PERMISSION $file_name_base*.mp3; "; + "$CHMOD $FILE_PERMISSION ${base}*.mp3; "; my $at_time = sprintf('%d:%02d %02d.%02d.%02d', $time_h, $time_m, $d, $m, ($y - int($y/100)*100 ) ); my $cmd = qq{$ECHO -e '$BASH << EOC\\n$rec_cmd\\nEOC' | $AT "$at_time"}; -- 2.43.0