@Blog{zip358.com}
日常日誌からプログラムやYOUTUBER紹介、旅日記まで日々更新中です。

画像の存在有無確認用.NodeJSで動く一式を共有します😌.
2025.02.21
おはようございます.画像の存在有無確認用.NodeJSで動く一式を共有します😌.先日の朝ポストしたものの一式のファイルになります、URLはダミーです.また、このプログラムコードはあるKサイトの画像の存在有無確認のために作ったものになります.
https://github.com/taoka3/check-images-app
このプログラムコードをカスタマイズすることによって、404ページへリダイレクトするようなページでも画像の存在有無を確認することが可能になります.
因みにこのコードでは大量に画像存在有無を確認する場合には適していない為、修正が必要になります.どこを修正しないといけないかは、ご自身でコードを修正してお試しください.ヒントは同期処理を非同期処理にという事です.また、このコードでコンソールに結果を出力していますが、業務などで使用する場合はCSVなどに出力するのが適切なのかも知れません.
const { loadImage } = require("@napi-rs/canvas");
function checkImages(name,imageUrls)
{
imageUrls.forEach(async (imgUrl) => {
try {
// canvasを使って画像が存在するか確認
await loadImage(imgUrl); // 画像をロードして存在確認
console.log(`name: ${name}, url: ${imgUrl}, exists: true`);
} catch (error) {
console.log(`name: ${name}, url: ${imgUrl} exists: false `);
}
});
}
プログラムコードは、朝にちゃちゃっと作ったものになります.なのでエレメントが無かったら落ちたりします.そういう欠陥はあるものの簡易的に画像の存在有無を確認したい場合などには役立つかと思います.
明日へ続く
著者名
@taoka_toshiaki
※この記事は著者が40代前半に書いたものです.
Profile
高知県在住の@taoka_toshiakiです、記事を読んで頂きありがとうございます.
数十年前から息を吸うように日々記事を書いてます.たまに休んだりする日もありますがほぼ毎日投稿を心掛けています😅.
SNSも使っています、フォロー、いいね、シェア宜しくお願い致します🙇.
SNS::@taoka_toshiaki
タグ
```, エレメント, コード, コンソール, ヒント, ファイル, プログラムコード, 一式, 修正, 同期処理, 存在有無, 存在有無確認, 存在有無確認用, 存在確認, 朝, 業務, 欠陥, 画像存在有無, 結果, 非同期処理,

基本情報技術者試験ワード集と単語帳作りアプリで学習の下準備をする方法! #FE #英語 #効率
2022.10.06
おはようございます、朝、3時半頃から起きています😪。
先日から英語の勉強をアプリではじめました、自分が使用しているのはモノグサというアプリです。このアプリをインストールしたのは二年前の話です、そのアプリを使用して効率良く英単語を覚えていってます、なんかよく分からないけど覚えて行けている🙄。
さて、それとは別に本題のお話です、単語帳作りアプリを使って基本情報技術者試験に出てくるワードを再学習しています。ワードの方は基本情報技術者試験ドットコムから引っ張ってきています、そのワードをCSV化してアプリに入れました。個人的に使用している分にはOKですが、これを公開や共有するとNGになりますので使用時はお気をつけてください🙇。
ワードを収取する方法はブラウザのコンソール画面に下記のコードを貼り付けて収集しました。
基本情報技術者試験ドットコムのキーワード集「あ」から「ん」までのリンクページをそれぞれ開きコンソール画面でコードを実行して、それをUTF8のファイルにペーストして一つのファイルにしてCSV保存。本当はnode.jsでコードを書いて実行でもしようかなと思っていたのですが、それすら面倒くさいと思ったので、こちらの地味な方法を選択しました。尚、行末に必要なカンマを追加して上げてくださいね🙄。
let s = [];
let $moji = function(m){
return String(m).replace(/[\,|\n|'|"]/g," ");
};
Object.keys(document.querySelectorAll(".big")).forEach((e)=>{
s[e] = "'" + $moji(document.querySelectorAll(".big")[e].innerText) + "'" + "," + "'" + $moji(document.querySelectorAll("ul > li > div > div")[e].innerText) + "'";
});
copy(s.join("\n"));
著者名
@taoka_toshiaki
※この記事は著者が40代前半に書いたものです.
Profile
高知県在住の@taoka_toshiakiです、記事を読んで頂きありがとうございます.
数十年前から息を吸うように日々記事を書いてます.たまに休んだりする日もありますがほぼ毎日投稿を心掛けています😅.
SNSも使っています、フォロー、いいね、シェア宜しくお願い致します🙇.
SNS::@taoka_toshiaki
タグ
3, CSV, FE, NG, OK, アプリ, インストール, お気, お話, キーワード, コード, これ, コンソール, それ, ドットコム, ブラウザ, モノグサ, ワード, 下準備, 下記, 二, 使用, 先日, 公開, 共有, 分, 効率, 勉強, 半, 単語帳, 収, 収集, 取, 基本, 学習, 情報, 技術者, 方, 方法, 朝, 本題, 画面, 自分, 英単語, 英語, 試験, 話,

bingから画像を一括ダウンロードするアプリ。
2020.06.14
任意のキーワード検索でbing画像からを一括ダウンロードするアプリを作りました。img-dl-bing-sss.exeファイルを起動すると動画のようなコンソール画面が開くので入力してダウンロードを開始してください。ダウンロードが終わると勝手に閉じます。
なお、一応R指定にも対応しています、キーワードがR指定項目かもと思う場合、Yと入力ください。
新垣結衣さんの熱烈なファンでもないですが、綺麗な方だとは思います。ということで例として使用させて頂きました、、、関係者の皆様ごめんなさい。
このアプリはウィンドウズ10環境で動作します。また、動作しないブロックされる場合は下記のURL等を参照しブロックを解除しお使いください。ブロック解除方法:https://forest.watch.impress.co.jp/docs/news/1130655.html
※なお、Bingサイトのデザインが変わった場合、動作しなくなりますのであしからず。
画像ダウンロードアプリのソースコードはこちら(古いコードですので動かない場合がありますVS2019C#)
using System;
using System.Runtime.CompilerServices;
namespace img_dl_bing_sss
{
class Program
{
static void Main(string[] args)
{
string keyword = "",R18="";
Console.ForegroundColor = ConsoleColor.Red;
Console.WriteLine("処理中は画面や立ち上がったブラウザを閉じないでください。\n" +
"処理が完了すると「***終了します***」と表示されます。\n" +
"何かキーを押し終了してください\n\n");
Console.ForegroundColor = ConsoleColor.Green;
Console.WriteLine("↓検索キーワードを入力しエンターを押してください");
keyword = Console.ReadLine();
Console.ForegroundColor = ConsoleColor.White;
Console.WriteLine("↓R指定ですか?\nY or N かの文字を入力しエンターを押してください");
R18 = Console.ReadLine();
Console.ForegroundColor = ConsoleColor.Yellow;
Console.WriteLine("***画像のダウンロード量(画像数ではありません) 1?999 ***");
var scroll = 9999;
try
{
scroll = int.Parse(Console.ReadLine());
if(scroll >=1 && scroll <= 999)
{
scroll = scroll * 9999;
}
}
catch
{
Console.ForegroundColor = ConsoleColor.Yellow;
Console.WriteLine("***検索キーワードが不適切です。***");
}
SuiteTests img = new SuiteTests();
if (img.Imgdlok(keyword, R18, scroll))
{
img.Dispose();
}
else {
Console.ForegroundColor = ConsoleColor.Yellow;
Console.WriteLine("***検索キーワードが不適切です。***");
}
Console.ForegroundColor = ConsoleColor.Yellow;
Console.WriteLine("***終了します***");
}
}
}
// Generated by Selenium IDE
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading;
using OpenQA.Selenium;
using OpenQA.Selenium.Chrome;
using OpenQA.Selenium.Firefox;
using OpenQA.Selenium.Remote;
using OpenQA.Selenium.Support.UI;
using OpenQA.Selenium.Interactions;
using Xunit;
using AngleSharp;
using AngleSharp.Html.Parser;
using AngleSharp.Html.Dom;
using AngleSharp.Dom;
using System.Runtime.InteropServices;
using Newtonsoft.Json;
using System.IO;
using System.Net;
public class SuiteTests : IDisposable {
public IWebDriver driver {get; private set;}
public IDictionary<String, Object> vars {get; private set;}
public IJavaScriptExecutor js {get; private set;}
public SuiteTests()
{
driver = new ChromeDriver();
js = (IJavaScriptExecutor)driver;
vars = new Dictionary<String, Object>();
}
public void Dispose()
{
driver.Quit();
}
public bool Imgdlok(string keyword="", string R18= "",int scroll = 999999)
{
if (keyword == "") return false;
Console.Clear();
string path = System.IO.Directory.GetCurrentDirectory() + "\\IMG\\";
if (!Directory.Exists(path))
{
Directory.CreateDirectory(path);
}
driver.Navigate().GoToUrl("https://www.bing.com/?scope=images&nr=1&FORM=NOFORM");
driver.Manage().Window.Size = new System.Drawing.Size(945, 1030);
driver.FindElement(By.Id("sb_form_q")).Click();
driver.FindElement(By.Id("sb_form_q")).SendKeys(keyword);
driver.FindElement(By.CssSelector(".search.icon.tooltip")).Click();
try
{
if (R18 == "Y")
{
driver.FindElement(By.LinkText("設定の変更")).Click();
driver.FindElement(By.CssSelector("#settings_safesearch div:nth-child(3)")).Click();
driver.FindElement(By.Id("adlt_set_off")).Click();
driver.FindElement(By.Id("sv_btn")).Click();
driver.FindElement(By.Id("adlt_confirm")).Click();
}
}
catch
{
Console.ForegroundColor = ConsoleColor.Yellow;
Console.WriteLine("***R指定ではありません***");
}
try
{
double ps = 0;
for (int i = 99; i < scroll;i+=1000)
{
js.ExecuteScript("window.scrollTo(0," + i + ")");
Console.CursorLeft = 0;
ps = (double)(((double)i / (double)scroll) * 100);
Console.Write("処理中::{0:D2}%",(int)ps);
}
}
catch
{
Console.ForegroundColor = ConsoleColor.Yellow;
Console.WriteLine("***Max画像まで到達しました***");
}
Console.ForegroundColor = ConsoleColor.White;
Console.WriteLine("\n***ダウンロード処理開始***\n");
int cnt = 0;
var elm = driver.FindElements(By.ClassName("iusc"));
driver.Manage().Window.Minimize();
foreach (var e in elm) {
dynamic jsondata = JsonConvert.DeserializeObject(e.GetAttribute("m"));
Console.ForegroundColor = ConsoleColor.Red;
Console.WriteLine((string)jsondata.murl + "::wait.....");
string imgurl = (string)jsondata.murl;
if(4 <= Path.GetExtension(imgurl).Length && Path.GetExtension(imgurl).Length <= 5)
{
try
{
cnt++;
string ext = Path.GetExtension(imgurl);
WebClient myWebClient = new WebClient();
myWebClient.DownloadFile(imgurl, path + "No-" + cnt + "-" + keyword + ext);
myWebClient.Dispose();
Console.ForegroundColor = ConsoleColor.Cyan;
Console.WriteLine("***" + cnt +"::" + imgurl + "\n::ダウンロード中、画面を閉じないでください...***");
Console.ForegroundColor = ConsoleColor.Green;
Console.WriteLine("***" + cnt + "::ダウンロード済***");
}
catch
{
Console.ForegroundColor = ConsoleColor.Yellow;
Console.WriteLine("***ダウンロードが失敗しました***");
}
}else{
Console.ForegroundColor = ConsoleColor.Yellow;
Console.WriteLine("***画像の拡張子が不明のためダウンロードが失敗しました***");
}
}
Console.ForegroundColor = ConsoleColor.Blue;
Console.WriteLine("***ダウンロード完了しました***\n" + path);
return true;
}
}
著者名
@taoka_toshiaki
※この記事は著者が40代前半に書いたものです.
Profile
高知県在住の@taoka_toshiakiです、記事を読んで頂きありがとうございます.
数十年前から息を吸うように日々記事を書いてます.たまに休んだりする日もありますがほぼ毎日投稿を心掛けています😅.
SNSも使っています、フォロー、いいね、シェア宜しくお願い致します🙇.
SNS::@taoka_toshiaki
タグ
10, bing, exe, img-dl-bing-sss, url, VS, アプリ, ウィンドウズ, キーワード, コード, こちら, こと, コンソール, サイト, ソース, ダウンロード, デザイン, ファイル, ファン, ブロック, 一括, 下記, 任意, 使用, 例, 入力, 動作, 動画, 勝手, 参照, 場合, 対応, 指定, 新垣結衣, 方, 方法, 検索, 環境, 画像, 画面, 皆様, 等, 綺麗, 解除, 起動, 開始, 関係者, 項目,
tensorflowは簡単にインストールできるけど、そこから何やれば
2019.02.09
tensorflowは簡単にインストールできるけど、そこから何やれば
良いのか、よくわからない。
いま流行りの人工知能ですが、こういうこと出来るよってのは
知っている、例えば画像の仕分けとか。
そこからオリジナルに適応できないのだ。
若造なら画像収集とか考えそうです、、、えぇぇ。
10代なら若気の至りだろうけど、40代間近になると
さすがに無いなと思うわけです。
収集していたらグロ画像が釣れそうな気がしますし
怖くてできません。ちなみに
逃げるは恥だが役に立つグーグル画像検索ダウンロードコンソールアプリを
公開しているのですが、これ変更すればえぇまぁ出来そうですね。
■人工知能を仕事で活用するならば。
人工知能で出来ることで、人の顔にモザイクをかけることが出来るということ。
他には、画像の仕分けとか、本屋さんで小耳に挟んだことですが
工事現場とかでは結構写真を取らないといけないらしく
それを分別するのが面倒だとか、
こういうのには人工知能は大活躍しそうですね。
著者名
@taoka_toshiaki
※この記事は著者が30代前半に書いたものです.
Profile
高知県在住の@taoka_toshiakiです、記事を読んで頂きありがとうございます.
数十年前から息を吸うように日々記事を書いてます.たまに休んだりする日もありますがほぼ毎日投稿を心掛けています😅.
SNSも使っています、フォロー、いいね、シェア宜しくお願い致します🙇.
SNS::@taoka_toshiaki
タグ
10, 40, tensorflow, アプリ, いま, インストール, オリジナル, グーグル, グロ, こと, これ, コンソール, さすが, そこ, ダウンロード, モザイク, 人, 人工, 仕事, 他, 公開, 写真, 収集, 変更, 小耳, 工事, 役, 恥, 本屋, 検索, 気, 活用, 現場, 画像, 知能, 簡単, 若気, 若造, 適応, 間近, 顔,