自動化厨のプログラミングメモブログ │ CODE:LIFE

Python/VBA/GAS/JavaScript/Raspberry Piなどで色んなことを自動化

MacroDroidでYouTubeの広告を自動スキップするやつが動かなかったので日本語環境用に調整する

そこまで頑張るくらいならPremium契約しなよ...と言われても、どうにかマクロで広告を自動スキップしたい。むしろ自動スキップする仕組み作ること自体が楽しいのでしょうがない。

play.google.com

有志が配ってくれてるテンプレートのほとんどが英語版で日本語対応させる手間がちょっとあったり、日本語環境が特殊なのかテキストの判定が上手くできなくて修正に時間が掛かったのでシェアする。

※このマクロはW!lloO氏の「YouTube : Auto skip ads 🚫 V3」をベースとして多言語対応させています。

とりあえず.macroファイルくれさいの人は こちらからダウンロード してくれさい。

  • 機能概要
  • 問題:タップさせたい「スキップ」というテキストを読み取ってくれない
  • 対策:テキストではなくコンテンツIDで指定する
  • トリガー
  • アクション

機能概要

  1. YouTubeアプリ上で「広告主のサイトにアクセス」が表示されたら → 音量を0にして画面を暗くする
  2. YouTubeアプリ上で「スキップ」ボタンが表示されたら → スキップボタンをタップして、音量と画面の明るさを元に戻す
  3. YouTube上の「広告主のサイトにアクセス」が消えたら → 音量と画面の明るさを元に戻す
  4. YouTubeアプリを終了または画面をOFFにしたら → 音量と画面の明るさを元に戻す
続きを読む

はてなブログで書いたコードブロックにコピーボタンを追加する方法

このブログはプログラミングメモブログと題していて、便利だったからまた使うかもしれないコードスニペットを書くのがメインテーマだったりするのですが、何故か今まで実装していなかった「コードをコピーするボタン」。

ちょこっとJavaScript書けばできるだろうなと思いつつやってなかったのですが、ChatGPT先生にお願いして書いてもらったものが一発で動いたのでシェア。

右上のボタンをクリックでコピーされるやつ

設定方法

設定はわりと簡単で、以下のコードをはてなブログのデザイン設定→フッターに入れるだけ。

※モバイル側も別途設定が必要

コード

アイコンを全部絵文字でやってくれたので画像ファイルも用意しなくてOK。助かる。

コードブロック自体のシンタックスハイライトは過去記事を参考に設定ください。

codelife.cafe

<script>
document.querySelectorAll("pre").forEach((pre) => {
  // ボタン要素を作成
  const button = document.createElement("button");
  button.textContent = "📋 Copy";
  button.style.position = "absolute";
  button.style.top = "5px";
  button.style.right = "5px";
  button.style.padding = "5px 10px";
  button.style.fontSize = "12px";
  button.style.cursor = "pointer";
  button.style.border = "none";
  button.style.borderRadius = "5px";
  button.style.background = "rgba(0, 0, 0, 0.7)";
  button.style.color = "white";

  // `pre` の親要素を relative にする
  const wrapper = document.createElement("div");
  wrapper.style.position = "relative";
  pre.parentNode.insertBefore(wrapper, pre);
  wrapper.appendChild(pre);
  wrapper.appendChild(button);

  // コピー処理
  button.addEventListener("click", async () => {
    const codeLines = Array.from(pre.querySelectorAll("div"))
      .map((div) => div.textContent)
      .join("\n");

    try {
      await navigator.clipboard.writeText(codeLines);
      button.textContent = "✔ Copied!";
      setTimeout(() => (button.textContent = "📋 Copy"), 1500);
    } catch (err) {
      console.error("Copy failed", err);
      button.textContent = "❌ Error";
      setTimeout(() => (button.textContent = "📋 Copy"), 1500);
    }
  });
});
</script>

ブラウザ×JavaScriptだけで複数ページに渡る株価データを自動取得 Webスクレイピング超入門⑤

ブラウザ操作の自動化は別にPythonやSelenium/Playwright/WebDriverとか使わなくてもブラウザだけで出来るよという話。

「自動化して業務効率アップ!」 とか「株価データを簡単スクレイピング!」みたいな話にはだいたいRPAツール使うとか、Python使えばこんなに楽にとかの情報が出てきますが、実はブラウザ操作の自動化に限って言えばそういうの要らないです。

そもそもブラウザはJavaScriptを実行できるので、ページの情報を取るのも、入力するのも、ボタンを押すのもJavaScriptでできます。

↓とりあえず動くサンプル。コードの解説は後半で書きます。

youtu.be

続きを読む

Webスクレイピングの必須知識 利用規約やrobots.txtの確認方法 Webスクレイピング超入門④

Webスクレイピング超入門シリーズ④の題材は「そのサイトってスクレイピングしていいんだっけ」です。 過去3回ではスプレッドシートやGASを使ってお手軽にWebサイトのデータを自動取得する方法を紹介しました。

  1. Webページデータ取得: 初心者向けWebスクレイピング手法
  2. 国民の祝日データを文字化け回避
  3. Webスクレイピングの必須知識「XPath」のチートシート

が、自動取得できることと自動取得してOKかどうかは別でして、どうやってスクレイピングOK/NGを確認すれば良いのか という話。

端的に言えばタイトルのとおり「利用規約」「robots.txt」を確認することになりますが、その見方を紹介します。

  • スクレイピングとは?
  • スクレイピングして良いサイトとダメなサイトの見分け方
    • 1. 利用規約を確認する
    • 2. robots.txtを確認する
  • robots.txtの構造
  • robots.txtの設定例
    • 1. すべてのクローラーに対して全ページを許可
    • 2. すべてのクローラーに対して全ページを禁止
    • 3. 特定のディレクトリを禁止
    • 4. 特定のページを禁止
    • 5. 特定のクローラーを禁止
    • 6. 特定のクローラーを許可
    • 7. 特定のディレクトリを許可
    • 8. 特定のファイルタイプを禁止
  • 日本の法律や海外の規制について
    • 1. 著作権法
    • 2. 不正アクセス禁止法
    • 3. 海外の規制
  • まとめ
続きを読む

Windows Sandboxをよく使うならwsbファイルでいろいろ設定しておくと楽

以前にも書いた超お手軽に使い捨て仮想マシンを立ち上げられるWindows Sandbox。

codelife.cafe

最近ではかなり進化していて、ホストOSとのフォルダ共有やログオンスクリプトなどの設定をあらかじめ定義しておける.wsbファイルなるものがある。 メモ帳とかで構成を定義して sandbox.wsb のような名前で保存。ダブルクリックで実行するとWindows Sandboxが立ち上がる。

ただのXMLファイルといえばそうだけど書き方メモっておかないと忘れるので書いておく。

続きを読む