Tôi đang viết mã để xác thực các URL YouTube. Được đảm bảo rằng ID video, chẳng hạn như oHg5SJYRHA0
, luôn dài chính xác 11 ký tự hoặc đôi khi có thể ngắn hơn hoặc dài hơn? Có tài liệu chính thức nào về việc này không?
Tôi đang viết mã để xác thực các URL YouTube. Được đảm bảo rằng ID video, chẳng hạn như oHg5SJYRHA0
, luôn dài chính xác 11 ký tự hoặc đôi khi có thể ngắn hơn hoặc dài hơn? Có tài liệu chính thức nào về việc này không?
Câu trả lời:
Họ có thể sẽ dính vào 11 ký tự trong một thời gian dài. Mỗi ký tự có 64 giá trị có thể:
2 * 26 chữ cái (chữ thường và chữ hoa) + 10 cho các chữ số, + 2 cho các ký tự "_" và "-"
2 * 26 + 10 + 2 = 64
Sau đó, tổng cộng 11 ký tự:
64 ^ 11 = 73786976294838210000 (hoặc nhiều hơn hoặc ít hơn "73,7e18")
Tất nhiên không phải tất cả sự kết hợp sẽ được sử dụng, tùy thuộc vào thuật toán của họ, nhưng có lẽ họ sẽ không thay đổi nó bất cứ lúc nào sớm. Tuy nhiên, những từ từ nhà phát triển YouTube nói rằng họ không đảm bảo:
Tôi không thấy bất cứ nơi nào trong tài liệu mà chúng tôi chính thức cam kết độ dài tiêu chuẩn là 11 ký tự cho id video YouTube. Đó là một trong những điều mà chúng tôi có triển khai hiện tại và nó có thể duy trì theo cách đó vô thời hạn. Nhưng chúng tôi không đưa ra bất kỳ cam kết chính thức nào về điều đó, vì vậy hãy tự chịu rủi ro.
Cách tiếp cận tốt hơn, mặc dù một cách liên quan nhiều hơn, sẽ là lấy từng id video và đưa ra yêu cầu tới API YouTube để xem nó có hợp lệ không. Ví dụ: tạo HTTP GET để
http://gdata.youtube.com/feed/api/ideo/VIDEO_ID
và xem nếu bạn nhận được phản hồi HTTP 200. Tất nhiên, nếu bạn thực hiện phương pháp đó, các video đã bị xóa khỏi YouTube sẽ trở lại không hợp lệ (có thể hoặc không thể là những gì bạn muốn) và các video được tải lên YouTube gần đây cũng có thể trở lại là không hợp lệ.
Chúc mừng, -Jeff Posnick, Nhóm API YouTube
Một cái gì đó đáng để chỉ ra, một vài URL trỏ đến cùng một video. Ví dụ, trong các video được đăng dưới đây, tất cả chúng đều là "Giải thưởng Nobel 2015!" bởi Scishow:
Ngoài ra, nếu bạn thay đổi ký tự cuối cùng thành C
hoặc D
nó cũng sẽ hoạt động.