URL が (正規表現文字列を使用して YouTube または Vimeo から) 許可されているかどうかだけでなく、ビデオが実際にサイトに存在し、404 ではないかどうかを確認するバリデータ メソッドを追加しようとしても苦労しています。
これまでのところ、URL と正しく一致する URL バリデーターがあり、oEmbed を使用してリモート検証をテストしようとしていました。
var vidRegExp = /https?:\/\/(?:[0-9A-Z\-]+\.)?(vimeo\.com\/(clip\:)?(\d+).*|player\.vimeo\.com\/video\/?(\d+).*|(?:youtu\.be\/|youtube\.com\S*[^\w\-\s])([\w\-]{11})(?=[^\w\-]|$)(?![?=&+%\w]*(?:['"][^<>]*>|<\/a>))[?=&+%\w\-]*)/i;
jQuery.validator.addMethod("checkVideoURL", (function(val, elem) {
if (val.length === 0) {
return true;
}
var match = val.match(vidRegExp);
var settings = $('form').validate().settings;
if (match) {
$.extend(true, settings, {
rules: {
item_provider_url: {
remote: {
url: "http://vimeo.com/api/oembed.json",
dataType: "jsonp",
data: {
format: "jsonp",
url: function() {
return $("#item_provider_url").val;
}
}
}
}
},
messages: {
item_provider_url: {
remote: "No video exists at this URL"
}
}
});
} else {
$.validator.messages.checkVideoURL = "The URL you put in is not a valid YouTube or Vimeo URL. Please check your link.";
return false;
}
}), "Invalid URL.");
これを行う正しい方法を探して StackOverflow の投稿に注いでいますが、役立つものは何も見つからないようです。上記で機能していないのは、リモート検証部分です。(例 404/リンク切れ: http://vimeo.com/54634709 )
また、明らかに YouTube と Vimeo では確認する URL が異なるため、一致した URL を確認し、サイトごとに異なるリモート URL を返す方法を知る必要があります。もう 1 つの大きなプラスは、ビデオへの埋め込みが許可されているかどうかを確認するためにチェックを拡張することです。
上記の正規表現文字列は、次のすべての URL で機能します。
http://vimeo.com/50406912
https://vimeo.com/50406912
http://www.vimeo.com/50406912
https://www.vimeo.com/50406912
http://soundcloud.com/forss/flickermood
http://www.youtube.com/v/0zM3nApSvMg?fs=1&hl=en_US&rel=0
http://www.youtube.com/embed/0zM3nApSvMg?rel=0
http://www.youtube.com/watch?v=0zM3nApSvMg&feature=feedrec_grec_index
http://www.youtube.com/watch?v=0zM3nApSvMg
http://youtu.be/0zM3nApSvMg
http://www.youtube.com/watch?v=0zM3nApSvMg#t=0m10s
http://www.youtube.com/user/IngridMichaelsonVEVO#p/a/u/1/QdK8U-VIH_o
https://www.youtube.com/watch?v=0zM3nApSvMg#t=0m10s
https://www.youtube.com/user/IngridMichaelsonVEVO#p/a/u/1/QdK8U-VIH_o
http://vimeo.com/36888803
http://vimeo.com/36888803?title=0
http://player.vimeo.com/video/36888803
http://player.vimeo.com/video/36888803?title=0&byline=0&portrait=0
http://youtu.be/i4fjHzCXg6c
http://youtu.be/i4fjHzCXg6c?t=9s
http://www.youtube.com/watch?v=i4fjHzCXg6c
https://www.youtube.com/watch?v=i4fjHzCXg6c&feature=g-logo&t=28s
どんな助けでも大歓迎です!