改造视频ID提取脚本以兼容多种YouTube URL格式
适配多格式的YouTube视频ID提取脚本
原脚本仅能处理带v=参数的标准watch页面URL,无法应对youtu.be短链、embed、share等其他格式。可以利用浏览器原生的URL API实现更健壮的解析,以下是改造后的代码:
var url = $(this).attr("href"); var videoId = null; const parsedUrl = new URL(url); // 处理 youtu.be 短链接(如 https://youtu.be/poh7M2dLn5U?si=xxx) if (parsedUrl.hostname.includes('youtu.be')) { videoId = parsedUrl.pathname.slice(1); // 去掉开头的斜杠,获取路径中的ID } // 处理 watch/share 页面(如 https://www.youtube.com/watch?v=KJwYBJMSbPI 或 /share?v=xxx) else if (parsedUrl.searchParams.has('v')) { videoId = parsedUrl.searchParams.get('v'); } // 处理 embed 嵌入页面(如 https://www.youtube.com/embed/KJwYBJMSbPI) else if (parsedUrl.pathname.startsWith('/embed/') || parsedUrl.pathname.startsWith('/shorts/')) { videoId = parsedUrl.pathname.split('/')[2]; } // 去除ID后可能附带的额外参数(保险处理) if (videoId) { const ampIndex = videoId.indexOf('&'); if (ampIndex !== -1) { videoId = videoId.slice(0, ampIndex); } } var getvideoid = videoId;
支持的URL格式示例:
- 标准watch链接:
https://www.youtube.com/watch?v=KJwYBJMSbPI - youtu.be短链:
https://youtu.be/poh7M2dLn5U?si=QbJekXikzuxYxAaJ - embed嵌入链接:
https://www.youtube.com/embed/KJwYBJMSbPI - shorts短视频链接:
https://www.youtube.com/shorts/KJwYBJMSbPI
代码优势:
- 依赖原生
URLAPI解析,避免手动字符串分割的脆弱性 - 覆盖绝大多数常见的YouTube视频URL格式
- 自动过滤ID后附带的冗余查询参数
内容的提问来源于stack exchange,提问作者Ali
相关产品推荐
相关产品推荐

