2018年05月

PowerShellでWOLを使う

PowerShellでWOLを使う。
要は255×6とMACアドレスを10進変換した数値×16を送信してやれば良い。
パケットの送信は.NETのUdpClient クラスを利用する。
以下のページを参考にした。
Wake on LANでリモートコンピュータを起動する
$macAddress=[byte[]]("xx:xx:xx:xx:xx:xx".Split(":")|%{ [Convert]::ToInt32($_, 16)}) #起動したいPCのMACアドレス
$header=[byte[]](@(0xFF)*6)
$magicpacket = $header + $macAddress * 16 
$client=new-object System.Net.Sockets.UdpClient
$target=[System.Net.IPAddress]::Parse("起動したいPCのIPアドレス") 
$client.Connect($target,2304)
$client.Send($magicPacket,$magicPacket.Length)
$client.Close() 

IPアドレスが自動取得の場合は
$target=[System.Net.IPAddress]::Parse("起動したいPCのIPアドレス") 
$target = [System.Net.IPAddress]::Broadcast

NICが複数刺さっている場合は
$target=[System.Net.IPAddress]::Parse("起動したいPCのIPアドレス") 
$target = [System.Net.IPAddress]::Broadcast
$target=[System.Net.IPAddress]::Parse("192.168.0.255")  #対象セグメントのブロードキャストアドレス

Windowsの音量を揃える

YouTubeなんかで動画を見ていると動画によって音量がバラバラで
小さいほうにPCのボリュームを合わせると音量が大きい動画を視聴時やCMで
突然大きな音がしてびっくりする。
その逆にすると今度はプレイヤの音量を最大にしても音量が小さすぎてしまい、
何とかならんもんかといろいろ試したメモ。

結果、Equalizer APO + VSTプラグインを使用して最大音量を抑制する方法に落ち着いた。
Equalizer APO自体は特定の周波数帯を強調・抑制するアプリだが
別途VSTプラグインを使用することでいろいろと機能拡張が
出来るようである。

以下Windows10 64bit版の手順
まずEqualizer APOと W1 Limiterをダウンロード。

Equalizer APOをインストール
ダウンロードしたファイルを実行して下の画像までセットアップを進める
setup5
Playback deviceにはPCにインストールされている再生デバイスが表示されるので
使用する再生デバイスにチェックを入れる。

VSTプラグインを展開する
W1 Limiterはzipファイルになっているので解凍して中身のdllファイル
(32bit版と64bit版があるので使用しているOSに適合するものを選ぶ)を
「C:\Program Files\EqualizerAPO\VSTPlugins」にコピーする。
vstpluginR1

Equalizer APOを起動
デフォルトでセットされているフィルタは
赤い「-」ボタンを押してすべて削除する。
apo1

「+」ボタンを押してPlugin→VSTPluginと選択
apo2

フォルダボタンを押して先にコピーしておいたVSTプラグイン(dllファイル)を選択。
Open panelボタンを押す。
apo4R1

W1 Limiterの設定画面が立ち上がる。
apo3
Ceiling:音の最大値。下にスライドするほど最大音量を抑制する。
Threshold:左にスライドするほど小さい音を増幅。
Release:効果の継続時間。
AdaptiveRelease:Releaseを自動で設定する?
※Releaseに関してはスライダを動かしてもあまり変化は感じられなかった。
Apply automaticallyにチェックを入れるとリアルタイムで設定が
反映される。

W1 Limiterは元々音圧を稼ぐ目的で使用するものらしくCeilingは0にセット
するのが基本ようだが、今回は最大音量を抑制するために使用するので
PCのマスターボリュームとプレイヤのボリュームを50%の位置に合わせて
動画等を再生しながら丁度良い音量になるようにThresholdとCeilingを調整。

Equalizer APO導入前に試したこと
・ラウドネス等化を有効にする
 サウンドのプロパティから拡張タブ→ラウドネス等化のチェックボックスをON。
 一番お手軽に調整できるが、多少音量の大小が揃った気がするがあまり効果は
 感じられなかった。
 ※私の環境ではEqualizer APOをインストールすると拡張タブは表示されなくなった。

・GoVolume
 セットした最大音量を超えないように自動でマスタボリュームを調整するプログラム。
 設定も簡単でそれなりに効果があるが音量ミキサーが常にピクピク動くのと
 CPUを常に3~5%ほど使用するのが気になり不採用。

Get-ChildItem使用時のIncludeオプション

PowerShell使用時に特定のファイルのみ抽出したい時、Get-ChildItemのIncludeオプションを利用すればよいと思っていたが



Get-ChildItem  -Include <抽出したいファイル>
これで抽出できると思ってたが、Includeオプションを利用する場合は

Get-ChildItem  * -Include <抽出したいファイル>
と"*"等で対象をきちんと指定しないといけないようだ。 知らなかったのでメモ。

楽天トラベルのAPIを使う

楽天トラベルのAPIを利用した空き室検索のメモ

例えば特定の施設の空き部屋検索を行いたい場合、URLに
https://app.rakuten.co.jp/services/api/Travel/VacantHotelSearch/20170426?format=xml&checkinDate=チェックイン日(YYYY-MM-DD)&checkoutDate=チェックアウト日(YYYY-MM-DD)&hotelNo=施設番号&adultNum=大人人数&applicationId=アプリID

ブラウザのアドレスに入力すると検索結果がxml形式で取得出来る。
PowerShellなんかを利用して

$url = 'APIのURL'
$client = New-Object System.Net.WebClient
$client.Encoding = [System.Text.Encoding]::UTF8
$xmlDoc = [XML]$client.DownloadString($url)  #XMLの読込
write host $xmlDoc.root.hotels.hotel.roomInfo.Count  #空き部屋の数(空きがなければ0)
#件数が1件の場合検出されなかったので修正
$xmlDoc.root.pagingInfo.recordCount #1以上

定期的に実行すればキャンセル待ちが捗るかもしれない。

利用には以下サイトからアプリケーションIDの登録が必要。
https://webservice.rakuten.co.jp/