2009-03-06 55 views
5

Tôi có một nguồn cấp dữ liệu từ tiểu sử trên Twitter của tôi ở đầu trang của tôi nhưng tôi tự hỏi có cách nào để lọc các @replies của mình và chỉ hiển thị các cập nhật trạng thái của tôi không?Lọc ra @replies trong nguồn cấp dữ liệu Twitter?

Cảm ơn

+3

Vâng, khá dễ dàng trong thực tế. Nhưng Twitter sẽ trở nên tức giận nếu bạn làm vậy. Chúng tôi sẽ cần phải hy sinh bạn với nỗi sợ hãi tuyệt vời của Twitter, tất cả chúng ta đều cảm thấy cơn thịnh nộ khủng khiếp của mình. – Shog9

Trả lời

4

Nếu bạn đang sử dụng mã nguồn cấp dữ liệu Twitter chuẩn cho Blogger và các trang web tương tự, thì Javascript này sẽ làm điều này. Nó nằm giữa nguồn cấp dữ liệu Twitter và gọi lại và dải trả lời ra khỏi phản hồi của máy chủ.

Để có huy hiệu blog, mã web Twitter chuẩn sẽ kết thúc bằng hai thẻ <script>. Đầu tiên cung cấp chức năng hiển thị các tweet của bạn. Twitter truy vấn thứ hai cho tweets hiển thị.

Thêm tập lệnh này vào mã huy hiệu của bạn trước truy vấn twitter. Nó cung cấp một chức năng mới gọi là filterCallback để ngăn @replies từ phản hồi Twitter.

<script type="text/javascript"> 
    function filterCallback(twitter_json) { 
    var result = []; 
    for(var index in twitter_json) { 
     if(twitter_json[index].in_reply_to_user_id == null) { 
     result[result.length] = twitter_json[index]; 
     } 
     if(result.length==5) break; // Edit this to change the maximum tweets shown 
    } 
    twitterCallback2(result); // Pass tweets onto the original callback. Don't change it! 
    } 
    </script> 

Tham số Twitter có tham số chỉ định chức năng gọi khi phản hồi quay lại. Trong trường hợp của blogger, chức năng đó được gọi là 'twitterCallback2' - bạn có thể tìm kiếm nó trong mã web (tìm kiếm callback=twitterCallback2). Để sử dụng bộ lọc mới, bạn cần phải thay thế văn bản twittercallback2 bằng filterCallback. Bộ lọc được mã hóa cứng để sau đó gọi twitterCallback2 khi hoàn tất. Lưu ý rằng vì điều này sẽ làm giảm số lượng tweet được hiển thị nếu một số repsonses từ Twitter là câu trả lời, vì vậy bạn phải tăng thông số đếm trong cuộc gọi để cho phép điều đó. Hàm mới sau đó giới hạn số câu trả lời được hiển thị thành năm - chỉnh sửa mã để thay đổi điều đó.

Dưới đây là bài viết trên blog của tôi về nó: Filter Replies out of Twitter Feed

+0

Tuyệt vời, cảm ơn rất nhiều! – bbeckford

+0

cách nhận hai tweet đầu tiên mà không có @reply từ điều này? – Miuranga

6

Có thể với Yahoo Pipes.

Tomalak đã tạo a quick example for you.

+0

Đây sẽ là một cách dễ dàng để làm điều đó. – OverloadUT

+0

Tôi đã thực hiện một ví dụ nhanh: http://pipes.yahoo.com/tomalak/bbeckford_sample – Tomalak

+0

Tuyệt vời, các đường ống của Yahoo thật ấn tượng! Cảm ơn! – bbeckford

0

Phụ thuộc vào những gì bạn đang sử dụng để hiển thị các mục nhập. Nếu bạn đang sử dụng tiện ích của Twitter thì có thể không. Nếu bạn đang sử dụng một số cách khác để hiển thị các mục, bạn cần phải cung cấp thêm chi tiết về những gì bạn đang làm (ngôn ngữ, mã mẫu, v.v.) và chúng tôi có thể giúp lọc.

0

Có thể bạn sẽ muốn sử dụng cụm từ thông dụng. Nội dung nào đó dọc theo dòng:

[a-zA-Z0-9][a-zA-Z0-9]*: @[a-zA-Z0-9][a-zA-Z0-9]*.* 

Tùy thuộc vào cách bạn định dạng nguồn cấp dữ liệu twitter trên trang của mình. Regex này giả định rằng bạn được định dạng như sau:

username: @username msg txt 

Nếu khớp, không hiển thị. Nếu nó không khớp, sau đó hiển thị nó. :) Nếu bạn có thẻ trong đó cùng với văn bản, hãy điều chỉnh regex một cách thích hợp.

3

Nếu bạn muốn sử dụng widget Twitter mới, chỉ cần thêm đoạn mã này trong các thiết lập features: mã nguồn của widget:

filters: { 
    negatives: /\[email protected]\w{1,20}(\s+|$)/ 
}, 

tôi lấy cái này từ trang web của Dustin Diaz tại số http://www.dustindiaz.com. Dustin Diaz là tác giả của tiện ích Twitter.

1

Thay đổi cuộc gọi SETUSER để

setUser('name&exclude_replies=true'); 

Đây là loại một hack nhưng nó lừa

Các vấn đề liên quan