Skip to content

Commit

Permalink
Update: [Client][Settings/Capture] マクロ一覧を実装
Browse files Browse the repository at this point in the history
  • Loading branch information
tsukumijima committed Aug 24, 2024
1 parent a66b95e commit 3bfa251
Show file tree
Hide file tree
Showing 2 changed files with 98 additions and 16 deletions.
24 changes: 14 additions & 10 deletions client/src/services/player/managers/CaptureManager.ts
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ import { convertBlobToPng, copyBlobToClipboard } from 'copy-image-clipboard';
import DPlayer from 'dplayer';

import Captures from '@/services/Captures';
import { ILiveChannelDefault } from '@/services/Channels';
import PlayerManager from '@/services/player/PlayerManager';
import { IProgramDefault } from '@/services/Programs';
import useChannelsStore from '@/stores/ChannelsStore';
Expand Down Expand Up @@ -508,18 +509,25 @@ class CaptureManager implements PlayerManager {
public static generateCaptureFilename(): string {
const channels_store = useChannelsStore();
const settings_store = useSettingsStore();
const filename_pattern = settings_store.settings.capture_filename_pattern;

// マクロ置換用データを準備
const filename_pattern = settings_store.settings.capture_filename_pattern;
const now = dayjs();
const channel = structuredClone(channels_store.channel.current);
const channel = channels_store.channel.current.id === 'NID0-SID0' ? structuredClone(ILiveChannelDefault) : channels_store.channel.current;
const program = channel.program_present ?? structuredClone(IProgramDefault);
const program_start_time = dayjs(program.start_time);
const program_end_time = dayjs(program.end_time);
if (channel.id === 'NID0-SID0') { // まだ視聴が開始されていないときのみ
if (channel.id === 'NID0-SID0') {
// 現在視聴中のチャンネルがないプレビュー時はダミーの番組情報が返るので、プレビューに適した番組情報に置き換える
channel.service_id = 1024;
channel.name = 'アフリカ中央テレビ';
program.title = 'アフテレ1';
channel.channel_number = '011';
program.event_id = 65535;
program.title = '[二][字]今日のニュース';
program.start_time = '2024-04-01T12:00:00+09:00';
program.end_time = '2024-04-01T12:15:00+09:00';
program.duration = 15 * 60 * 1000;
}
const program_start_time = dayjs(program.start_time);
const program_end_time = dayjs(program.end_time);
const program_duration = dayjsOriginal.duration(program_end_time.diff(program_start_time));

// TVTest でファイル名に使えるマクロのサブセットを実装している
Expand Down Expand Up @@ -584,10 +592,6 @@ class CaptureManager implements PlayerManager {
.replace('%channel-name%', channel.name)
// チャンネル番号
.replace('%channel-no%', channel.channel_number)
// チャンネル番号 (2桁)
.replace('%channel-no2%', channel.channel_number.padStart(2, '0'))
// チャンネル番号 (3桁)
.replace('%channel-no3%', channel.channel_number.padStart(3, '0'))
// 番組名
.replace('%event-name%', program.title)
// イベント ID
Expand Down
90 changes: 84 additions & 6 deletions client/src/views/Settings/Capture.vue
Original file line number Diff line number Diff line change
Expand Up @@ -41,15 +41,90 @@
<div class="settings__item">
<div class="settings__item-heading">キャプチャの保存ファイル名パターン</div>
<div class="settings__item-label">
キャプチャの保存ファイル名パターン(拡張子なし)を設定します。デフォルトは Capture_%date%-%time% です。<br>
キャプチャの保存ファイル名(拡張子なし)を設定します。デフォルトは Capture_%date%-%time% です。<br>
字幕を合成したキャプチャのファイル名には、自動的に _caption のサフィックスが追加されます。<br>
ファイル名には、下記の TVTest 互換マクロ(一部)を使用できます。<br>
<ul class="ml-4 mt-1">
<li>%date%: 現在日時 - 年月日 (YYYYMMDD)</li>
<li>%time%: 現在日時 - 時分秒 (HHMMSS)</li>
ファイル名には、下記の TVTest 互換マクロを使用できます。<br>
<v-btn class="settings__save-button mt-3 px-3 py-0" style="height: 36px; font-size: 14px;" variant="flat"
@click="is_macro_list_visible = !is_macro_list_visible">
<Icon icon="fluent:text-bullet-list-20-filled" class="mr-2" height="19px" />マクロ一覧を表示
</v-btn>
<ul class="ml-4 mt-3" v-if="is_macro_list_visible">
<li>現在日時
<ul class="ml-4">
<li>%date%: 年月日 (YYYYMMDD)</li>
<li>%year%: 年 (YYYY)</li>
<li>%year2%: 年 (YY)</li>
<li>%month%: 月</li>
<li>%month2%: 月 (2桁)</li>
<li>%day%: 日</li>
<li>%day2%: 日 (2桁)</li>
<li>%time%: 時分秒 (時分秒 / HHMMSS)</li>
<li>%hour%: 時</li>
<li>%hour2%: 時 (2桁)</li>
<li>%minute%: 分</li>
<li>%minute2%: 分 (2桁)</li>
<li>%second%: 秒</li>
<li>%second2%: 秒 (2桁)</li>
<li>%day-of-week%: 曜日 (漢字)</li>
</ul>
</li>
<li>番組開始日時
<ul class="ml-4">
<li>%start-date%: 年月日 (YYYYMMDD)</li>
<li>%start-year%: 年 (YYYY)</li>
<li>%start-year2%: 年 (YY)</li>
<li>%start-month%: 月</li>
<li>%start-month2%: 月 (2桁)</li>
<li>%start-day%: 日</li>
<li>%start-day2%: 日 (2桁)</li>
<li>%start-time%: 時刻 (時分秒 / HHMMSS)</li>
<li>%start-hour%: 時</li>
<li>%start-hour2%: 時 (2桁)</li>
<li>%start-minute%: 分</li>
<li>%start-minute2%: 分 (2桁)</li>
<li>%start-second%: 秒</li>
<li>%start-second2%: 秒 (2桁)</li>
<li>%start-day-of-week%: 曜日 (漢字)</li>
</ul>
</li>
<li>番組終了日時
<ul class="ml-4">
<li>%end-date%: 年月日 (YYYYMMDD)</li>
<li>%end-year%: 年 (YYYY)</li>
<li>%end-year2%: 年 (YY)</li>
<li>%end-month%: 月</li>
<li>%end-month2%: 月 (2桁)</li>
<li>%end-day%: 日</li>
<li>%end-day2%: 日 (2桁)</li>
<li>%end-time%: 時分秒 (時分秒 / HHMMSS)</li>
<li>%end-hour%: 時</li>
<li>%end-hour2%: 時 (2桁)</li>
<li>%end-minute%: 分</li>
<li>%end-minute2%: 分 (2桁)</li>
<li>%end-second%: 秒</li>
<li>%end-second2%: 秒 (2桁)</li>
<li>%end-day-of-week%: 曜日 (漢字)</li>
</ul>
</li>
<li>番組長
<ul class="ml-4">
<li>%event-duration-hour%: 時間</li>
<li>%event-duration-hour2%: 時間 (2桁)</li>
<li>%event-duration-min%: 分</li>
<li>%event-duration-min2%: 分 (2桁)</li>
<li>%event-duration-sec%: 秒</li>
<li>%event-duration-sec2%: 秒 (2桁)</li>
</ul>
</li>
<li>%channel-name%: チャンネル名</li>
<li>%channel-no%: チャンネル番号 (3桁)</li>
<li>%event-name%: 番組名</li>
<li>%event-id%: イベント ID</li>
<li>%service-name%: サービス名</li>
<li>%service-id%: サービス ID</li>
</ul>
</div>
<v-text-field class="settings__item-form mt-5" color="primary" variant="outlined" hide-details
<v-text-field class="settings__item-form mt-6" color="primary" variant="outlined" hide-details
:density="is_form_dense ? 'compact' : 'default'"
:label="capture_filename_pattern_preview"
v-model="settingsStore.settings.capture_filename_pattern">
Expand Down Expand Up @@ -105,6 +180,9 @@ export default defineComponent({
// キャプチャの保存ファイル名パターンのプレビュー
capture_filename_pattern_preview: '',
// マクロ一覧を表示するか
is_macro_list_visible: false,
};
},
computed: {
Expand Down

0 comments on commit 3bfa251

Please sign in to comment.