これは何に使うの?
アニメのリアルタイム実況ツイートで多くの実況民に愛用されているTwitterクライアント「Tween」、使っているうちにどんどんハッシュタグリストが埋まってしまってすぐに次に使うハッシュタグが見つけられないということありますよね?
そんな時、その日使うハッシュタグだけがハッシュタグリストに出てくるようにするためのモノです。
※バッチファイルだけだとできることが少ないし、PowerShellだと権限設定とかいろいろ面倒くさいことが多いので、バッチファイルにPowerShellを埋め込んで処理させています。
@echo off
rem ### DOS窓を隠す
if not "%~0"=="%~dp0.\%~nx0" start /min cmd /c,"%~dp0.\%~nx0" %* & goto :eof
rem ================================
rem Tweenハッシュタグリスト切替バッチ
rem Rel.2208052 io_oj
rem ================================
rem ---------------- 環 境 設 定 ---------------------
rem ### TweenTAGが保存されているフォルダ
set PT=%~dp0
rem ### Tween.exeが保存されているフォルダ
set PX=%ProgramFiles(86)%\Tween
rem ### SettingCommon.xmlが保存されているフォルダ
set PS=%USERPROFILE%\AppData\Roaming\Tween\Tween
rem ### 曜日切替の時刻(28時間制の場合は午前4時)
set TD=4
rem --------------------------------------------------
echo Tweenハッシュタグリスト更新中・・・
rem ### パス正規化
if "%PT:~-1%"=="\" set PT=%PT:~0,-1%
if "%PX:~-1%"=="\" set PX=%PX:~0,-1%
if "%PS:~-1%"=="\" set PS=%PS:~0,-1%
rem ### 時刻取得
set TS=%time:~0,2%
set TS=%TS: =%
rem ### 初期設定
for /l %%i in (0,1,6) do (
call :SUB_INT %%i
)
rem ---------------- メイン処理 ---------------------
call :SUB_WKDAY
echo [OK] TodayTAG :%FN%
call :SUB_TFCHK
echo [OK] ConfigTAG:%CK%
call :SUB_BACKUP
tasklist | find "Tween.exe" >nul 2>&1
call :SUB_RESTORE
if %ERRORLEVEL%==0 (
taskkill /IM Tween.exe >nul 2>&1
)
start "" "%PX%\Tween.exe"
del "%temp%\%~n0_1.tmp" >nul 2>&1
goto :eof
rem ---------------- 実処理部分 ---------------------
rem ### 曜日定義名設定/曜日定義存在チェック
:SUB_INT
for /f "usebackq delims=" %%A in (`powershell "(Get-Date).AddDays(%1).DayOfWeek.value__"`) do set WN=%%A
for /f "usebackq delims=" %%A in (`powershell "(Get-Date).AddDays(%1).DayOfWeek"`) do set WT=%%A
set F%1=#%WN%;%WT:~0,3%_HashTag
if not exist "%PT%\#%WN%;%WT:~0,3%_HashTag.txt" echo #%WN%;%WT:~0,3%_HashTag> "%PT%\#%WN%;%WT:~0,3%_HashTag.txt"
exit /b
rem ### 今日は何曜日?
:SUB_WKDAY
rem ## 深夜時間対応
if %TS% lss %TD% (
SET FN=%F6%
) else (
SET FN=%F0%
)
exit /b
rem ### SettingCommon.xml にロードされている曜日定義をチェックする
:SUB_TFCHK
rem ## 曜日定義がなければ今日の定義ファイル、有ればその曜日の定義ファイルを出力先に指定
findstr "#[0-6];[A-Z][a-z][a-z]_HashTag" "%PS%\SettingCommon.xml" >NUL
if %ERRORLEVEL%==1 (
set CK=%FN%
) else (
for /f "usebackq delims=" %%A in (`powershell "Get-Content '%PS%\SettingCommon.xml'| Select-String '#[0-6];[A-Z][a-z][a-z]_HashTag' | foreach { $_ -replace '.*#','#'} | foreach { $_ -replace '^.*<string>',''} | foreach { $_ -replace '</string>$',''}"`) do set CK=%%A
)
exit /b
rem ### SettingCommon.xml から曜日定義をバックアップする
:SUB_BACKUP
rem ## 曜日定義を出力
type "%PT%\%CK%.txt" > "%temp%\%~n0_1.tmp"
powershell "Get-Content '%PS%\SettingCommon.xml' -Encoding default | Select-String '<string>' | foreach { $_ -replace '^.*<string>',''} | foreach { $_ -replace '</string>.*$',''} | Out-File '%temp%\%~n0_1.tmp' -Encoding default" -Append
powershell "(Get-Content '%temp%\%~n0_1.tmp' -Encoding default) | ? {$_.trim() -ne '' } | sort -Unique | Out-File '%PT%\%CK%.txt' -Encoding default"
type nul >"%temp%\%~n0_1.tmp"
rem ## その他設定を出力
powershell "Get-Content '%PS%\SettingCommon.xml' -Encoding default | Select-String -Pattern '\<(.?HashTags)|(string)|(HashSelected./)|(/SettingCommon)\>' -NotMatch | Out-File '%temp%\%~n0_1.tmp' -width 1000 -Encoding default"
powershell "(Get-Content '%temp%\%~n0_1.tmp' -Encoding default) | ? {$_.trim() -ne '' } | Out-File '%PT%\Seting.txt' -Encoding default"
type nul >"%temp%\%~n0_1.tmp"
exit /b
rem ### 曜日定義から SettingCommon.xml にリストアする
:SUB_RESTORE
rem ## その他設定を出力
powershell "(Get-Content '%PT%\Seting.txt' -Encoding default) | Select-String '</SettingCommon>' -NotMatch | Out-File '%temp%\%~n0_1.tmp' -width 1000 -Encoding default"
rem ## 曜日定義を出力
powershell "Echo ' <HashTags>' | Out-File '%temp%\%~n0_1.tmp' -Encoding default -Append"
powershell "Get-Content '%PT%\%FN%.txt' -Encoding default | sort -Unique | foreach { $_ -replace '^',' <string>'} | foreach { $_ -replace '$','</string>'} | Out-File '%temp%\%~n0_1.tmp' -Encoding default -Append"
powershell "Echo ' </HashTags>' | Out-File '%temp%\%~n0_1.tmp' -Encoding default -Append"
powershell "Echo ' <HashSelected />' | Out-File '%temp%\%~n0_1.tmp' -Encoding default -Append"
powershell "Echo '</SettingCommon>' | Out-File '%temp%\%~n0_1.tmp' -Encoding default -Append"
powershell "(Get-Content '%temp%\%~n0_1.tmp' -Encoding default) | ? {$_.trim() -ne '' } | Out-File '%PS%\SettingCommon.xml' -Encoding default"
type nul >"%temp%\%~n0_1.tmp"
exit /b
配置方法
1. 適当なパスに配置します
2. インストールパスを変えている場合は環境設定の以下の変数設定を変えて下さい
変数:PX →Tween.exeが保存されているフォルダ
変数:PS →SettingCommon.xmlが保存されているフォルダ
3. Tweenの設定ファイルを壊してしまう場合があるため、念のため以下のファイルを
バックアップして下さい。(べつに設定し直せばいいよって人はやらなくてもヨシ)
→%USERPROFILE%\AppData\Roaming\Tween\Tween\SettingCommon.xml
使用方法
・TweenTAG.bat を実行すると、10秒前後でTweenのハッシュタグリストをその曜日の設定に
書換えて起動してくれると思います。
・初期起動時はすべての設定がその日の曜日設定として登録されます。
・「#0;Sun_HashTag」のようなハッシュタグが登録されますが、どの曜日用の設定なのかを
判断するためのものなので、削除/変更をしないで下さい。
・1日の区切りの時間の初期設定は午前4:00です、午前4:00を境に曜日が切り替わります。
午前4:00をまたいで使用する場合、一旦Tweenを終了させてからTweenTAG.batを実行すると
その日の設定がロードされて起動します。
・曜日ごとのハッシュタグリストを直接書き換える場合は、以下のファイルを編集して下さい。
日曜日→ #0;Sun_HashTag.txt
月曜日→ #1;Mon_HashTag.txt
火曜日→ #2;Tue_HashTag.txt
水曜日→ #3;Wed_HashTag.txt
木曜日→ #4;Thu_HashTag.txt
金曜日→ #5;Fri_HashTag.txt
土曜日→ #6;Sat_HashTag.txt
既知の不具合
・環境によって SettingCommon.xml の文字コードがUTF-8で保存されている場合があり、
その場合ファイルを壊してしまうことがあります。(設定が初期化されてしまいます)