【发布时间】:2016-03-19 05:08:11
【问题描述】:
我有一个我想关注的人(名字和姓氏)的列表,但我不想单独使用 Google 或通过 Twitter 搜索他们。获取 Twitter 句柄的最佳方式是什么?一些 GitHub 存储库或教程也可以。
【问题讨论】:
-
当 Twitter 搜索可以为您提供直接结果时,您为什么不想要呢?使用 Twitter 搜索 API,如果您使用 Java,请使用 twitter4j
标签: twitter
我有一个我想关注的人(名字和姓氏)的列表,但我不想单独使用 Google 或通过 Twitter 搜索他们。获取 Twitter 句柄的最佳方式是什么?一些 GitHub 存储库或教程也可以。
【问题讨论】:
标签: twitter
Twitter 提供“User Search”API 请求。
如果您想搜索名为“Ada Lovelace”的用户,您需要向
发送 OAuth 请求https://api.twitter.com/1.1/users/search.json?q=Ada%20Lovelace
您将获得结果列表。可能有很多人的名字和姓氏相同。
至于如何,这取决于你想使用的编程语言。
如果您只想要一个可点击的链接,请使用https://twitter.com/search?q=Terence%20Eden
【讨论】:
所以首先这个问题是题外话,但我会尝试为你写一个答案。您可以为此使用 twitter api,但如果您只想为您执行此操作,这可能有点过头了。
我为你做了一个 API
我使用 KimonoLabs 为您制作了一个 API。您可以使用它,只需制作一个循环遍历您的列表并每次请求此 api 的脚本,然后返回结果列表。这是 API 端点: https://www.kimonolabs.com/api/duwxgie4?apikey=D6UKiTtKU93kv0YJj8i3kFBAbsIjdSTC&q=PERSON%20NAME
&q= 是人名的参数。要分隔名字和姓氏,请使用 %20,如下所示:Robert%20Keus
这个 api 的文档在这里: https://www.kimonolabs.com/apis/duwxgie4
如果您需要任何帮助,请告诉我,
卢卡
【讨论】:
最新答案@2016
第一个解决方案:我编写了以下 node.js 脚本。您需要公开发布的 google doc 电子表格的 access_token 和 id。出于测试目的,我在以下代码中提供了示例电子表格的链接及其id。
var Twit = require('twit'),
async = require('async');
var T = new Twit({
consumer_key: 'xxxxxxxx',
consumer_secret: 'xxxxxxxxxxxxxxxxxxxxxxxxxx',
access_token: 'xxxxxxxxxxx',
access_token_secret: 'xxxxxxxxxxxxxxxxxxxxxxxxx',
timeout_ms: 60*1000 // optional HTTP request timeout to apply to all requests.
});
//https://docs.google.com/spreadsheets/d/1n7DxgJTTHZ9w3xwiHokUhXMLkBwpP5c9ZLFmsYFDCic/edit?usp=sharing
var GoogleSpreadsheet = require("google-spreadsheet"),
_ = require('underscore');
var sheetId = req.params.sheet || "1n7DxgJTTHZ9w3xwiHokUhXMLkBwpP5c9ZLFmsYFDCic",
sheet = new GoogleSpreadsheet(sheetId);
async.waterfall([
function (cb) {
sheet.getRows(1, {}, function (err, rows) {
if (err) { res.send(err); return;};
var names = [];
_.each(rows, function (row) {
names.push(row.first + " " + row.last);
});
cb(null, names);
});
},
function (names, callback1) {
async.map(names, function(name, cb){
T.get('users/search', { q: name, page: 1 }, function (err, data, response) {
if(data.length)
cb(null, {screen_name: data[0].screen_name, name:data[0].name});
else
cb(null, {screen_name: "no_data_retrieved", name: name});
});
}, function (err, results) {
callback1(null, results);
});
},
function (users, callback) {
console.log(users); //**YOU GET ALL DESIRED DATA HERE**
}
], function (err, result) {
//handle in memory data
});
第二种解决方案:克隆节点作弊twitter-screen-names,运行npm install并射击node server,现在在浏览器中将所有推特usernames设为json。
乐于助人!
【讨论】: