2010-01-16 11 views
11

Tôi tự hỏi có cách nào truy vấn YouTube cho nhiều video ngẫu nhiên (id video được biết) trong một truy vấn không? Tôi đang lưu trữ id video trong db địa phương và cần hiển thị nhiều chi tiết (danh sách có ngón tay cái, xếp hạng, tên tác giả, v.v.) trong trang web.API dữ liệu Youtube: Truy xuất nhiều mục nhập video theo ID trong một yêu cầu duy nhất

Tôi nhìn vào dữ liệu API Youtube và thấy rằng tôi có thể một đơn dữ liệu đối tượng như thế này:

Uri videoEntryUrl = new Uri("http://gdata.youtube.com/feeds/api/videos/video_id"); 
Video video = request.Retrieve<Video>(videoEntryUrl); 

Lặp đi lặp lại này trong vòng lặp có vẻ là một ý tưởng tồi, vì hạn ngạch.

Ngoài ra còn có "xử lý theo lô" có sẵn - http://code.google.com/apis/youtube/2.0/developers_guide_dotnet.html#Batch_processing. Có vẻ như tôi có thể phát hành tối đa 50 yêu cầu ngẫu nhiên, nhưng dự kiến ​​một số nguồn cấp dữ liệu là Tôi không có tham số, khi thực hiện hàng loạt. Có một tình trạng quá tải với một số Uri, nhưng nó không phải là tài liệu tốt - google-gdata.googlecode.com/svn/docs/folder59/M_Google_GData_Client_FeedRequest_1_Batch__1_2.htm

Có ai có bất cứ ý tưởng về cách để lấy nhiều mục Video bởi id's? Bất kỳ trợ giúp sẽ được đánh giá cao.

+0

Bạn đã bao giờ tìm thấy câu trả lời cho điều này chưa? Tôi cần phải làm một cái gì đó tương tự nhưng để thêm video vào danh sách phát. Mọi thông tin bạn có sẽ được đánh giá cao :) – mdm

Trả lời

1

Bạn có thể gửi nhiều yêu cầu đến api dữ liệu youtube được bao bọc trong một yêu cầu duy nhất. YouTube cho phép bạn gửi tối đa 50 yêu cầu trong một yêu cầu. Loại yêu cầu này được gọi là yêu cầu xử lý hàng loạt. Tôi đã phát triển một đoạn mã đặc biệt cho vấn đề này. Tôi phải làm điều tương tự cho một trang web mà tôi đang làm việc. Dù sao bạn cũng có thể xem cách thực hiện điều đó từ đây (mã mẫu cũng có mặt để tải xuống): http://www.ovaistariq.net/2010/06/youtube-batch-processing-requests-made-less-costly/

8

Tôi cũng gặp vấn đề tương tự, tôi cần danh sách các đối tượng video liên quan đến danh sách id video tùy ý không phù hợp với bất kỳ nguồn cấp dữ liệu nào.

Tùy chọn xử lý hàng loạt rất hấp dẫn, nhưng việc triển khai có vẻ khá nặng nề đối với chức năng đơn giản.

Vào cuối ngày, thực hiện tìm kiếm video cơ bản cho id được phân cách bằng dấu "|" đạt kết quả yêu cầu:

http://gdata.youtube.com/feeds/api/videos?q=h5jKcDH9s64|elzqvWXG1Y

Hope this helps

+1

+1 cho giải pháp đơn giản. có vẻ như có tối đa 10 truy vấn. – johnhunter

+2

Rất tiếc, giải pháp này không hoạt động khi ID bắt đầu bằng dấu gạch ngang/dấu gạch ngang "-". Tôi gặp sự cố này và Google đã xác nhận vấn đề này với tôi: http://groups.google.com/group/youtube-api-gdata/browse_thread/thread/bc513fd965bcb5ec?pli=1 – Damien

+1

Để khắc phục sự cố với ID bắt đầu bằng dấu gạch nối, tôi phát hiện ra rằng bạn chỉ có thể loại bỏ nó! Phần còn lại của ID sẽ khớp. (Đây là một hack, không được khuyến khích, và có thể dễ bị lỗi ...) –

4

câu trả lời RobD của hoạt động tốt. Bạn có thể thêm một cái gì đó như thế này đến cuối URL để chỉ lấy dữ liệu bạn thực sự cần, tiết kiệm một số băng thông:

& lĩnh vực = entry (id, title)

ví dụ:

http://gdata.youtube.com/feeds/api/videos?q=h5jKcDH9s64|elzqvWXG1Y&fields=entry(id,title)

+0

Có thể hạn chế dữ liệu để chỉ có được lượt xem và xếp hạng không? Tôi đã thử sử dụng mục nhập (gd $ rating), nhưng điều đó không hiệu quả. –

3

Dưới đây là một lời giải thích rõ ràng hơn cho người dân PHP không

http://oktryitnow.com/?p=83

+0

Rất đơn giản. Cảm ơn dưa chua. "Đăng XML này: ... Tới URL này: ..." Duh. – harvest316

6

Trong Youtube Data API phiên bản 3.0 Bạn có thể làm điều đó một cách đơn giản như thế này.

https://www.googleapis.com/youtube/v3/videos?key=API_KEY&part=snippet&id=video_id1,video_id2 

Chỉ thêm id video của bạn được phân tách bằng dấu phẩy. Nó sẽ tìm nạp dữ liệu của bạn cho tất cả các video trong JSON

Tôi không biết giới hạn này là gì, sẽ cập nhật câu trả lời khi tôi tìm thấy nó.

+0

Xin cảm ơn sự giúp đỡ tuyệt vời của bạn. Rõ ràng tôi phát hiện ra rằng giới hạn của video có thể được truy vấn là 50. –