Piszę kod, aby sprawdzić poprawność adresów URL YouTube. Czy jest gwarantowane, że identyfikator wideo, taki jak oHg5SJYRHA0
, ma zawsze dokładnie 11 znaków, czy może czasami jest krótszy lub dłuższy? Czy jest na to oficjalna dokumentacja?
Piszę kod, aby sprawdzić poprawność adresów URL YouTube. Czy jest gwarantowane, że identyfikator wideo, taki jak oHg5SJYRHA0
, ma zawsze dokładnie 11 znaków, czy może czasami jest krótszy lub dłuższy? Czy jest na to oficjalna dokumentacja?
Odpowiedzi:
Prawdopodobnie będą trzymać się 11 znaków przez długi czas. Każdy znak ma 64 możliwe wartości:
2 * 26 liter (małe i wielkie litery) + 10 dla cyfr, + 2 dla znaków „_” i „-”
2 * 26 + 10 + 2 = 64
Następnie łącznie 11 znaków:
64 ^ 11 = 73786976294838210000 (lub mniej więcej „73,7e18”)
Oczywiście nie wszystkie kombinacje zostaną użyte, w zależności od algorytmu, ale prawdopodobnie nie zamierzają go zmienić w najbliższym czasie. Słowa od programisty YouTube stwierdzają, że nie gwarantują:
Nigdzie nie widzę w dokumentacji, w której oficjalnie ustalamy standardową długość 11 znaków dla identyfikatorów filmów na YouTube. Jest to jedna z tych rzeczy, w których mamy bieżące wdrożenie i może tak pozostać na czas nieokreślony. Ale nie oferujemy żadnych oficjalnych zobowiązań, więc postępuj na własne ryzyko.
Lepszym podejściem, choć bardziej zaangażowanym, byłoby pobranie każdego identyfikatora filmu i przesłanie zapytania do interfejsu API YouTube, aby sprawdzić, czy jest prawidłowe. Na przykład wykonaj HTTP GET to
http://gdata.youtube.com/feeds/api/videos/VIDEO_ID
i sprawdź, czy otrzymasz odpowiedź HTTP 200. Oczywiście, jeśli zastosujesz to podejście, filmy, które zostały usunięte z YouTube, wrócą jako nieważne (co może, ale nie musi być tym, czego chcesz), a filmy, które zostały niedawno przesłane do YouTube, mogą również wrócić jako nieważne.
Pozdrawiam, -Jeff Posnick, zespół YouTube API
Coś, na co warto zwrócić uwagę, kilka adresów URL wskazuje ten sam film. Na przykład w zamieszczonych poniżej filmach wszystkie to „Nagrody Nobla 2015!” autor: Scishow:
Ponadto, jeśli zmienisz ostatni znak na C
lub D
to też będzie działać.