Bluesky DIDを使ったプロフィールURLで開き直す

    @@ -1,23 +1,23 @@ /* * @title Bluesky DIDを使ったプロフィールURLで開き直す - * @description アカウント名を変更しても変わらないDIDを使用したプロフィールページに移動する。ログアウトしたユーザーに見せない設定のアカウントは無理。プロフィールページで実行 + * @description アカウント名を変更しても変わらないDIDを使用したプロフィールページに移動する。プロフィールページで実行 * @include https://bsky.app/profile/* * @license MIT License */ (function(){ -if(/^https:\/\/bsky\.app\/profile\//.test(location.href) && !/\/lists\//.test(location.href) && !/\/feed\//.test(location.href)){ +if(/^https:\/\/bsky\.app\/profile\//.test(location.href) && !/\/lists\//.test(location.href) && !/\/feed\//.test(location.href) && !/\/post\//.test(location.href) && !/did:plc:/.test(location.href)){ + +const handle=location.href.match(/^https:\/\/bsky\.app\/profile\/(.+)$/); -//<noscript>の部分からDIDを取得したいが、ページを移動するだけだと更新されないので取得を行う let a=new XMLHttpRequest(); a.onreadystatechange = function(){ if (a.readyState == 4 && a.status == 200){ -const did=new DOMParser().parseFromString(a.responseXML.getElementsByTagName('noscript')[0].innerHTML,'text/html').getElementById('bsky_did').innerHTML; -location.href='https://bsky.app/profile/'+did; +location.href='https://bsky.app/profile/'+a.response.did; }} -a.open('GET',location.href); -a.responseType='document'; +a.open('GET','https://bsky.social/xrpc/com.atproto.identity.resolveHandle?handle='+handle[1]); +a.responseType='json'; a.send(); };
  • /*
     * @title Bluesky DIDを使ったプロフィールURLで開き直す
     * @description アカウント名を変更しても変わらないDIDを使用したプロフィールページに移動する。プロフィールページで実行
     * @include https://bsky.app/profile/*
     * @license MIT License
     */
    
    (function(){
    if(/^https:\/\/bsky\.app\/profile\//.test(location.href) && !/\/lists\//.test(location.href) && !/\/feed\//.test(location.href) && !/\/post\//.test(location.href) && !/did:plc:/.test(location.href)){
    
    const handle=location.href.match(/^https:\/\/bsky\.app\/profile\/(.+)$/);
    
    let a=new XMLHttpRequest();
    a.onreadystatechange = function(){
    if (a.readyState == 4 && a.status == 200){
    location.href='https://bsky.app/profile/'+a.response.did; 
    }}
    
    a.open('GET','https://bsky.social/xrpc/com.atproto.identity.resolveHandle?handle='+handle[1]);
    a.responseType='json';
    a.send();
    
    };
    })();
    
  • Permalink
    このページへの個別リンクです。
    RAW
    書かれたコードへの直接のリンクです。
    Packed
    文字列が圧縮された書かれたコードへのリンクです。
    Userscript
    Greasemonkey 等で利用する場合の .user.js へのリンクです。
    Loader
    @require やソースコードが長い場合に多段ロードする Loader コミのコードへのリンクです。
    Metadata
    コード中にコメントで @xxx と書かれたメタデータの JSON です。