TwitterユーザーID取得

    @@ -10,11 +10,13 @@ ( () => { 'use strict'; -let screen_name = prompt( 'screen_name', '' ); +let screen_name = window.getSelection().toString() || prompt( 'Input screen name of user', '' ); if ( screen_name === null ) return; +screen_name = screen_name.trim().replace( /^@/, '' ); +if ( ! screen_name ) return; -fetch( 'https://api.twitter.com/1.1/users/show.json?screen_name=twitter', { +fetch( 'https://api.twitter.com/1.1/users/show.json?screen_name=' + encodeURIComponent( screen_name ), { method: 'GET', headers: { 'authorization' : 'Bearer AAAAAAAAAAAAAAAAAAAAANRILgAAAAAAnNwIzUejRCOuH5E6I8xnZz4puTs%3D1Zv7ttfk8LF81IUq16cHjhLTvJu4FA33AGWWjCpTnA', @@ -46,7 +48,7 @@ console.error( 'copy result to the clipboard failre:', error ); } ) .finally( () => { - prompt( screen_name, user_id ); + prompt( 'User ID of ' + screen_name, user_id ); } ); } ) .catch( error => {
  • /*
     * @title TwitterユーザーID取得
     * @description Twitterユーザーのscreen_nameからユーザーIDを取得する
     * @include https://twitter.com/*
     * @license MIT License
     * @require 
     * @javascript_url
     */
    
    ( () => {
    'use strict';
    
    let screen_name =  window.getSelection().toString() || prompt( 'Input screen name of user', '' );
    
    if ( screen_name === null ) return;
    screen_name = screen_name.trim().replace( /^@/, '' );
    if ( ! screen_name ) return;
    
    fetch( 'https://api.twitter.com/1.1/users/show.json?screen_name=' + encodeURIComponent( screen_name ), {
        method: 'GET',
        headers: {
            'authorization' : 'Bearer AAAAAAAAAAAAAAAAAAAAANRILgAAAAAAnNwIzUejRCOuH5E6I8xnZz4puTs%3D1Zv7ttfk8LF81IUq16cHjhLTvJu4FA33AGWWjCpTnA',
            'x-csrf-token' : document.cookie.match( /ct0=(.*?)(?:;|$)/ )[ 1 ],
            'x-twitter-active-user' : 'yes',
            'x-twitter-auth-type' : 'OAuth2Session',
            'x-twitter-client-language' : 'en',
        },
        mode: 'cors',
        credentials : 'include',
    } )
    .then( response => {
        if ( ! response.ok ) {
            throw new Error( 'Network response was not ok' );
        }
        return response.json()
    } )
    .then( user_info => {
        let user_id = user_info.id_str;
        
        if ( ! user_id ) {
            throw new Error( 'Response does not include the ID of the user' );
        }
        
        navigator.clipboard.writeText( user_id )
        .then( () => {
        } )
        .catch( error => {
            console.error( 'copy result to the clipboard failre:', error );
        } )
        .finally( () => {
            prompt( 'User ID of ' + screen_name, user_id );
        } );
    } )
    .catch( error => {
        console.error( screen_name, error );
        alert( '"' + screen_name + '" is not found: ' + error );
    } );
    } )();
    
  • Permalink
    このページへの個別リンクです。
    RAW
    書かれたコードへの直接のリンクです。
    Packed
    文字列が圧縮された書かれたコードへのリンクです。
    Userscript
    Greasemonkey 等で利用する場合の .user.js へのリンクです。
    Loader
    @require やソースコードが長い場合に多段ロードする Loader コミのコードへのリンクです。
    Metadata
    コード中にコメントで @xxx と書かれたメタデータの JSON です。