আমি কীভাবে কোনও ইউআরএল থেকে ইউটিউব ভিডিও আইডি পেতে পারি?


256

আমি v=idজাভাস্ক্রিপ্টের সাথে ইউটিউবের ইউআরএলটি পেতে চাই (কোনও জকিউয়ারি, খাঁটি জাভাস্ক্রিপ্ট নেই)।

ইউটিউব ইউআরএল ফর্ম্যাট উদাহরণ

http://www.youtube.com/watch?v=u8nQa1cJyX8&a=GxdCwVVULXctT2lYDEPllDR0LRTutYfW

http://www.youtube.com/watch?v=u8nQa1cJyX8

বা অন্য কোনও ইউটিউব ফর্ম্যাট যা URL এ একটি ভিডিও আইডি রয়েছে।

এই ফর্ম্যাটগুলি থেকে ফলাফল

u8nQa1cJyX8



এই প্রশ্নটি আমার দ্বিতীয়টির মতো ফর্ম্যাটগুলির জন্য। তবে আমি সেখানে একটি আকর্ষণীয় উত্তর পেয়েছি, এটি ভাগ করে নেওয়ার জন্য ধন্যবাদ।
আদম

এর জন্য নিয়মিত প্রকাশ রয়েছে: http://pregcopy.com/exp/27
এক্সোস

এটির জন্য কোনও ক্রেডিট নিতে পারি না তবে আমি এটি বেশ বিস্তৃত বলে দেখতে পেয়েছি: gist.github.com/FinalAngel/1876898 । এটি এমনকি হিসাবে বিভিন্ন হিসাবে URL গুলি ক্যাচ youtube.com/watch?feature=player_embedded&v=1p3vcRhsYGo এবং youtube.com/v/1p3vcRhsYGo
সাইমন

2
২০১৫ সালের হিসাবে: এই উত্তরটি এড়িয়ে যান । অন্যান্য উত্তরগুলি পুরানো।
লেনার হোয়েট

উত্তর:


109

এটির জন্য আপনাকে নিয়মিত ভাব প্রকাশ করার দরকার নেই।

var video_id = window.location.search.split('v=')[1];
var ampersandPosition = video_id.indexOf('&');
if(ampersandPosition != -1) {
  video_id = video_id.substring(0, ampersandPosition);
}

আপনি এই কোডের উপর ভিত্তি করে যেখানে এটি চান সেখানে কাজ করতে এটি একটি দরকারী ফাংশন। var video_url = ' youtube.com/watch?v=eOrNdBpGMv8&feature=youtube_gdata '; ytid (VIDEO_URL); ফাংশন ytid (video_url) {var video_id = video_url.split ('ভি =') [1]; var ampersandPosition = video_id.indexOf ('&'); if (অ্যাম্পারস্যান্ডপজিশন! = -1) _ ভিডিও_id = ভিডিও_id.substring (0, অ্যাম্পারস্যান্ডপজিশন); } সতর্কতা (ভিডিও_আইডি); ফিরতি ভিডিও_আইডি; }
Gino

9
এম্বেড করা ইউআরএলগুলি হ্যান্ডেল করে না
সের্গ

14
'ভাগ' জেনারেট হওয়া ইউআরএলগুলি হ্যান্ডল করে নাhttps://youtu.be/{{video_id}}
হ্যামঞ্চিজ

2
এই রেজেক্সটি ইউটিউব শেয়ার এবং ইউআরএল দেখার সাথে ভাল কাজ করে। url='https://youtu.be/{{video_id}}'; url.match(/(?:https?:\/{2})?(?:w{3}\.)?youtu(?:be)?\.(?:com|be)(?:\/watch\?v=|\/)([^\s&]+)/);
ডিপ্ট করুন

410

আমি "জেফ্রিপ্রিবি" দ্বারা সরবরাহিত রেগেক্সে বর্ধিতকরণ করেছি কারণ যখন কোনও চ্যানেলটি অনুসন্ধান করা হয় তখন তার এক ধরণের ইউটিউব ইউআরএল ভিডিওর প্রয়োজন হয়।

ঠিক আছে না তবে এই কাজটি আমি সশস্ত্র করেছি।

<script type="text/javascript">
function youtube_parser(url){
    var regExp = /^.*((youtu.be\/)|(v\/)|(\/u\/\w\/)|(embed\/)|(watch\?))\??v?=?([^#&?]*).*/;
    var match = url.match(regExp);
    return (match&&match[7].length==11)? match[7] : false;
}
</script>

এটি সমর্থিত ইউআরএলগুলির প্রকারগুলি

http://www.youtube.com/watch?v=0zM3nApSvMg&feature=feedrec_grec_index
http://www.youtube.com/user/IngridMichaelsonVEVO#p/a/u/1/QdK8U-VIH_o
http://www.youtube.com/v/0zM3nApSvMg?fs=1&amp;hl=en_US&amp;rel=0
http://www.youtube.com/watch?v=0zM3nApSvMg#t=0m10s
http://www.youtube.com/embed/0zM3nApSvMg?rel=0
http://www.youtube.com/watch?v=0zM3nApSvMg
http://youtu.be/0zM3nApSvMg

[Http://web.archive.org/web/20160926134334/] তে পাওয়া যাবে


6
রেজেক্সে সামান্য বাগ রয়েছে \ ?? ভি? =? এটি কেবল ঘড়ির অংশে থাকা উচিত, অন্যথায় আপনি যদি আইডিটি 'ভি' দিয়ে শুরু করেন তবে আপনি একটি 'ভি' ফিল্টার করবেন। সুতরাং এই কৌশলটি করা উচিত / / =?)) ([^ # \ & \?] *)। * /
ওয়েবস্ট্র্যাপ

69
এমনকি ক্লিনার: /.*(?:youtu.be\/|v\/|u\/\w\/|embed\/|watch\?v=)([^#\&\?]*).*/ তার match[1]পরিবর্তে ব্যবহার করুন match[7](যা আমার কাছে কিছুটা স্বেচ্ছাচারী বলে মনে হয়েছিল)। ওয়েবডেভ দ্বারা নির্দেশিত বাগগুলিও ঠিক করে।
ক্রিস নোলেট

3
ইউটিউব আইডি 12 অক্ষর দীর্ঘ না হওয়া পর্যন্ত কতক্ষণ?
লেনার হোয়েট

1
আপনি কি জানতেন যে এটি সত্যই নিখুঁত নয়, যদি আপনি কোনও কিছু রাখেন তবে
জিনো

1
যে কেউ এই রেকেক্সটি প্রসারিত করতে পারে এবং এভাবে অভিযোগ করা লোকেরা কোনও ধারণা রাখে না।
লেচা বিসুলতানভ

241

আমি লাসনভের উত্তরটি কিছুটা সরল করেছিলাম।

এটি ওয়েবডিব বর্ণিত বাগটিও ঠিক করে দেয়।

এটা এখানে:

var regExp = /^.*(youtu\.be\/|v\/|u\/\w\/|embed\/|watch\?v=|\&v=)([^#\&\?]*).*/;
var match = url.match(regExp);
if (match && match[2].length == 11) {
  return match[2];
} else {
  //error
}

এখানে খেলতে একটি রেজিস্টার লিঙ্ক: http://regexr.com/3dnqv


2
কেবল একটি মাথা আপ: আপনি যখন ইউটিউব ইউআরএল নিয়ে কাজ করছেন তা আপনি কেবল তখনই ব্যবহার করা উচিত। ইউটিউব হিসাবে ইউআরএল যাচাই করতে আমি এটি (ভুলভাবে) ব্যবহার করেছি, যার ফলে মিথ্যা ইতিবাচক কারণ রয়েছে, যেমন এটি পাস করে: 'ভি / 2059-9080-5437'
ফিবি

3
আমি এখন একটি ভিন্ন রেইজেক্স ব্যবহার করছি যা ইউটিউব ডোমেনের জন্যও পরীক্ষা করে। আমি নিশ্চিত না যে উত্তরটি এটি একটি বড় পরিবর্তন হিসাবে আপডেট করা উচিত কিনা: /^.*(youtu.be\/ypeyoutube(-nocookie)?.com\/(v//).*u\/\w \ / | এম্বেড \ / |। * ভি =)) ([\
ডাব্লু

4
ইউটিউব কখন ভিডিও আইডির জন্য 12 টি অক্ষরে স্যুইচ করবে?
লেনার হোয়েট

"youtu.be" এর বিন্দুটি এড়ানো উচিত নয়?
অ্যালেক্স

আপনি ঠিক বলেছেন @জিবিট আপনাকে ধন্যবাদ যদিও এটি এড়িয়ে চলা ছাড়া সাধারণত কাজ করে।
মেন্টিশ

85

এর মধ্যে কোনও রান্নাঘর সিঙ্কে 1/1/2015 হিসাবে কাজ করেনি, উল্লেখযোগ্যভাবে প্রোটোকল http / গুলি ছাড়াই এবং ইউটিউব-নোকি ডোমেন সহ ইউআরএল। সুতরাং এখানে একটি পরিবর্তিত সংস্করণ যা এই সমস্ত ইউটিউব সংস্করণে কাজ করে:

// Just the regex. Output is in [1].
/^.*(?:(?:youtu\.be\/|v\/|vi\/|u\/\w\/|embed\/)|(?:(?:watch)?\?v(?:i)?=|\&v(?:i)?=))([^#\&\?]*).*/

// For testing.
var urls = [
    '//www.youtube-nocookie.com/embed/up_lNV-yoK4?rel=0',
    'http://www.youtube.com/user/Scobleizer#p/u/1/1p3vcRhsYGo',
    'http://www.youtube.com/watch?v=cKZDdG9FTKY&feature=channel',
    'http://www.youtube.com/watch?v=yZ-K7nCVnBI&playnext_from=TL&videos=osPknwzXEas&feature=sub',
    'http://www.youtube.com/ytscreeningroom?v=NRHVzbJVx8I',
    'http://www.youtube.com/user/SilkRoadTheatre#p/a/u/2/6dwqZw0j_jY',
    'http://youtu.be/6dwqZw0j_jY',
    'http://www.youtube.com/watch?v=6dwqZw0j_jY&feature=youtu.be',
    'http://youtu.be/afa-5HQHiAs',
    'http://www.youtube.com/user/Scobleizer#p/u/1/1p3vcRhsYGo?rel=0',
    'http://www.youtube.com/watch?v=cKZDdG9FTKY&feature=channel',
    'http://www.youtube.com/watch?v=yZ-K7nCVnBI&playnext_from=TL&videos=osPknwzXEas&feature=sub',
    'http://www.youtube.com/ytscreeningroom?v=NRHVzbJVx8I',
    'http://www.youtube.com/embed/nas1rJpm7wY?rel=0',
    'http://www.youtube.com/watch?v=peFZbP64dsU',
    'http://youtube.com/v/dQw4w9WgXcQ?feature=youtube_gdata_player',
    'http://youtube.com/vi/dQw4w9WgXcQ?feature=youtube_gdata_player',
    'http://youtube.com/?v=dQw4w9WgXcQ&feature=youtube_gdata_player',
    'http://www.youtube.com/watch?v=dQw4w9WgXcQ&feature=youtube_gdata_player',
    'http://youtube.com/?vi=dQw4w9WgXcQ&feature=youtube_gdata_player',
    'http://youtube.com/watch?v=dQw4w9WgXcQ&feature=youtube_gdata_player',
    'http://youtube.com/watch?vi=dQw4w9WgXcQ&feature=youtube_gdata_player',
    'http://youtu.be/dQw4w9WgXcQ?feature=youtube_gdata_player'
];

var i, r, rx = /^.*(?:(?:youtu\.be\/|v\/|vi\/|u\/\w\/|embed\/)|(?:(?:watch)?\?v(?:i)?=|\&v(?:i)?=))([^#\&\?]*).*/;

for (i = 0; i < urls.length; ++i) {
    r = urls[i].match(rx);
    console.log(r[1]);
}

2
উপরের সমাধানগুলির মধ্যে অনেকগুলি বৈধ url এর এই বিস্তৃত ব্যাচকে কভার করে না, তা পরীক্ষার স্ক্রিপ্টটি খুব সহায়ক, +1!
মেলে

2
নোট করুন যে এটি "www.engadget.com/watch?v=dQw4w9WgXcQ" এর মতো কিছু দ্বারা বোকা হবে, এটি নয় যে সমস্যা হওয়ার সম্ভাবনা রয়েছে
বাইনারিফ্যান্ট

এটি কাজ করে, তবে একাধিক ইউটিউব ইউআরএল সহ একটি পাঠ্য উত্থাপিত সমস্যাটির সমাধান করতে পারেনি এই regex101.com/r/qK5qJ5/1 দেখুন । এটি দ্বিতীয় url প্রতিস্থাপন করা উচিত নয়।
আশিস

2
যদি আপনি না চান যে একটি খালি আইডি মেলে : ^.*(?:(?:youtu\.be\/|v\/|vi\/|u\/\w\/|embed\/)|(?:(?:watch)?\?v(?:i)?=|\&v(?:i)?=))([^#\&\?]+).*(ie youtube.com/watch?v= মিলবে না)
zurfyx

"এর মধ্যে রান্নাঘরের ডোবা কোনও কাজ করেনি" বলতে কী বোঝায়?
rmutalik

26
/^.*(youtu.be\/|v\/|e\/|u\/\w+\/|embed\/|v=)([^#\&\?]*).*/

পরীক্ষিত:

  • 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/KdwsulMb8EQ
  • http://youtu.be/dQw4w9WgXcQ
  • http://www.youtube.com/embed/dQw4w9WgXcQ
  • http://www.youtube.com/v/dQw4w9WgXcQ
  • http://www.youtube.com/e/dQw4w9WgXcQ
  • http://www.youtube.com/watch?v=dQw4w9WgXcQ
  • http://www.youtube.com/?v=dQw4w9WgXcQ
  • http://www.youtube.com/watch?feature=player_embedded&v=dQw4w9WgXcQ
  • http://www.youtube.com/?feature=player_embedded&v=dQw4w9WgXcQ
  • http://www.youtube.com/user/IngridMichaelsonVEVO#p/u/11/KdwsulMb8EQ
  • http://www.youtube-nocookie.com/v/6L3ZvIMwZFM?version=3&hl=en_US&rel=0

এই অন্য উত্তর দ্বারা অনুপ্রাণিত ।


9
^। * (?? youtu.be \ / | v \ / | e \ / | u \ / \ w + \ / | এম্বেড \ / | v =) ([) # \ & \?] *)। * দেবে আপনাকে গোষ্ঠী 1 ফলাফলের
মার্ক

19

ইউটিউবের বিভিন্ন ধরণের ইউআরএল শৈলী দেওয়া রয়েছে বলে আমি মনে করি যে রেগেক্স আরও ভাল সমাধান। এখানে আমার রেজেক্স:

^.*(youtu.be\/|v\/|embed\/|watch\?|youtube.com\/user\/[^#]*#([^\/]*?\/)*)\??v?=?([^#\&\?]*).*

গ্রুপ 3 আপনার ইউটিউব আইডি আছে

নমুনা ইউটিউব ইউআরএল (বর্তমানে, "লেগ্যাসি এম্বেড ইউআরএল স্টাইল সহ") - উপরের রেইগেক্স তাদের সকলের জন্য কাজ করে:

http://www.youtube.com/v/0zM3nApSvMg?fs=1&amp;hl=en_US&amp;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

লাসনভের কাছে টুপি


9
আপনার এটির সাথে সত্যই ড্রইং বোর্ডে ফিরে যেতে হবে। হ্যাঁ এটি উপরের ইউআরএলগুলি সঠিকভাবে মেলে। এটাও ভুল যেমন অনেক অন্যান্য অ-YouTube-URL স্ট্রিং মেলে: "domain.com/embed/file.txt", "/tv/"এবং "Has anyone seen my watch?"। দেখুন: আরও অনেক সুনির্দিষ্ট সমাধানের জন্য আমার অনুরূপ প্রশ্নের উত্তর
রজনার্নার

1
আমি আপনার বক্তব্যটি দেখছি: "এটি কি ইউটিউব ইউআরএল?" তবে এটা আমার লক্ষ্য ছিল না আমার ইউটিউব ইউআরএল রয়েছে - আমি কেবল একটি আইডি বের করছি। হ্যাঁ, আপনার উত্তরটি শক্ত (এবং এমন কোনও ব্যবহারের ক্ষেত্রে কভার দেয় যা আমার নয়)।
jeffreypriebe


ধন্যবাদ @ ওয়েবেডিভ - আপনি কি জানেন যে ইউটিউব কখনও আইডিতে অ্যাভ রাখে (বা "ভি" দিয়ে কোনও আইডি শুরু করে)?
jeffreypriebe

1
এখনও আজ (2013-01-25) হিসাবে কাজ করে। এখানে কর্মের এটির উদাহরণ রয়েছে: jsfiddle.net/bcmoney/yBP4J
বিসিএমনি

17

এম্বেড থাকা মিডিয়াগুলির সাথে আরও ক্রমাগত নকশা তৈরি করতে সক্ষম হতে আমি একটি ফাংশন তৈরি করেছি যা ইউটিউব, সাউন্ডক্লাউড বা ভিমেও এম্বেড আইডি'র জন্য ব্যবহারকারীদের ইনপুট পরীক্ষা করে। এই ফাংশনটি দুটি বৈশিষ্ট্য সহ একটি বস্তু সনাক্ত করে এবং প্রদান করে: "টাইপ" এবং "আইডি"। প্রকারটি "ইউটিউব", "ভিমেও" বা "সাউন্ডক্লাউড" হতে পারে এবং "আইডি" বৈশিষ্ট্যটি অনন্য মিডিয়া আইডি।

সাইটে আমি একটি টেক্সারিয়া ডাম্প ব্যবহার করি, যেখানে ব্যবহারকারী যে কোনও ধরণের লিঙ্ক বা এম্বেড কোডে ভিমিও এবং ইউটিউব উভয়ের আইফ্রেম-এম্বেডিং সহ পেস্ট করতে পারে।

function testUrlForMedia(pastedData) {
var success = false;
var media   = {};
if (pastedData.match('http://(www.)?youtube|youtu\.be')) {
    if (pastedData.match('embed')) { youtube_id = pastedData.split(/embed\//)[1].split('"')[0]; }
    else { youtube_id = pastedData.split(/v\/|v=|youtu\.be\//)[1].split(/[?&]/)[0]; }
    media.type  = "youtube";
    media.id    = youtube_id;
    success = true;
}
else if (pastedData.match('http://(player.)?vimeo\.com')) {
    vimeo_id = pastedData.split(/video\/|http:\/\/vimeo\.com\//)[1].split(/[?&]/)[0];
    media.type  = "vimeo";
    media.id    = vimeo_id;
    success = true;
}
else if (pastedData.match('http://player\.soundcloud\.com')) {
    soundcloud_url = unescape(pastedData.split(/value="/)[1].split(/["]/)[0]);
    soundcloud_id = soundcloud_url.split(/tracks\//)[1].split(/[&"]/)[0];
    media.type  = "soundcloud";
    media.id    = soundcloud_id;
    success = true;
}
if (success) { return media; }
else { alert("No valid media id detected"); }
return false;
}

দুর্দান্ত ধারণা, তবে এটি ইউআরএল আকারের বিশাল সংখ্যায় কাজ করে না। কোনও https সাইটে মিলছে না সহ lud
নিক

13

এখানে খেলতে দেরীতে, তবে আমি ম্যান্টিশ এবং জেডাব্লু থেকে দুটি দুর্দান্ত প্রতিক্রিয়া ছুঁড়েছি। প্রথমত, পরিবর্তিত রেজেক্স:

const youtube_regex = /^.*(youtu\.be\/|vi?\/|u\/\w\/|embed\/|\?vi?=|\&vi?=)([^#\&\?]*).*/

এখানে পরীক্ষার কোডটি দেওয়া হয়েছে (আমি মান্টিশের আসল পরীক্ষার কেস জেউয়ের নাস্তিয়ারের সাথে যুক্ত করেছি):

 var urls = [
      'http://www.youtube.com/watch?v=0zM3nApSvMg&feature=feedrec_grec_index',
      'http://www.youtube.com/user/IngridMichaelsonVEVO#p/a/u/1/QdK8U-VIH_o',
      'http://www.youtube.com/v/0zM3nApSvMg?fs=1&amp;hl=en_US&amp;rel=0',
      'http://www.youtube.com/watch?v=0zM3nApSvMg#t=0m10s',
      'http://www.youtube.com/embed/0zM3nApSvMg?rel=0',
      'http://www.youtube.com/watch?v=0zM3nApSvMg',
      'http://youtu.be/0zM3nApSvMg',
      '//www.youtube-nocookie.com/embed/up_lNV-yoK4?rel=0',
      'http://www.youtube.com/user/Scobleizer#p/u/1/1p3vcRhsYGo',
      'http://www.youtube.com/watch?v=cKZDdG9FTKY&feature=channel',
      'http://www.youtube.com/watch?v=yZ-K7nCVnBI&playnext_from=TL&videos=osPknwzXEas&feature=sub',
      'http://www.youtube.com/ytscreeningroom?v=NRHVzbJVx8I',
      'http://www.youtube.com/user/SilkRoadTheatre#p/a/u/2/6dwqZw0j_jY',
      'http://youtu.be/6dwqZw0j_jY',
      'http://www.youtube.com/watch?v=6dwqZw0j_jY&feature=youtu.be',
      'http://youtu.be/afa-5HQHiAs',
      'http://www.youtube.com/user/Scobleizer#p/u/1/1p3vcRhsYGo?rel=0',
      'http://www.youtube.com/watch?v=cKZDdG9FTKY&feature=channel',
      'http://www.youtube.com/watch?v=yZ-K7nCVnBI&playnext_from=TL&videos=osPknwzXEas&feature=sub',
      'http://www.youtube.com/ytscreeningroom?v=NRHVzbJVx8I',
      'http://www.youtube.com/embed/nas1rJpm7wY?rel=0',
      'http://www.youtube.com/watch?v=peFZbP64dsU',
      'http://youtube.com/v/dQw4w9WgXcQ?feature=youtube_gdata_player',
      'http://youtube.com/vi/dQw4w9WgXcQ?feature=youtube_gdata_player',
      'http://youtube.com/?v=dQw4w9WgXcQ&feature=youtube_gdata_player',
      'http://www.youtube.com/watch?v=dQw4w9WgXcQ&feature=youtube_gdata_player',
      'http://youtube.com/?vi=dQw4w9WgXcQ&feature=youtube_gdata_player',
      'http://youtube.com/watch?v=dQw4w9WgXcQ&feature=youtube_gdata_player',
      'http://youtube.com/watch?vi=dQw4w9WgXcQ&feature=youtube_gdata_player',
      'http://youtu.be/dQw4w9WgXcQ?feature=youtube_gdata_player'
  ];

  var failures = 0;
  urls.forEach(url => {
    const parsed = url.match(youtube_regex);
    if (parsed && parsed[2]) {
      console.log(parsed[2]);
    } else {
      failures++;
      console.error(url, parsed);
    }
  });
  if (failures) {
    console.error(failures, 'failed');
  }

এম ইউটিউব পরিচালনা করতে পরীক্ষামূলক সংস্করণমন্তব্যে উল্লিখিত ইউআরএলগুলি :

const youtube_regex = /^.*((m\.)?youtu\.be\/|vi?\/|u\/\w\/|embed\/|\?vi?=|\&vi?=)([^#\&\?]*).*/

পরীক্ষাগুলিতে এটি দুটি জায়গায় parsed[2]পরিবর্তন করা প্রয়োজন parsed[3](যা এটি পরে m.youtubeপরীক্ষাগুলিতে যুক্ত url দিয়ে পাস করে )। আপনি যদি সমস্যা দেখেন তবে আমাকে জানান।


1
আপনার এটি পরীক্ষামূলক মামলাতে যুক্ত করা উচিত কারণ এটি সমস্যাযুক্ত ছিল এবং আপনার রেজিএক্সপ্যাকটি আমার জন্য এটি সমাধান করেছে: youtu.be/ve4f400859I । চিঠিটি
ভিটি

1
আমি http://youtu.be/যদি /এটি যুক্ত করি তবে এটি বৈধ হিসাবে চিহ্নিত হলে এর জন্য আমি মিথ্যা পোস্টিভেট পাই । এটি ব্যবহার করে(value) => /^.*(youtu\.be\/|vi?\/|u\/\w\/|embed\/|\?vi?=|\&vi?=)([^#\&\?]*).*/.test(value)
এনিমা- t3d

মন্তব্যের জন্য ধন্যবাদ। আমি আমার উদাহরণটি এখনও আপডেট করি নি (পরীক্ষার সময় নেই) সুতরাং যে কেউ আমার কোড ব্যবহার করছে দয়া করে নোটটি গ্রহণ করুন :-)
পডপোনসন

ইউআরএল প্রকারের কী = m.youtube.com
মেহুল ঠাকর

@ মেহুলঠাকর এগুলি কি অন্যথায় ইউটিউব ডটকমের ইউআরএল এর মতো?
পডপোনার্স

11

TL; ড।

এই প্রশ্নের সমস্ত URL উদাহরণ এবং তারপরে কিছু মিলছে।

let re = /^(https?:\/\/)?((www\.)?(youtube(-nocookie)?|youtube.googleapis)\.com.*(v\/|v=|vi=|vi\/|e\/|embed\/|user\/.*\/u\/\d+\/)|youtu\.be\/)([_0-9a-z-]+)/i;
let id = "https://www.youtube.com/watch?v=l-gQLqv9f4o".match(re)[7];

আইডি সর্বদা ম্যাচ গ্রুপ 7 এ থাকবে।

এই প্রশ্নের উত্তর থেকে আমি যে সমস্ত ইউআরএল পেয়েছি তার সরাসরি উদাহরণ: https://regexr.com/3u0d4

সম্পূর্ণ ব্যাখ্যা:

যতগুলি উত্তর / মন্তব্য উপস্থিত হয়েছে, ইউটিউব ভিডিও ইউআরএলগুলির জন্য অনেকগুলি ফর্ম্যাট রয়েছে। এমনকি একাধিক টিএলডি যেখানে তারা "হোস্ট করা" হিসাবে প্রদর্শিত হতে পারে।

উপরের রেজেক্সার লিঙ্কটি অনুসরণ করে আমি যে বৈচিত্রগুলির বিরুদ্ধে যাচাই করেছিলাম তার সম্পূর্ণ তালিকাটি আপনি দেখতে পারেন।

রেজিপ্সকে ভেঙে ফেলা যাক।

^স্ট্রিংটির শুরুতে স্ট্রিংটি লক করুন। (https?:\/\/)?Ptionচ্ছিক প্রোটোকলগুলি http: // বা https: // ?পূর্ববর্তী আইটেমটিকে alচ্ছিক করে তোলে sএবং তারপরে পুরো গ্রুপটি (প্রথম বন্ধনীর সংগে সংযুক্ত কিছু) anythingচ্ছিক।

ঠিক আছে, পরের অংশটি এটির মাংস। মূলত আমাদের কাছে দুটি বিকল্প রয়েছে, www.youtube.com/...selid] এর বিভিন্ন সংস্করণ এবং লিঙ্কটি youtu.be/ ছেদযুক্ত] সংস্করণটি সংক্ষিপ্ত করে তুলেছে।

(                                                  // Start a group which will match everything after the protocol and up to just before the video id.
  (www\.)?                                         // Optional www.
  (youtube(-nocookie)?|youtube.googleapis)         // There are three domains where youtube videos can be accessed. This matches them.
  \.com                                            // The .com at the end of the domain. 
  .*                                               // Match anything 
  (v\/|v=|vi=|vi\/|e\/|embed\/|user\/.*\/u\/\d+\/) // These are all the things that can come right before the video id. The | character means OR so the first one in the "list" matches.
  |                                                // There is one more domain where you can get to youtube, it's the link shortening url which is just followed by the video id. This OR separates all the stuff in this group and the link shortening url.
  youtu\.be\/                                      // The link shortening domain
)                                                  // End of group

অবশেষে আমাদের কাছে ভিডিও আইডি নির্বাচন করার জন্য গ্রুপ রয়েছে। কমপক্ষে একটি অক্ষর যা একটি সংখ্যা, অক্ষর, আন্ডারস্কোর বা ড্যাশ।

([_0-9a-z-]+)

আপনি রেজেক্সার লিঙ্কটি শিরোনামে এবং এক্সপ্রেশনটির প্রতিটি অংশটি ইউআরএলের পাঠ্যের সাথে কীভাবে মিলছে তা দেখে আপনি রেগেক্সের প্রতিটি অংশ সম্পর্কে আরও বিস্তারিত জানতে পারবেন।


10

সবচেয়ে ভাল সমাধান (2019-2020) আমি খুঁজে পেয়েছি তা হ'ল:

function YouTubeGetID(url){
   url = url.split(/(vi\/|v=|\/v\/|youtu\.be\/|\/embed\/)/);
   return (url[2] !== undefined) ? url[2].split(/[^0-9a-z_\-]/i)[0] : url[0];
}

আমি এটি এখানে খুঁজে পেয়েছি ।

/*
* Tested URLs:
var url = 'http://youtube.googleapis.com/v/4e_kz79tjb8?version=3';
url = 'https://www.youtube.com/watch?feature=g-vrec&v=Y1xs_xPb46M';
url = 'http://www.youtube.com/watch?feature=player_embedded&v=Ab25nviakcw#';
url = 'http://youtu.be/Ab25nviakcw';
url = 'http://www.youtube.com/watch?v=Ab25nviakcw';
url = '<iframe width="420" height="315" src="http://www.youtube.com/embed/Ab25nviakcw" frameborder="0" allowfullscreen></iframe>';
url = '<object width="420" height="315"><param name="movie" value="http://www.youtube-nocookie.com/v/Ab25nviakcw?version=3&amp;hl=en_US"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube-nocookie.com/v/Ab25nviakcw?version=3&amp;hl=en_US" type="application/x-shockwave-flash" width="420" height="315" allowscriptaccess="always" allowfullscreen="true"></embed></object>';
url = 'http://i1.ytimg.com/vi/Ab25nviakcw/default.jpg';
url = 'https://www.youtube.com/watch?v=BGL22PTIOAM&feature=g-all-xit';
url = 'BGL22PTIOAM';
*/

প্রকারলিপি: কনট ইউটিউবজেটআইডি = (ইউআরএল: স্ট্রিং) => {কনস্ট [এ,, বি] = ইউআরএল .রেপ্লেস (/ (> | <) / জিআই, '') .স্প্লিট (/ (vi \ / | v = | \ /v\/|youtu\.be\/|\/embed\/)/); যদি (খ! == অপরিবর্তিত) b বি। স্প্লিট (/ [^ 0-9a-z _-] / i) [0]; } অন্য {ফিরে a; }};
ভ্লাদ

v = nfDGK_WSFro
দীন জন

6

যেহেতু ইউটিউব ভিডিও আইডিগুলি 11 টি অক্ষর হিসাবে সেট করা আছে তাই substringআমরা ইউআরএলটি বিভক্ত করার ঠিক পরেই পারি v=। তারপরে আমরা শেষে এম্পারস্যান্ডের উপর নির্ভর করি না।

var sampleUrl = "http://www.youtube.com/watch?v=JcjoGn6FLwI&asdasd";

var video_id = sampleUrl.split("v=")[1].substring(0, 11)

সুন্দর এবং সহজ :)


এইটি আক্ষরিক অর্থে গৃহীত উত্তরের একটি সদৃশ
brasofilo

5

আমি সমস্ত পরামর্শ সংক্ষিপ্ত করেছি এবং এখানে এই প্রশ্নের সর্বজনীন এবং সংক্ষিপ্ত উত্তর:

if(url.match('http://(www.)?youtube|youtu\.be')){
    youtube_id=url.split(/v\/|v=|youtu\.be\//)[1].split(/[?&]/)[0];
}

5

জাভা কোড: (সমস্ত ইউআরএল জন্য কাজ করে:

  1. http://www.youtube.com/watch?v=0zM3nApSvMg&feature=feedrec_grec_index
  2. http://www.youtube.com/user/IngridMichaelsonVEVO#p/a/u/1/QdK8U-VIH_o
  3. http://youtube.googleapis.com/v/0zM3nApSvMg?fs=1&hl=en_US&rel=0
  4. http://www.youtube.com/watch?v=0zM3nApSvMg#t=0m10s
  5. http://www.youtube.com/embed/0zM3nApSvMg?rel=0 "
  6. http://www.youtube.com/watch?v=0zM3nApSvMg
  7. http://youtu.be/0zM3nApSvMg
  8. http://www.youtube.com/watch?v=0zM3nApSvMg/
  9. http://www.youtube.com/watch?feature=player_detailpage&v=8UVNT4wvIGY

)

    String url = "http://www.youtube.com/watch?v=0zM3nApSvMg&feature=feedrec_grec_index";

    String regExp = "/.*(?:youtu.be\\/|v\\/|u/\\w/|embed\\/|watch\\?.*&?v=)";
    Pattern compiledPattern = Pattern.compile(regExp);
    Matcher matcher = compiledPattern.matcher(url);
    if(matcher.find()){
        int start = matcher.end();
        System.out.println("ID : " + url.substring(start, start+11));

    }

ডেইলি মোশন এর জন্য:

String url = "http://www.dailymotion.com/video/x4xvnz_the-funny-crash-compilation_fun";

    String regExp = "/video/([^_]+)/?";
    Pattern compiledPattern = Pattern.compile(regExp);
    Matcher matcher = compiledPattern.matcher(url);
    if(matcher.find()){
        String match = matcher.group();
        System.out.println("ID : " + match.substring(match.lastIndexOf("/")+1));

    }

1
জাভাস্ক্রিপ্ট কোডে রেগেক্স প্যাটার্নের কাছ থেকে ডাবল উদ্ধৃতিগুলি সরান এবং এটি কাজ করা উচিত।
থুডু

4

সামান্য কঠোর সংস্করণ:

^https?://(?:www\.)?youtu(?:\.be|be\.com)/(?:\S+/)?(?:[^\s/]*(?:\?|&)vi?=)?([^#?&]+)

পরীক্ষিত:

http://www.youtube.com/user/dreamtheater#p/u/1/oTJRivZTMLs
https://youtu.be/oTJRivZTMLs?list=PLToa5JuFMsXTNkrLJbRlB--76IAOjRM9b
http://www.youtube.com/watch?v=oTJRivZTMLs&feature=youtu.be
https://youtu.be/oTJRivZTMLs
http://youtu.be/oTJRivZTMLs&feature=channel
http://www.youtube.com/ytscreeningroom?v=oTJRivZTMLs
http://www.youtube.com/embed/oTJRivZTMLs?rel=0
http://youtube.com/v/oTJRivZTMLs&feature=channel
http://youtube.com/v/oTJRivZTMLs&feature=channel
http://youtube.com/vi/oTJRivZTMLs&feature=channel
http://youtube.com/?v=oTJRivZTMLs&feature=channel
http://youtube.com/?feature=channel&v=oTJRivZTMLs
http://youtube.com/?vi=oTJRivZTMLs&feature=channel
http://youtube.com/watch?v=oTJRivZTMLs&feature=channel
http://youtube.com/watch?vi=oTJRivZTMLs&feature=channel

4

ইউআরএল থেকে ইউটিউব ভিডিও আইডি পেতে আপনি নিম্নলিখিত কোডটি ব্যবহার করতে পারেন:

url = "https://www.youtube.com/watch?v=qeMFqkcPYcg"
VID_REGEX = /(?:youtube(?:-nocookie)?\.com\/(?:[^\/\n\s]+\/\S+\/|(?:v|e(?:mbed)?)\/|\S*?[?&]v=)|youtu\.be\/)([a-zA-Z0-9_-]{11})/
alert(url.match(VID_REGEX)[1]);

আমার অন্যান্য সমস্ত রেইজেক্স উদাহরণগুলির সাথে সমস্যা ছিল তবে এটি একটি কার্যকরভাবে ডেস্কটপগুলিতে ব্যবহারকারীর 3 টি শেয়ার বিকল্পগুলিতে কাজ করে। ঠিকানা বার থেকে একটি url, ভাগ বোতাম থেকে একটি url এবং ইনলাইন শেয়ার বোতাম থেকে একটি url। ধন্যবাদ !!!
মার্টেন

2

পোস্ট করা একটি মন্ত্রে সামান্য পরিবর্তিত সংস্করণ:

var regExp = /^.*(youtu.be\/|v\/|u\/\w\/|embed\/|watch\?v=|\&v=)([^#\&\?]{11,11}).*/;
var match = url.match(regExp);
if (match) if (match.length >= 2) return match[2];
// error

এটি ধরে নিয়েছে কোডটি সর্বদা 11 টি অক্ষর। আমি এটি অ্যাকশনস্ক্রিপ্টে ব্যবহার করছি, জাভাস্ক্রিপ্টে {11,11 supported সমর্থিত কিনা তা নিশ্চিত নই। & ভি = .... (কেবলমাত্র ক্ষেত্রে) এর জন্য সমর্থন যোগ করা হয়েছে


এই একমাত্র সেই ইউআরএলটির সাথে আমি কাজ করছিলাম যা আমি পরীক্ষা করছিলাম: youtube.com/watch?feature=player_e
ডমিনিক

নিখুঁত। ধন্যবাদ @ জোশা 69 লিঙ্কের সংমিশ্রণটি আমি পরীক্ষা করি সবই আমার জন্য কাজ করা।
গোখন

2

এর জন্য অবশ্যই রেজেক্স দরকার:

রুবি আইআরবিতে অনুলিপি করুন:

var url = "http://www.youtube.com/watch?v=NLqASIXrVbY"
var VID_REGEX = /(?:youtube(?:-nocookie)?\.com\/(?:[^\/\n\s]+\/\S+\/|(?:v|e(?:mbed)?)\/|\S*?[?&]v=)|youtu\.be\/)([a-zA-Z0-9_-]{11})/
url.match(VID_REGEX)[1]

সমস্ত পরীক্ষার ক্ষেত্রে দেখুন: https://gist.github.com/blairanderson/b264a15a8faaac9c6318


2

আরো একটা:

var id = url.match(/(^|=|\/)([0-9A-Za-z_-]{11})(\/|&|$|\?|#)/)[2]

এটি এই থ্রেডে প্রদর্শিত যে কোনও ইউআরএল নিয়ে কাজ করে।

ইউটিউব 11 বেস 64 টি অক্ষরের সাথে অন্য কোনও প্যারামিটার যুক্ত করলে এটি কাজ করবে না। ততক্ষণে এটি সহজ উপায়।


2

আমি একটি ইউটিউব ইউআরএল থেকে ভিডিও আইডি বের করার জন্য একটি ছোট ফাংশন করেছি যা নীচে দেখা যাবে।

var videoId = function(url) {
   var match = url.match(/v=([0-9a-z_-]{1,20})/i);
   return (match ? match['1'] : false);
};

console.log(videoId('https://www.youtube.com/watch?v=dQw4w9WgXcQ'));
console.log(videoId('https://www.youtube.com/watch?t=17s&v=dQw4w9WgXcQ'));
console.log(videoId('https://www.youtube.com/watch?v=dQw4w9WgXcQ&t=17s'));

ইউআরএলটিতে একাধিক পরামিতি থাকলেও এই ফাংশনটি ভিডিও আইডিটি বের করে ফেলবে।


2

এটি যেকোন ধরণের ইউটিউব লিঙ্ক থেকে ভিডিও আইডি পেতে পারে

var url= 'http://youtu.be/0zM3nApSvMg';
var urlsplit= url.split(/^.*(youtu.be\/|v\/|embed\/|watch\?|youtube.com\/user\/[^#]*#([^\/]*?\/)*)\??v?=?([^#\&\?]*).*/);
console.log(urlsplit[3]);

1

আমি সুর্যের উত্তর পছন্দ করেছি .. কেবলমাত্র এমন একটি ক্ষেত্রে যেখানে এটি কার্যকর হবে না ...

String regExp = "/.*(?:youtu.be\\/|v\\/|u/\\w/|embed\\/|watch\\?.*&?v=)";

জন্য কাজ করে না

youtu.be/i4fjHzCXg6c  and  www.youtu.be/i4fjHzCXg6c

নতুন সংস্করণ:

String regExp = "/?.*(?:youtu.be\\/|v\\/|u/\\w/|embed\\/|watch\\?.*&?v=)";

সবার জন্য কাজ করে।


1

আর একবার চেষ্টা কর -

function getYouTubeIdFromURL($url) 
{
  $pattern = '/(?:youtube.com/(?:[^/]+/.+/|(?:v|e(?:mbed)?)/|.*[?&]v=)|youtu.be/)([^"&?/ ]{11})/i';
  preg_match($pattern, $url, $matches);

  return isset($matches[1]) ? $matches[1] : false;
}

1

লাসনভ উত্তরের ক্রিস নোলেট ক্লিনার উদাহরণটি খুব ভাল, তবে আমি সম্প্রতি জানতে পেরেছি যে আপনি যদি ইউটিউব ইউআরএল পরে আপনার ইউটিউব লিঙ্কটি খুঁজে পেতে এবং কিছু এলোমেলো পাঠ্য রাখার চেষ্টা করেন, প্রয়োজনের তুলনায় রিজেপএক্সের সাথে আরও কিছু মিলছে। উন্নত ক্রিস নোলেট উত্তর:

/^.*(?:youtu.be\/|v\/|u\/\w\/|embed\/|watch\?v=)([^#\&\?]{11,11}).*/


1
function parser(url){
    var regExp = /^.*((youtu.be\/)|(v\/)|(\/u\/\w\/)|(embed\/)|(watch\/)|(\?v=|\&v=))([^#\&\?]*).*/;
    var match = url.match(regExp);
    if (match && match[8].length==11){
            alert('OK');
    }else{
            alert('BAD');
    }
}

পরীক্ষার জন্য:

https://www.youtube.com/embed/vDoO_bNw7fc - attention first symbol «v» in «vDoO_bNw7fc»

http://www.youtube.com/user/dreamtheater#p/u/1/oTJRivZTMLs
https://youtu.be/oTJRivZTMLs?list=PLToa5JuFMsXTNkrLJbRlB--76IAOjRM9b
http://www.youtube.com/watch?v=oTJRivZTMLs&feature=youtu.be
https://youtu.be/oTJRivZTMLs
http://youtu.be/oTJRivZTMLs&feature=channel
http://www.youtube.com/ytscreeningroom?v=oTJRivZTMLs
http://www.youtube.com/embed/oTJRivZTMLs?rel=0
http://youtube.com/v/oTJRivZTMLs&feature=channel
http://youtube.com/v/oTJRivZTMLs&feature=channel
http://youtube.com/vi/oTJRivZTMLs&feature=channel
http://youtube.com/?v=oTJRivZTMLs&feature=channel
http://youtube.com/?feature=channel&v=oTJRivZTMLs
http://youtube.com/?vi=oTJRivZTMLs&feature=channel
http://youtube.com/watch?v=oTJRivZTMLs&feature=channel
http://youtube.com/watch?vi=oTJRivZTMLs&feature=channel

0

ভাল, সাধারণ পার্সিং দিয়ে এটি করার উপায়টি হ'ল: প্রথমটির পরে সবকিছু শুরু করুন = প্রথমটিতে সাইন ইন করুন & সাইন করুন সাইন ইন করুন।

আমি মনে করি তাদের এখানে একটি অবিশ্বাস্য উত্তর ছিল:

জাভাস্ক্রিপ্ট ব্যবহার করে কোনও ভিমেও আইডি পার্স করছেন?


2
আর ইউআরএল না থাকলে কী হবে &?
আদম

তারপরে আপনাকে অবশ্যই সমপরিমাণ সীমানা নির্ধারণ করতে হবে। উদাহরণস্বরূপ, আপনি যে প্রথম ইউআরএলটি আমাদের দিয়েছেন তা হল & চিহ্নটি। দ্বিতীয় ইউআরএল, স্ট্রিংয়ের শেষে ডিলিমিটার।
কর্ফলফিলিপ

0

আমরা জানি এই অক্ষরগুলি "? V =" কখনও কখনও তার চেয়ে বেশি উপস্থিত হতে পারে না তবে 'ভি' আইডি নিজেই উপস্থিত হতে পারে সুতরাং আমরা "? V =" কে সীমানা হিসাবে ব্যবহার করি। এটি এখানে কাজ দেখুন

//Get YouTube video Id From Its Url

     $('button').bind('click',function(){
var 
url='http://www.youtube.com/watch?v=u8nQa1cJyX8',
videoId = url.split('?v='),//Split data to two
YouTubeVideoId=videoId[1];
alert(YouTubeVideoId);return false;

});

<button>Click ToGet VideoId</button>

0

আপনার কাছে সম্পূর্ণ ইউআরএল থাকলে সরল রেজেেক্স, এটিকে সহজ রাখুন।

results = url.match("v=([a-zA-Z0-9]+)&?")
videoId = results[1] // watch you need.

0
var video_url = document.getElementById('youtubediv').value;
        if(video_url!=""){
        ytid(video_url);
        document.getElementById("youtube").setAttribute("src","http://www.youtube.com/embed/"+ytid(video_url));
        }
        function ytid(video_url){
            var video_id = video_url.split('v=')[1];
            var ampersandPosition = video_id.indexOf('&');
            if(ampersandPosition != -1) {
                video_id = video_id.substring(0, ampersandPosition);
            }
            return video_id;
        }

আমি আশা করি এটি সাহায্য করতে পারে


0
function youtube_parser(url){
    var match = url.match(/^.*((youtu.be\/)|(v\/)|(\/u\/\w\/)|(embed\/)|(watch\?))\??v?=?([^#\&\?]*).*/);
    return (match&&match[7].length==11)?match[7]:false;
}

সবচেয়ে সংক্ষিপ্ত এবং দক্ষ


ঠিক না, বনাম ব্যর্থ youtube.com/e/dQw4w9WgXcQ তাই দয়া দক্ষ অংশ :) খুঁজে নিতে
alecellis1985

0

যেমন একটি মন্তব্যে ওয়েবস্ট্র্যাপ উল্লেখ করেছে :

ভিডিওটি "ভি" দিয়ে শুরু হয় এবং এটি ইউটিউ.বে থেকে শুরু করলে এটি কাজ করে

Regex একটু বাগ রয়েছে \??v?=?অন্যথায় আপনি একটি ফিল্টার হবে, এই মাত্র ঘড়ি অংশ হওয়া উচিত 'v'যদি আইডি দিয়ে শুরু হয় 'v'। সুতরাং এই কৌশলটি করা উচিত

/^.*((youtu.be\/)|(v\/)|(\/u\/\w\/)|(embed\/)|(watch\??v?=?))([^#\&\?]*).*/

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.