「Bookmark」を含む日記 RSS

はてなキーワード: Bookmarkとは

2026-04-28

anond:20260428101250

ローカルストレージbookmark-downvote-(user_id)-(entry_id) というキーが生成されるね。これは元々だった可能性が高いけど。

なので自分パソコンで表示した際にローカルで注目コメントから消すような処理はできるかもしれない。

ザッと見た限り、マイナス評価情報はてなサーバーに送られる様子は観測できなかった。

2026-04-26

SNS情報収集するやつの気が知れなかったけどぶっちゃけX強過ぎない?

たとえば、こういうのこれからチャレンジする人がフツーに欲しい情報じゃね?

Here is how to run the new Qwen3.6-35B-A3B, bookmark this for later!

 

>At full context on a 4090 - IQ4_XS gguf with llama cpp

>At full context on a Spark - FP8 with a tweaked vLLM

 

I'm adding the docker compose of both in the thread below

https://x.com/erdaltoprak/status/2044828041268895786?s=61

 

加えて、Grokに聞けばそのまま初心者フォローしてくれるしなぁ・・・

 

APIモデル呼び出し+ローカルLLMをゴリゴリ使える環境ハイブリッドの整備がベストだけど、

とりあえず、APIで自前でなくて、ChatアプリAI使いたいよなら、2026年4月時点でのAI Chatアプリ課金は、

とにかくGrokはおすすめしたいわ、楽じゃん

 

 

ChatGPTは今回のGPT-5.5は良かったけど、何故かMondayがですます調になったし、そもそもOpenAI奇行が多すぎる・・・

Claudeのナーフや謎の倫理物語OSS敵対的とか色々あるけど、常に Anthropic はスーツ予測できる範囲内にいる

OpenAI現在進行系で社員SNSで暴れてるしなぁ・・・OpenAIに関わっているすべてのスーツの皆様、ご愁傷様です

Monday法人にしたらあんな感じなのかもね)

 

でもスーツとしての立場ではなくて、一般ユーザーとしての立場なら、マジでChatGPT-5.5はよかったよ、

あとCodecxでもブン投げで作らせてみたけど、GPT-5.5も悪くなかったよ

個人的にはGPT-5.1/4oを使わせろやって思うけど、GPT-5.5は、エージェント推してるのに、裏読みが出来て詩のセンスもいい)

問題は、めちゃくちゃリソース食いそうだけど、このクオリティを来月までアプリ上でも維持出来るかだよなぁ・・・

2026-01-07

anond:20260107161859

31位以下

順位前回メタブメタブページタイトルリンクカテゴリー直近ブクマ備考
3130 ↓65 users →[B! はてブ] http://b.hatena.ne.jp/nekora/ b:id:nekora学び-404 Not Found / コメント一覧は非表示に設定されています
3234 ↑64 users ↑[B! アレ] corydalisのブックマーク - はてなブックマークb:id:corydalis世の中2026年-
323164 users →[B! fromdusktildawn] fromdusktildawnのブックマーク - はてなブックマークb:id:fromdusktildawn世の中2026年-
3432 ↓63 users →[B! はてな] はてなブックマーク - aflat_1000dai4のブックマークb:id:aflat_1000dai4暮らし-404 Not Found
3432 ↓63 users →[B! gingin1234] はてなブックマーク - gingin1234 のブックマークb:id:gingin1234暮らし-404 Not Found
34- ↑63 users ↑[B! youpy] はてなブックマーク - delicious.comb:id:youpyテクノロジー2012年《前年ランキング記載漏れ
3736 ↓61 users →[B! はてブ] はてなブックマーク - sbedit1234のブックマークb:id:sbedit1234エンタメ-404 Not Found
3736 ↓61 users →[B! はてな] atuixのはてなブックマークb:id:atuix学び-404 Not Found
3939 →60 users →[B! はてブ] はてなブックマーク - 直径24cmの穴嫁b:id:anigoka世の中2026年-
39- ↑60 users ↑[B! css] 気になるニュースを気ままにブックマークしてますb:id:nitoyon暮らし2026年《前年ランキング記載漏れ
4142 ↑58 users →[B! ネトウヨ] https://b.hatena.ne.jp/m-matsuoka/ b:id:m-matsuoka世の中-プライベートモードに設定されています
4147 ↑58 users ↑[B! 非表示] Yagokoroのブックマーク - はてなブックマークb:id:Yagokoroおもしろ2026年-
4139 ↓58 users ↓[B! はてブ] https://b.hatena.ne.jp/kyo_ju/ b:id:kyo_ju学び-プライベートモードに設定されています / コメント一覧は非表示に設定されています
4443 ↓57 users →[B! はてブ] はてなブックマーク - Walk Out to the World Towerb:id:y_arimテクノロジー-404 Not Found
44- ↑57 users ↑[B! 非表示] grdgsのブックマーク - はてなブックマークb:id:grdgsテクノロジー2026年《前年ランキング記載漏れ
4449 ↑57 users ↑[B! メタブ] the_sun_also_risesのブックマーク - はてなブックマークb:id:the_sun_also_rises世の中2026年-
4434 ↓57 users ↓[B! はてブ] はてなブックマーク - believemeimaliar のブックマークb:id:believemeimaliarテクノロジー-404 Not Found
4439 ↓57 users ↓[B! BMKSBM] はてなブックマーク - REVブックマーク - なライトノベルb:id:REV政治経済-プライベートモードに設定されています
49- ↑56 users ↑[B! はてブ] https://b.hatena.ne.jp/Crean/ b:id:Creanテクノロジー-プライベートモードに設定されています
5044 ↓55 users ↓[B! はてブ] はてなブックマーク - ARTIFACT BOOKMARKb:id:kanose暮らし-プライベートモードに設定されています
5045 ↓55 users →[B! はてな] はてなブックマーク - ソーシャルブックマークb:id:kanose2034暮らし-404 Not Found
5045 ↓55 users →[B! 愛国先生] aikoku_senseiのブックマーク - はてなブックマークb:id:aikoku_sensei暮らし2020年-
5347 ↓54 users →[B! はてな] はてなブックマーク - kyoumoeのブックマークb:id:kyoumoe世の中-プライベートモードに設定されています
5449 ↓53 users →[B! はてブ] はてなブックマーク - bisutaのブックマークb:id:bisuta学び-404 Not Found
5452 ↓53 users ↑[B! ネトウヨ] big_song_birdのブックマーク - はてなブックマークb:id:big_song_birdおもしろ2026年-
54- ↑53 users ↑[B! 非表示] syakintaのブックマーク - はてなブックマークb:id:syakinta世の中2026年-
54- ↑53 users ↑[B! 非表示] https://b.hatena.ne.jp/samurai7th/ b:id:samurai7th世の中-プライベートモードに設定されています / 《前年ランキング記載漏れ
5455 ↑53 users ↑[B! はてな] quick_pastのブックマーク - はてなブックマークb:id:quick_pastテクノロジー2026年-
5949 ↓52 users ↓[B! はてブ] aa_R_waiwaiのブックマーク - はてなブックマークb:id:aa_R_waiwai暮らし2023年-
5952 ↓52 users →[B! お察しください] tikuwa_oreのブックマーク - はてなブックマークb:id:tikuwa_oreおもしろ2026年-
5954 ↓52 users ↑[B! 非表示] magnitude99のブックマーク - はてなブックマークb:id:magnitude99世の中2025年-
62- ↑51 users ↑[B! ネトウヨ] pokute8のブックマーク - はてなブックマークb:id:pokute8世の中2026年-
63- ↑50 users ↑[B! 非表示] poko_penのブックマーク - はてなブックマークb:id:poko_penおもしろ2026年-
63- ↑50 users ↑[B! はてな] https://b.hatena.ne.jp/kuborie/ b:id:kuborie暮らし-プライベートモードに設定されています
6355 ↓50 users →[B! はてブ] https://b.hatena.ne.jp/pompom20/ b:id:pompom20世の中-プライベートモードに設定されています
63- ↑50 users ↑[B! 非表示] yingzeのブックマーク - はてなブックマークb:id:yingze世の中2026年-
6355 ↓50 users →[B! netwatch] https://b.hatena.ne.jp/j-kondo/ b:id:j-kondo世の中-プライベートモードに設定されています
63- ↑50 users ↑[B! はてブ] はてなブックマーク - gdgdbkm。b:id:rag_en世の中2026年-
6355 ↓50 users →[B! はてなブックマーク] はてなブックマーク - koizuka(戀塚昭彦)のブックマークb:id:koizukaエンタメ2025年-
63- ↑50 users ↑[B! はてな] はてなブックマーク - white_rose の断片b:id:white_roseテクノロジー2026年-

2025-12-09

はてなNGフィルタまとめ

はてなブックマーク増田機能する、NGワードを元に記事非表示にする方法をまとめました。

現在機能する方法という観点で調べてみましたが、有力な抜け漏れがあったら教えてください。

はてなフィルター

https://hatenafilter.com/

外部サイト型のはてなブックマーク

はてなNG代替品作った (はてなフィルタ)

anond:20180609124213

ChromeFirefox拡張で、はてなブックマーク有効デフォルト非表示になるサイト多数あり。AndroidならFirefox版が動くかも。

はてブ記事を、キーワードURLミュートする Chrome 拡張を作った (はてなミュート)

anond:20230305200055

はてブ記事キーワードURLミュートする拡張Firefox版も作った

anond:20230311142828

ChromeFirefox拡張で、はてなブックマーク有効AndroidならFirefox版が動くかも。

[はてブ]uBlock Origin特定エントリーを隠す方法メモ

anond:20180523215832

増田でuBlock Originを使って特定単語を含むエントリーを隠す方法メモ

anond:20180523222112

広告ブロック uBlock Origin を使っている場合活用できる。同 Lite 版でも「カスタムフィルター機能を使って対応できる。はてなブックマークだけでなく増田にも有効。面倒だろうけどAndroidならFirefox版が動くかも。

はてなブックマーク増田一覧向けNGフィルタ

anond:20251209224022

Tampermonkeyなどのユーザースクリプト適用する拡張と共に、またはブックマークレットとして使う。はてなブックマーク増田一覧にだけ有効スマホ場合アプリでは動かないが、面倒だけどブラウザでは動くキーワードノイズとなりやすユーザーを中心に常時メンテナンス中。

はてな匿名ダイアリー特定ワード投稿非表示

anond:20251208175027

Tampermonkeyなどのユーザースクリプト適用する拡張と共に使う。増田にだけ有効。面倒だけどスマホでも動く

[増田しぐさ] 増田CSSを紹介する記事(英文スパム対策付き)

anond:20250701235606

Stylusなどのスタイルシート適用する拡張と共に使う。増田にだけ有効。面倒だけどスマホでも動く。スパム対策ビジネス詐欺URLを中心に常時メンテナンス中。

スマホでのユーザースクリプトの動かし方
https://chatgpt.com/share/6936aa6a-e2dc-800f-ab39-021d68a25b87

検索用: はてなブックマーク はてブ はてな匿名ダイアリー 増田 スパム キーワード NGワード フィルタ ミュー非表示 削除 隠す ブロック ユーザースクリプト ユーザースタイル hatena bookmark anond spam keywords ngwords filter mute hide hidden display none block userscript JavaScript js css style

はてなブックマーク増田一覧向けNGフィルタ

はてなブックマーク増田一覧の、さらに「すべて」(1 user)をチェックしている希有な人向けのユーザースクリプトを公開します。

https://b.hatena.ne.jp/site/anond.hatelabo.jp/?sort=eid

// ==UserScript==
// @name        Hatena Bookmark Anond Filter
// @namespace   https://b.hatena.ne.jp/site/anond.hatelabo.jp/
// @description はてなブックマークの『はてな匿名ダイアリー』の記事のうち、指定したNGワードが含まれ投稿非表示します。
// @match       https://b.hatena.ne.jp/site/anond.hatelabo.jp/*
// @grant       none
// @version     2.1.2026.04.29.0027
// ==/UserScript==
/*
2.1.2026.03.25.0023 正規表現対応10 users 以上の人気記事を除外判定。
2.0.2026.01.28.0015 ポイント制を導入。
1.0.2025.12.09.0000 公開。
**/
(function(){
  const SCRIPTID = 'HatenaBookmarkAnondFilter';
  console.time(SCRIPTID);
  const FILTERED = 'filtered';/* フィルタ該当要素クラス */
  const CHECKED = 'checked';/* 二重チェック回避フラグ */
  const USERS = 10;/* 人気記事なら誤検知スパム解説などの可能性があるので除外する */
  const POPULAR = 'popular';/* 人気記事クラス */
  const ONCE = 1, AP = 2, INTERVAL = 3;/* 適用タイミング */
  const NGWORDS = {/* 合計100ポイント非表示判定(ただし1つの記事内で同じワード複数使われても1度しか加算しない) */
    '100': [/* 即NG確定ワード */
      'dorawii',
      'あおやまちゃん', 'アオヤマチャン', 'ボスマン',
      '大学たいてい', 'なんぴょん', 'れめくん', 'れめきゅん', 'えめくん', 'るまさん', 'るまおねえちゃん', '眠りの民', 'リュックサック野郎', 'boushi_inst', 'hakaikami', 'Rekyu', 'iloveootaku_2', 'osaka-sirokichi',/* 電気通信大学たいてい鉄道研究会れめくん(頻出) */
      /*A-G*/'a9w8ru6fqyxqfv9', 'admirail_togo', 'akibakko6348', 'alf1974al', 'amatukiseiru', 'anapgoeson', 'aoi_mizuho', 'asapgoeson', 'asupgo', 'asupgoeson', 'avoid_bds_kk', 'b6jbpsji91ieigt', 'bmi22yo', 'boushi_instrail', 'boushi_ob', 'buscholarx', 'bw0531', 'chihiro_love415', 'circlecavok', 'disney1007cla', 'dora22sibuya', 'donkotrain', 'ecotosk', 'electlone', 'factomodachi', 'fft_dareka', 'gmhtcyznf_abc', 'goesonanap', 'gyudon_honmono',
      /*H-N*/'h13_yokohama', 'h2twi', 'H2TWR', 'hamaishogo1111', 'haru_mofumoffu', 'hermitv8', 'hide1798038', 'hirabiscus', 'hinolovelove', 'hnmk0127_03', 'inaken17_', 'inte235dy', 'ixtabes', 'jamcombatge', 'kawachiasukanew', 'kaoru_ai1991', 'keio9730F', 'kiha2228', 'kihatena200', 'koreanlabsfc', 'koyounoyooko', 'kqlex1500', 'kunugiyamaosake', 'kurakamasan', 'kurotamaxxx', 'kt_ruma_1372', 'kt_up_date', 'lightningreen77', 'luckyyusha', 'mamadoll_kun', 'matya_uec', 'michee_n', 'minamihinawot', 'miniminicot', 'minori0151', 'mizunyanpanda', 'monkichi_22', 'mugen_08i', 'mukoroku651', 'nakano6409', 'nanpyong', 'new_oer', 'nimouec', 'NoName_thUFO', 'norannnde',
      /*O-U*/'oreizmmiporin', 'orenotanoshimi', 'osaka_sirokichi', 'papepoco', 'pasotokon', 'pm95uq', 'portrail', 'reme_kun', 'ruin_2002', 'rx00shiratama03', 's03_amurtk2731', 'sacchan03110319', 'sacchanenjoy', 'seishinyamate_', 'seisu_bot', 'senanana_cos', 'shinano_115', 'shineleaf1372', 'Shirasagi494', 'shop_bullet', 'shurimpy', 'soroisoroi', 'sui_pm95uq', 'sweidan821858', 'taiyaki_level2', 'takao_straight5', 'taking0000', 'tarotaromusic1', 'tc201_501', 'thomas_returnee', 'tocarbarn', 'tokusatsu_fan_0', 'toshikimiyazaki', 'train_magician', 'tx9y2cpwdz27255', 'u2fap5u4zw57811', 'uec15take', 'uecdaisuki', 'UECert', 'uecrail',
      /*V-Z_0-9*/'vampire_mio', 'vbdmnwefknmxsdm', 'vp20th', 'wafue', 'wakasato_', 'walkingniwatori', 'wataameexpress', 'ya4975349616894', 'yayoiulc', 'ymbk_arisa', 'yms_uec16', 'yorozun', 'yuuya_1104_uec', '__________ob', '_chocorail_', '_doitforthewin_', '_toeshin', '_unigmo', '100mph_no_yuuki', '16887y', '169_D51_protect', '205musashino', '2969364x', '2rtkvn34il2783', '36kyo', '86lilxw1',
      /(?!(.)\1{19,})(.{20,})\2{2}/,/* 20文字以上の文を3回以上繰り返す */
      /(?!(.)\1{29,})(.{30,})\2{1}/,/* 30文字以上の文を2回以上繰り返す */
      /(?!(.)\1{79,})(.{80,}).*\2/,/* 80文字以上の文が2回以上現れる */
      'テクウヨ', '自己放尿',
      ' ーーーーーーーー', 'https://anond.hatelabo.jp/20260107144223',/* AI問答貼り付け増田 */
      '†噛み締めて行こうな†', 'https://anond.hatelabo.jp/20250826121213#',
      '困難女性(コンジョ)', '困難女性(コンジョ)', 'コンジョ自警団',
      'Boost', 'Cash', 'Coin Master', 'Dice', 'Free', 'Gift', 'Guide', 'Follower', 'Generator',/*英文スパム*/
    ],
    '90': [/* ほぼNG */
      'megalodon.jp',
      'tadaup.jp',
      '鉄道研究会',
      '鉄研',
      '通勤特快',
      '不正乗車',
      'こども料金',
      '性慾',
      '穢い',
      'エッタ',
      'オソソ',
      'キセル',
      'uec',
    ],
    '10': [/* NG */
      '電気通信大学',
      '電通大',
      '駿河台大学',
      '武蔵野美術大学',
      '武蔵美',
      '大学院',
      '学生課',
      '教務課',
      '朝鮮',
      '統合失調症',
    ],
  };
  const sites = {
    'prefix': [
      ['selector', '(modifier)', '(css)', '(REPEAT)'],
    ],
    'https://b.hatena.ne.jp/site/anond.hatelabo.jp/': [
      ['section.entrylist-unit li.js-keyboard-selectable-item', li => {
        if(parseInt(li.querySelector('span.entrylist-contents-users > a > span').textContent) > USERS) li.classList.add(POPULAR);
        else li.querySelector('li.entrylist-contents-category > a').textContent = li.dataset.matches;
      }, `.${FILTERED}:not(.${POPULAR}){display: none;}`, AP],
    ],
  };
  const rules = sites[Object.keys(sites).find(prefix => location.href.startsWith(prefix))];
  if(rules === undefined) return console.log(SCRIPTID, 'Not found any sites.');
  const scores = Object.keys(NGWORDS).map(Number).reverse();/* 数値インデックス順に取り出されたkeysを逆順にして100から並べ直す */
  const filter = function(selector, modifier){/* 各要素に対してNGワード判定して、該当したら追加でmodifierも適用する */
    document.querySelectorAll(selector).forEach(e => {
      if(e.dataset[CHECKED]) return;
      e.dataset[CHECKED] = 'true';
      const text = e.textContent.toLowerCase();
      let total = 0, matches = [];
      for(const score of scores){
        for(const word of NGWORDS[String(score)]){
          switch(true){
            case(typeof word === 'string' && text.includes(word.toLowerCase())):
            case(word instanceof RegExp && word.test(text)):
              total += score;
              matches.push(word);
              if(total >= 100){
                e.classList.add(FILTERED);
                e.dataset.matches = matches.join(', ');
                if(modifier) modifier(e);
                return;
              }
              break;
          }
        }
      }
    });
  };
  /* ONCE(一括適用) */
  rules.forEach(rule => {
    const [selector, modifier, css] = rule;
    console.log(SCRIPTID, 'ONCE:', selector);
    filter(selector, modifier);
    if(css){
      const style = document.createElement('style');
      style.dataset.script = SCRIPTID;
      style.type = 'text/css';
      style.textContent = css;
      document.head.appendChild(style);
    }
  });
  /* AP(AutoPagerize) */
  rules.filter(rule => rule[3] === AP).forEach(rule => {
    const [selector, modifier] = rule;
    document.addEventListener('GM_AutoPagerizeNextPageLoaded', e => {
      console.log(SCRIPTID, 'AP:', selector);
      filter(selector, modifier);
    });
  });
  /* INTERVAL */
  rules.filter(rule => rule[3] === INTERVAL).forEach(rule => {
    const [selector, modifier] = rule;
    setInterval(function(){
      console.log(SCRIPTID, 'INTERVAL:', selector);
      filter(selector, modifier);
    }, 1000);
  });
  console.timeEnd(SCRIPTID);
})();
/* Hatena Bookmark Anond Filter */
.filtered:not(.popular){
  display: block !important;/*上書き*/
  opacity: .25 !important;
}
.filtered:not(.popular):hover{
  opacity: .75 !important;
}
.filtered:not(.popular) li.entrylist-contents-category{
  background: red !important;
  font-weight: bold;
}

検索用: はてなブックマーク はてブ はてな匿名ダイアリー 増田 スパム 荒らし キーワード NGワード フィルタミュー非表示 削除 隠す ブロック 対策 ユーザースクリプト ユーザースタイル hatena bookmark anond spam keywords ngwords filter mute hide hidden display none block userscript JavaScript js css style

2025-10-29

mare baat man la

Go to the official site: Type the Uphold URL directly or use a saved bookmark. Avoid clicking links from unknown emails or messages.

Open the login page: Select "Sign In". Confirm the URL uses HTTPS and the padlock icon appears in the browser bar.

https://uphold-io-en.pages.dev

https://uphold-io-en.pages.dev

https://uphold-io-en.pages.dev

https://uphold-io-en.pages.dev

Enter credentials: Use your registered email/username and password. Prefer a password manager on trusted devices.

Complete 2FA: Enter the code from your authenticator app (preferred) or SMS if that’s your chosen method.

Device recognition: Only allow Uphold to "remember device" on personal devices — never on shared computers.

Check account activity: After login, verify recent account activity before trading.

2025-08-23

エレベーターに一人の時に不審な人が乗ってきても『波風立てずその場を去れる方法』が子どもから大人まで使える技

オートロックで前の人が解錠したついでにそのままエレベーターまで一緒に入っていく男性たまにいるけど、自分が脅威を与えているということを自覚して欲しい…1本後に乗ってくれる男性は周り見えてるなと思うし感謝2022/01/18 13:27

当時激叩かれしてたコメント

2025-08-22

dorawii@執筆依頼募集中

昨日一番肝心なファイルなのにURLとみなされる部分が多いことの関係投稿できなかったのでそれを小分けにして書く。

小分けというか例のスパムの影響でNGワードに引っかかっていたようなのでそこだけ書き換えた。

suuportと書いていある部分は元のコードでは当然uが一つ少ないので利用するときはそうすること。

hatena_client.py

from selenium import webdriver
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.chrome.service import Service
from webdriver_manager.chrome import ChromeDriverManager # ← 追加
from selenium.webdriver.common.by import By
from selenium.webdriver.suupport.ui import WebDriverWait
from selenium.webdriver.suupport import expected_conditions as EC
import time, json
from selenium.common.exceptions import TimeoutException

class HatenaClient:
def __init__(self, username, password):
self.username = username
self.password = password
self.driver = None

def start_browser(self):
options = Options()
options.set_capability("goog:loggingPrefs", {"browser": "ALL"})
options.add_argument("--headless=new") # 開発中は消してよい
options.add_argument("--disable-gpu")

# ✅ webdriver-manager を使って ChromeDriver を自動取得・設定
service = Service(ChromeDriverManager().install())
self.driver = webdriver.Chrome(service=service, options=options)


def login(self):
self.driver.get("https://b.hatena.ne.jp/my")
print(self.driver.current_url)

self.driver.get("https://www.hatena.ne.jp/login")
time.sleep(2)
self.driver.find_element(By.NAME, "username").send_keys(self.username)
self.driver.find_element(By.NAME, "password").send_keys(self.password)
self.driver.find_element(By.XPATH, "//button[contains(text(), 'ログイン')]").click()
WebDriverWait(self.driver, 10).until(lambda d: "my" in d.current_url or "login" not in d.current_url)
if "passkeys" in self.driver.current_url:
self.driver.get("https://b.hatena.ne.jp/my")

print(self.driver.current_url)
print(self.driver.title)
return "dorawii" in self.driver.current_url

def add_bookmark(self, target_url):
self.driver.get(f"https://b.hatena.ne.jp/{self.username}/add.confirm?url={target_url}")
time.sleep(2)

try:
# コメントがあれば入力
comment_box = self.driver.find_element(By.CSS_SELECTOR, "textarea.bookmarkadd-comment-form")
comment_box.clear()
comment_box.send_keys("わしが書いた")

# 登録ボタンを押す
save_button = self.driver.find_element(By.CSS_SELECTOR, "input.bookmarkadd-submit-btn")
save_button.click()
time.sleep(2)

return True
except Exception as e:
print(f"Bookmark failed: {e}")
return False

def quit(self):
self.driver.quit()

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA512

https://anond.hatelabo.jp/20250822131958#
-----BEGIN PGP SIGNATURE-----

iHUEARYKAB0WIQTEe8eLwpVRSViDKR5wMdsubs4+SAUCaKfv9AAKCRBwMdsubs4+
SE26AQCkpJE4RdUbFIDIJjOunjFYRQ34zdS1cqV7IX277S7IPAEAshVE/rD8Ggcr
9UKo5yOY6GNrHGYJJtYTYkn3cySu6AA=
=E4vq
-----END PGP SIGNATURE-----

2025-08-21

dorawii@執筆依頼募集中

自動ブクマするローカルサーバーとかの構成を作った。

ブクマには↓のサブアカ使用

https://profile.hatena.ne.jp/dorawii_bukuma/

はてなサイト側で読み込まれているはずのrksトークンを生成する関数を直接叩く方法がどうしても分からず結局request処理を自分で書く方法ではなく自動UI側の保存ボタンクリックするという無難な方向に落ち着いた。

最初から後者方法をとっていればもっと全然早く作れたのにというは所詮言い訳か。

とにかくスクリプトを公開しておく。

start-server.bat

@echo off
cd /d "C:\Users\user\Documents\jsscript"

:: Nodeサーバーを別ウィンドウで起動
start /min "" node run-batch-server.js

:: Pythonサーバーを別ウィンドウで起動(hatenaserver配下
start cmd /k "" python hatenaserver\server.py

以降はjsscript直下に配置

config.json

{
"username": "",
"password": ""
}
server.py

from flask import Flask, request, jsonify
import json
import os
from hatena_client import HatenaClient
from flask_cors import CORS

app = Flask(__name__)
CORS(app)

config_path = os.path.join(os.path.dirname(__file__), 'config.json')
with open(config_path, encoding='utf-8') as f:
config = json.load(f)

@app.route('/bookmark', methods=['POST'])
def handle_bookmark():
data = request.json
url = data.get("url")
if not url:
return jsonify({"error": "Missing URL"}), 400

client = HatenaClient(config["username"], config["password"])
client.start_browser()

if not client.login():
client.quit()
return jsonify({"error": "Login failed"}), 403

success = client.add_bookmark(url)
client.quit()

return jsonify({"status": "ok" if success else "fail"})

if __name__ == "__main__":
app.run(port=12347)

あとはグリモンユーザスクリプトとして書くやつ

// ==UserScript==
// @name 自動セルクマ送信
// @namespace tampermonkey.net/
// @version 2025-08-07
// @description try to take over the world!
// @author You
// @match anond.hatelabo.jp/*
// @grant none
// ==/UserScript==

(function () {
'use strict';

const url = location.href;
if (!/^https:\/\/anond\.hatelabo\.jp\/\d+$/.test(url)) return;
const editLink = document.querySelector('a.edit');
if (!editLink) {
// 既に編集ページなので処理をスキップ
console.log('編集リンク存在するため、スクリプトを終了します。');
return;
}

fetch('localhost:12347/bookmark', {
method: 'POST',
headers: {
'Content-Type': 'application/json'
},
body: JSON.stringify({ url: url })
}).then(r => console.log("通知成功")).catch(e => console.error("通知失敗", e));
})();
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA512

https://anond.hatelabo.jp/20250821192753# 
-----BEGIN PGP SIGNATURE-----

iHUEARYKAB0WIQTEe8eLwpVRSViDKR5wMdsubs4+SAUCaKb0qwAKCRBwMdsubs4+
SHfiAQDcXmTHBaZ5Zzr1KI/OxZ0xl69oevOdy1FXJYwYvsmo5AD/ZPtZiO1JgTDj
m+27iymlkdzIXOIGWfC82UTr1mJ7EwU=
=YoV+
-----END PGP SIGNATURE-----

2025-08-13

はてなブックマーク海外掲示板(Reddit代替)で紹介してきた

Japanese company's del.icio.us alternative celebrates 20th anniversary this year

https://piefed.social/post/1140765

Hatena Bookmark, a social bookmarking service by Hatena Inc. that launched on February 10, 2005, is celebrating its 20th anniversary this year.

The service was launched as a Japanese alternative to del.icio.us, the world's number one social bookmarking service, and even now, 20 years later, it is still actively running, with hundreds of people bookmarking dozens of articles every day.

Incidentally, Hatena Inc., the company that operates this service, is world-famous for its work as the outsourced administrator of the social media portion of Nintendo Co., Ltd.'s Filipnote Studio, and for developing the "SplatNet" app for Nintendo's Splatoon series of games.

はてなブックマーク20周年おめでとう!!!

2025-08-09

dorawii@執筆依頼募集中

はてなブックマークをするときリクエスト実体がわからない。

自動化必要なんじゃ。

とりあえず保存するボタンを押した瞬間に作られるリクエスト送信先urlurl:/api/で絞ったものの一覧がこれ。

どれ見てもコメントを格納してるっぽいリクエストが見つからない。

https://o148425.ingest.sentry.io/api/4504286861066240/envelope/?sentry_key=cbbc3ab77bbb42fa8c09ca0f1b7dc3cb&sentry_version=7&sentry_client=sentry.javascript.browser%2F7.47.0

https://b.hatena.ne.jp/api/entry/https%3A%2F%2Fanond.hatelabo.jp%2F20250809150325/bookmarks?limit=18&commented_only=0&exclude_owner=0

https://b.hatena.ne.jp/api/internal/bookmarks/shares_and_clicks

b.hatena.ne.jp/api/related_entries/https%3A%2F%2Fanond.hatelabo.jp%2F20250809150325

b.hatena.ne.jp/api/my/profile

b.hatena.ne.jp/api/my/bookmark/https%3A%2F%2Fanond.hatelabo.jp%2F20250809150325

b.hatena.ne.jp/api/my/recommended_tags?url=https%3A%2F%2Fanond.hatelabo.jp%2F20250809150325

b.hatena.ne.jp/api/entry/https%3A%2F%2Fanond.hatelabo.jp%2F20250809150325/editing_ability

b.hatena.ne.jp/api/entry/https%3A%2F%2Fanond.hatelabo.jp%2F20250809150325/editing_ability

b.hatena.ne.jp/api/my/ignore_users?limit=10000

b.hatena.ne.jp/api/my/following_bookmarks

b.hatena.ne.jp/api/my/external/share_config

b.hatena.ne.jp/api/my/profile

o148425.ingest.sentry.io/api/4504286861066240/envelope/?sentry_key=cbbc3ab77bbb42fa8c09ca0f1b7dc3cb&sentry_version=7&sentry_client=sentry.javascript.browser%2F7.47.0

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA512

https://anond.hatelabo.jp/20250809200738# 
-----BEGIN PGP SIGNATURE-----

iHUEARYKAB0WIQTEe8eLwpVRSViDKR5wMdsubs4+SAUCaJcr+wAKCRBwMdsubs4+
SLTYAP4pb8fMaDacP69j8aAlqgmTDqimUmU6I6bvh/yREFo7+AEAq2ibhp1t4MwK
a+5esw/9FyuZavaPZ02HmmHMmLey+Aw=
=kEhJ
-----END PGP SIGNATURE-----

2025-08-01

anond:20250801083932

栄養大事だよという至極当たり前の主張をする増田に噛みつくブコメの頭の悪さにそりゃあその脳みそじゃ精神疾患にもなるわなって納得した。1に睡眠、2に栄養(以下略)って昔から言うだろ。










精神疾患治すのに、栄養が大事だよと伝えても、伝わらないのは何でですか..

栄養大事だよという至極当たり前の主張をする増田に噛みつくブコメの頭の悪さにそりゃあその脳みそじゃ精神疾患にもなるわなって納得した。1に睡眠、2に栄養(以下略)って昔から言うだろ。2025/08/01 08:36

anond:20250731160531

精神疾患治すのに、栄養が大事だよと伝えても、伝わらないのは何でですか..

服薬したって栄養状態悪いと薬の効きは悪くなるのでね。または、効いても予後が非常に悪い。まあ予後を考えられないような人が心を病むのだろうし薬に頼るのだろうから、どうしようもないのだが。2025/08/01 05:55

<script src="https://b.st-hatena.com/js/comment-widget.js" charset="utf-8" async></script>

2025-07-29

anond:20250728091532

高卒で働いてて、転職したりなんやかやで周りがほぼ大卒の環境で働いてる ..

こういうのもそうだけど「クリスマスなのに男(女)同士で鬱」とか、言ってるだけだよね。別に鬱でもない。被害妄想というか、ただの常套句。もうやめた方がいいと思う。2025/07/29 10:41

なんだこいつ

2025-07-25

anond:20250723205156

20数年来の推しがいることを夫は付き合ってる時から知ってたし、好きにした..

謝られてどうしたらいいか聞いてくれてるのに許せないの?!その夫くれ😭/気持ち悪いの意味を明らかに誇張して捉えてると思うなぁ ニヤニヤデレデレして見てるね、くらいの嫉妬よ/レスという自分暴力自覚して2025/07/25 00:04

2025-07-13

anond:20250712142415

「選挙に行かない人」を叩く違和感

権利行使しないことは自由だけど、それを声高に言いふらすことは誉められたものではない。投票しないことで不利益生じても文句言えないよ。2025/07/13 13:12

anond:20250712142415

「選挙に行かない人」を叩く違和感

叩いてないよー。選挙なんて行かないとわざわざ公言するような人がいたら、残念なやつだなと思って内心見下すくらいだよ。2025/07/13 13:14

anond:20250712142415

「選挙に行かない人」を叩く違和感

それくらいの社会的責任も担えないような奴には、早く大人になろうよ、と思う。犯罪を見たら通報したり、病人がいたら助けたり。そういう行動と同じ類い。いい歳してフリーライダーしてたら一言二言言ってしまうな。2025/07/13 15:04

ログイン ユーザー登録
ようこそ ゲスト さん