Sử dụng một GET
yêu cầu đơn giản cùng với Yahoo Query Language (aka YQL) để truy cập nút retweeted
có thể đạt được như thế này:
jsFiddle DEMO: YQL Rest Query for Twitter Retweeted Status via JSON
Các callback json
kết quả được hiển thị dưới đây:
cbfunc({
"query": {
"count": 1,
"created": "2012-12-31T09:51:58Z",
"lang": "en-US",
"results": {
"json": {
"retweeted": "false"
}
}
}
});
Và bạn có thể cũng có trả lại là xml
quá:
<?xml version="1.0" encoding="UTF-8"?>
<query xmlns:yahoo="http://www.yahooapis.com/v1/base.rng"
yahoo:count="1" yahoo:created="2012-12-31T09:54:49Z" yahoo:lang="en-US">
<results>
<json>
<retweeted>false</retweeted>
</json>
</results>
</query>
Đây là cách YQL Statement sẽ trông như thế để trả lại retweeted nút với ether đúng hoặc sai như là kết quả:
SELECT retweeted FROM json WHERE url="https://api.twitter.com/1/statuses/user_timeline.json?include_entities=true&include_rts=true&screen_name=philiprucker&count=1"
Và đó GET
yêu cầu đơn giản là chỉ một yêu cầu ajax();
với chức năng thành công như this:
// The YQL Statement used below is shown next, starting with the word SELECT:
//
// SELECT retweeted FROM json WHERE url="https://api.twitter.com/1/statuses/user_timeline.json?include_entities=true&include_rts=true&screen_name=philiprucker&count=1"
//
// View the above YQL Statement using Yahoo Console at:
// http://developer.yahoo.com/yql/console/?q=SELECT%20retweeted%20FROM%20json%20WHERE%20url%3D%22https%3A%2F%2Fapi.twitter.com%2F1%2Fstatuses%2Fuser_timeline.json%3Finclude_entities%3Dtrue%26include_rts%3Dtrue%26screen_name%3Dphiliprucker%26count%3D1%22&env=store%3A%2F%2Fdatatables.org%2Falltableswithkeys
//
// The variable 'q' below is the Yahoo Rest Query. That is provided after creating the above Yahoo Statement.
// It's provided at the bottom of that web page.
var q = 'http://query.yahooapis.com/v1/public/yql?q=SELECT%20retweeted%20FROM%20json%20WHERE%20url%3D%22https%3A%2F%2Fapi.twitter.com%2F1%2Fstatuses%2Fuser_timeline.json%3Finclude_entities%3Dtrue%26include_rts%3Dtrue%26screen_name%3Dphiliprucker%26count%3D1%22&format=json';
// Use simple jQuery .ajax along with the above YQL Rest Statement.
// The benefit of YQL rest statement is we can select the desired node, in this case "retweeted"
$.ajax({
url: q,
dataType: "json",
success: function(data) {
// Enable to show the jQuery data Object received in the browsers console.
//console.log(data);
// If we have data, continue.
if (data) {
// Display retweeted value of 'true' or 'false' via browser alert.
alert('The retweeted status is: ' + data.query.results.json.retweeted);
}
}
});
EDIT 2: Lấy toàn cầu Giá trị tweet lại.
Reference: OP's Tweet with Viewable Retweet Count
jsFiddle DEMO: YQL Rest Query for Twitter Global Retweeted Status via HTML
Thời gian này, tổng retweeted toàn cầu đếm đó tweet sẽ dữ liệu loại bỏ trực tiếp từ các trang web với các tweet Twitter. Phương pháp này không yêu cầu phải truy cập vào tweet gốc, vì mọi lần đăng lại sẽ hiển thị số lượng toàn cầu này.
Để xác minh rằng jsFiddle đang hiển thị số lượng được tweet lại thực tế, hãy tham khảo trang tweet của OP bằng liên kết được cung cấp ở trên.
Quá trình này cũng tương tự như những gì được mô tả ở trên, ngoại trừ thời gian này chúng tôi .ajax()
dataType
là html
và Tuyên bố YQL là như sau:
SELECT * FROM html WHERE url="https://twitter.com/PostBaron/status/286544211556319233" AND xpath="//a[@class='request-retweeted-popup']"
Chú ý ở trên YQL Statement rằng XPATH
cũng được sử dụng để truy cập các dữ liệu cụ thể cần thiết. Điều này ngăn không cho tải xuống toàn bộ trang web HTML và chỉ dữ liệu cụ thể đó cho số lượt truy cập Số lượng Tweet toàn cầu. Điều này là có thể vì giá trị đó nằm trong neo trang web với tên lớp duy nhấtrequest-retweeted-popup
. Để khám phá tên lớp đó nhanh chóng, tôi đã sử dụng công cụ Kiểm tra phần tử mà trình duyệt có khi tôi di chuột qua giá trị đó trên trang web. Khi tên lớp đã được biết, tôi đã điều chỉnh phản hồi để trả về giá trị trong các thẻ <strong>
là số mà chúng tôi muốn biết.
Đương nhiên, giá trị là 0
có nghĩa là tweet chưa bao giờ được tweet lại nhưng quan trọng hơn nghĩa là đây chính là tweet gốc.
Kết quả cuối cùng là không có API Twitter là bắt buộc kể từ khi bạn xóa dữ liệu trên trang web công khai thực tế để nhận được số lượng Tweet toàn cầu toàn cầu Tweet.
$.ajax({
url: q,
dataType: "html",
success: function(data) {
// If we have data, continue.
if ($(data).find('.request-retweeted-popup')) {
// Store the value of total retweets in this variable.
var totalRetweets = $(data).find('strong').text();
// Show browser alert of the totalRetweets value. Change alert() to console.log() for console log browser responses.
alert('The following Tweet has been retweeted: ' + totalRetweets + ' times');
}
}
});
Cũng lưu ý câu hỏi làm rõ tốt của @ Taylor bên dưới về những gì bạn đang thực sự cố gắng lưu trữ ... Tôi chỉ đang chỉ ra lỗi đánh máy của bạn. :) – jcmeloni
Wow tôi cảm thấy ngu ngốc. Chỉ cần wow. Cảm ơn. Những điều nhỏ bạn bỏ lỡ sau khi xem mã tương tự trong một vài giờ. – mitchellwright
@CapnCrunch nó xảy ra với tất cả mọi người .. – jcmeloni