Advertisement
h1j1k1

automatic blocker (twitter)

Feb 6th, 2023 (edited)
1,024
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
TypeScript 3.03 KB | Source Code | 0 0
  1. // 0. be a twitter developer
  2. // 1. put information below
  3. // 2. run the 'getOAuthURL'
  4. // 3. put the link into your browser
  5. // 4. run collect_words every 15 minutes and auto_block every 2 hours.
  6.  
  7.  
  8.  
  9. // Put the appropriate spreadsheet ID here.
  10. log_sheet = '';
  11. // twitter API here
  12. twitter = ""
  13. twitter_secret = "";
  14.  
  15. // the word you want to block here
  16. block_word= "";
  17.  
  18.  
  19. function getSheet(id, name){
  20.   return sheet = SpreadsheetApp.openById(id).getSheetByName(name);
  21. }
  22. function collect_words(){
  23.   word = block_word;
  24.   json = twitterSearch(word+  " ",100);
  25.   try{SpreadsheetApp.openById(log_sheet).insertSheet().setName(word);}catch{}finally{}
  26.   sheet = getSheet(log_sheet, word);
  27.  
  28.   json.statuses.forEach(function (stat){
  29.    
  30.     sheet.appendRow(
  31.     [getDate_Format(), stat.user.name, stat.user.id_str, stat.text]
  32.   );
  33.   let range = sheet.getDataRange();
  34.  
  35.   range.removeDuplicates([2, 3, 4]);
  36.   });
  37. }
  38.  
  39. function auto_block(){
  40.   var sheet = getSheet(log_sheet, word);
  41.   let values = [];
  42.   var i =0;
  43.   sheet.getRange('C1:C15').getValues().forEach(function (stat){
  44.     values[i] = stat[0];i++;
  45.   });
  46.   values.forEach(function (id){
  47.     post_block(id);
  48.   });
  49.   sheet.deleteRows(1,15);
  50. }
  51.  
  52. function post_block(id){
  53.   const tw = 'https://api.twitter.com/1.1/blocks/create.json';
  54.   var service = getTwitterService();
  55.  
  56.   var response = JSON.parse(service.fetch(tw, {
  57.   method: 'post',
  58.     muteHttpExceptions : true,
  59.     payload: {
  60.       user_id: id
  61.     }
  62.   }));
  63. }
  64.  
  65. function twitterSearch(keyword="test", maxCount=1) {
  66.     let encodedKeyword = encodeURIComponent(keyword);
  67.     try {
  68.         var twitterService = getTwitterService();
  69.         if (!twitterService.hasAccess()) {
  70.             var err;
  71.             if((err = twitterService.getLastError()) === undefined) Logger.log(err);
  72.             return null;
  73.         }
  74.         var url = 'https://api.twitter.com/1.1/search/tweets.json?q='
  75.             + encodedKeyword
  76.             + '&result_type=recent&lang=ja&locale=ja&count='
  77.             + maxCount;
  78.         var response = twitterService.fetch(url, { method: "GET",muteHttpExceptions:true });
  79.         var json = JSON.parse(response);
  80.         return json;
  81.     }
  82.     catch (ex) {
  83.         return null;
  84.     }
  85. }
  86.  
  87. function getOAuthURL() {
  88.   Logger.log(getTwitterService().authorize());
  89. }
  90.  
  91. function getTwitterService() {
  92.     return  OAuth1.createService('Twitter')
  93.       .setAccessTokenUrl('https://api.twitter.com/oauth/access_token')
  94.       .setRequestTokenUrl('https://api.twitter.com/oauth/request_token')
  95.       .setAuthorizationUrl('https://api.twitter.com/oauth/authorize')
  96.       .setConsumerKey(twitter)
  97.       .setConsumerSecret(twitter_secret)
  98.       .setCallbackFunction('authCallback')
  99.       .setPropertyStore(PropertiesService.getUserProperties());
  100.  
  101. }
  102.  
  103. function authCallback(request) {
  104.   var authorized = getTwitterService().handleCallback(request);
  105.   if (authorized) {
  106.    
  107.     return HtmlService.createHtmlOutput('success!!');
  108.   } else {
  109.     return HtmlService.createHtmlOutput('failed');
  110.   }    
  111. }
Tags: GAS
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement