ブログ引っ越し用に指定したURLのファイルをインターネットからダウンロードするPowerShellコマンドを作った話
2025年01月02日
最近、ブログのアクセス数が減少傾向にある。
ある時期を境に減少している点からして、
セキュリティ的にスパム判定されて表示されなくなったんじゃないかという推測。
自社PCからも数年前にブロックされてるしね。
そんな理由で、忍者ブログから引っ越すすることを考えた。
忍者ブログは独自ドメインを使える点がSEO対策的に良いみたいだけど、
これが仇となって、ブロックされているような気がする。
今回は引っ越し作業の準備ツールとして、
指定したURLのファイルをローカルフォルダにダウンロードするスクリプトを作った話。
ある時期を境に減少している点からして、
セキュリティ的にスパム判定されて表示されなくなったんじゃないかという推測。
自社PCからも数年前にブロックされてるしね。
そんな理由で、忍者ブログから引っ越すすることを考えた。
忍者ブログは独自ドメインを使える点がSEO対策的に良いみたいだけど、
これが仇となって、ブロックされているような気がする。
今回は引っ越し作業の準備ツールとして、
指定したURLのファイルをローカルフォルダにダウンロードするスクリプトを作った話。
記事のダウンロード
ブログ引っ越しにあたって、記事とファイルのダウンロード。忍者ブログ→FC2→Amebro
https://ameblo.jp/pikopikop-ko/entry-12243859815.html
ファイルリストの作成
記事については、ワンクリックでいけたけど、ファイルを一括でダウンロードする機能がなくて困る。
星のソムリエのフロントエンド雑記 忍者ブログからWordPressへの引越し
https://tada-fla.com/blog/20161004/ninjablog-wordpress/
ダウンロードした記事データからURLを含む行を抽出。otbeditのフィルタ機能で簡単にいけた。
URLの一覧を作りたいから、正規表現ありで < を \n< で置換。
もう一回ドメインでフィルタ。
URLリストからファイルをダウンロード
あとはこれをローカルに保存するわけだけど、変なソフトをダウンロードとかはしたくない。
自作できるじゃん
ググるとPythonでできることがわかった。PythonでできるならPowerShellでもできるんじゃね?とさらに検索して以下のサイトに到達。
Powershellスクリプトにてインターネットからファイルをダウンロードする(プロキシ対応)
https://kan3aa.hatenablog.com/entry/2015/04/16/155611
引っ越し用にカスタマイズ
Copilotを使って以下機能変更。・プロキシ機能を削除
・ローカルファイル名は元ファイル名を使用
・URLを引数としたモジュール化
完成したソースは以下のとおり。(要設定変更!)
#DownloadFile.ps1
function DownloadFileFromUrl {
param (
[string]$target_url, # ダウンロード対象のURL
[string]$save_path = "D:\Dropbox\VBA\ps\DownloadFile\getdata" # ファイルを保存するディレクトリ
)
# WebClient設定
$web_client = New-Object System.Net.WebClient
# URLからファイル名を抽出
$uri = New-Object System.Uri($target_url)
$file_name = Split-Path $uri.AbsolutePath -Leaf
$full_path = Join-Path $save_path $file_name
# ファイルダウンロード
$web_client.DownloadFile($target_url, $full_path)
Write-Output "Downloaded $file_name to $save_path"
}
# 関数の呼び出し例
DownloadFileFromUrl -target_url "https://blog.cnobi.jp/v1/blog/user/60a2f5771661576d9560c4bc53c032f8/1656947360"
(以下、対象ファイル数分列挙)
要設定変更作業
実行にあたっては、スクリプトの実行を「有効化」しないといけない。管理者権限のPowerShellを起動してコマンドを実行してやる必要がある。
Copilotに聞いて実行。
有効化
Set-ExecutionPolicy RemoteSigned
無効化
Set-ExecutionPolicy Restricted
使い方は、PowerShellを起動して、ps1ファイルのパスを指定する。
さっそく実行してみたら、一発で全ファイルをダウンロードできた。
昔だったら、専用ソフトを落とさないと何もできなかったけど、
今じゃCopilotに聞きながらPowerShellで大体できちゃう。
これじゃ、がんばってソフト開発しても使ってもらえないよなぁ。。。
ダウンロードで力尽きたので今日のところはここまで。
余談
ちなみにPowerShellを使って指定したファイルをインターネットからダウンロードするサイトは別のサイトが最初にHITしたもののソースコードに誤りがあって
Copilotを駆使してもダウンロードまでたどり着けず。
PR
Comment