TwitterユーザーID取得
by
furyu-tei
2020-10-30 [2020/10/30 01:48:24]
Twitterユーザーのscreen_nameからユーザーIDを取得する
@@ -49,19 +49,21 @@
} )
.finally( () => {
let prompt_required = true;
-
- try {
- let target = window.getSelection().anchorNode.children[ 0 ];
-
- if ( target.tagName == 'INPUT' ) {
- target.value = target.value.substring( 0, target.selectionStart ) + user_id + target.value.substring( target.selectionEnd );
- prompt_required = false;
- }
- }
- catch ( error ) {
- console.error( '@@@', error );
- }
- if ( prompt_required) prompt( 'User ID of ' + screen_name, user_id );
+
+ /*
+ //try {
+ // let target = window.getSelection().anchorNode.children[ 0 ];
+ //
+ // if ( target.tagName == 'INPUT' ) {
+ // // TODO: value を書き換えただけではうまく反映されない
+ // target.value = target.value.substring( 0, target.selectionStart ) + user_id + target.value.substring( target.selectionEnd );
+ // prompt_required = false;
+ // }
+ //}
+ //catch ( error ) {
+ //}
+ */
+ if ( prompt_required ) 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 clipboard failure:', error );
} )
.finally( () => {
let prompt_required = true;
/*
//try {
// let target = window.getSelection().anchorNode.children[ 0 ];
//
// if ( target.tagName == 'INPUT' ) {
// // TODO: value を書き換えただけではうまく反映されない
// target.value = target.value.substring( 0, target.selectionStart ) + user_id + target.value.substring( target.selectionEnd );
// prompt_required = false;
// }
//}
//catch ( error ) {
//}
*/
if ( prompt_required ) 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 です。