- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我找不到匹配这些 Youtube 链接的正则表达式,而且我真的不知道我在看什么
https://www.youtube.com/watch?v=2BS3oePljr8
http://www.youtube.com/watch?v=iwGFalTRHDA
http://www.youtube.com/watch?v=iwGFalTRHDA&feature=related
http://youtu.be/iwGFalTRHDA
http://youtu.be/n17B_uFF4cA
http://www.youtube.com/embed/watch?feature=player_embedded&v=r5nB9u4jjy4
http://www.youtube.com/watch?v=t-ZRX8984sc
http://youtu.be/t-ZRX8984sc
我不确定是否可以在此处放置一个正则表达式来涵盖其中的大部分内容,但我需要帮助。
错误(尝试加载/播放视频时):
[XCDYouTubeKit] No signature function in player script
[XCDYouTubeKit] Video operation finished with error: This video is unavailable.
Domain: XCDYouTubeVideoErrorDomain
Code: 150
NSLocalizedDescription = "This video is unavailable.";
NSURL = "https://www.youtube.com/get_video_info?el=embedded&hl=en&ps=default&video_id=2BS3oePljr8";
代码:
NSArray<NSString *>*patterns = @[@"\\.sig\\|\\|([a-zA-Z0-9$]+)\\(",
@"[\"']signature[\"']\\s*,\\s*([^\\(]+)",
@"yt\\.akamaized\\.net/\\)\\s*\\|\\|\\s*.*?\\s*c\\s*&&\\s*d\\.set\\([^,]+\\s*,\\s*(?:encodeURIComponent\\s*\\()?([a-zA-Z0-9$]+)\\(",
@"\\bc\\s*&&\\s*d\\.set\\([^,]+\\s*,\\s*(?:encodeURIComponent\\s*\\()?\\s*([a-zA-Z0-9$]+)\\(",
@"\\bc\\s*&&\\s*d\\.set\\([^,]+\\s*,\\s*\\([^)]*\\)\\s*\\(\\s*([a-zA-Z0-9$]+)\\("
];
这里还有这个://在此处查看正则表达式模式列表 https://github.com/rg3/youtube-dl/blob/master/youtube_dl/extractor/youtube.py#L1179
但这对我来说真的很像象形文字,是的。
播放 Youtube 视频的附加代码:
XCDYouTubeClient.default().getVideoWithIdentifier("2BS3oePljr8") { (video: XCDYouTubeVideo?, error: Error?) in
if let streamURL = video?.streamURLs[XCDYouTubeVideoQuality.medium360.rawValue] {
player = AVPlayer(url: streamURL)
playerLayer = AVPlayerLayer(player: player)
let playerLayerView = UIView()
playerLayerView.frame.size = CGSize(width: self.page3View.frame.width / 1.25, height: self.page3View.frame.height / 2)
playerLayerView.center = CGPoint(self.page3View.frame.width * 0.5, self.page3View.frame.height * 0.5)
playerLayer.frame = CGRect(0.0, 0.0, playerLayerView.frame.width, playerLayerView.frame.height)
playerLayer.videoGravity = AVLayerVideoGravity.resizeAspectFill
playerLayer.zPosition = 2
playerLayer.backgroundColor = UIColor.black.cgColor
playerLayerView.layer.addSublayer(playerLayer)
self.page3View.insertSubview(playerLayerView, at: 2)
player.seek(to: kCMTimeZero)
player.play()
最佳答案
这个表达式
https?:\/\/(?:www\.)?(youtu(\.?be)?(\.com)?)\/(?:embed\/)?(?:watch\?(?:feature=player_embedded&)?v=)?([A-Za-z0-9_-]{11})
似乎传递了我们想要的输入,我的猜测是您可能想要提取那些使用此捕获组捕获的 ID,
([A-Za-z0-9_-]{11})
并且您可能想检查是否所有需要的字符都已包含在此字符类中:
[A-Za-z0-9_-]
如果不是简单地添加这些。
表达式在 this demo 的右上面板中有额外解释, 如果您想进一步探索或修改它,请在 this link ,如果愿意,您可以观察它如何与一些样本输入相匹配。
或者,如果我们希望捕获 URL 的各种组件,我们会将更多的捕获组集成到我们的表达式中,而不是非捕获组:
^https?:\/\/(www\.)?((music\.)?youtu(\.?be)?(\.com)?)\/(embed\/)?(watch\?(feature=player_embedded&(?:amp;)*?)?v=)?(get_video_info\?el=embedded&hl=en&ps=default&video_id=)?([A-Za-z0-9_-]{11})(.*)$
我们想要的 ID 在这个冗长的表达式中的捕获组 $10
中,虽然设计起来并不那么复杂。
我们将只列出所有可能的 URL,然后我们首先捕获 11 位数字 ID,然后我们将在 ID 左侧为 URL 的不同组件添加可选组 ?
,这就是
似乎为了转义元字符,我们会加倍反斜杠,\\
而不是 \
,例如我们的模式可能类似于:
^https?:\\/\\/(www\\.)?((music\\.)?youtu(\\.?be)?(\\.com)?)\\/(embed\\/)?(watch\\?(feature=player_embedded&(?:amp;)*?)?v=)?(get_video_info\\?el=embedded&hl=en&ps=default&video_id=)?([A-Za-z0-9_-]{11})(.*)$
可以进一步查看this demo查看您在评论中提供的示例中的转义将如何变化。
jex.im可视化正则表达式:
关于javascript - XCDYouTubeKit 播放器脚本中没有签名功能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56913136/
我找不到匹配这些 Youtube 链接的正则表达式,而且我真的不知道我在看什么 https://www.youtube.com/watch?v=2BS3oePljr8 http://www.youtu
请耐心等待,因为我已经尝试使用 swift 在 iO 中编程一周了,目前我遇到了一个错误。我需要了解我正在做的事情出了什么问题。 Storyboard和 .swift 文件的屏幕截图 我的错误截图 最
我正在使用 XCDYouTubeKit,作为 MPMoviePlayerViewController 的子类编写。 我在播放播放列表中的下一个视频时遇到问题。当我点击前进按钮时,播放器状态停止,我不知
我需要一个 youtube 解析器来播放 iOS SDK 中的 youtube 视频。我已经从 this link. 下载了代码。但是我无法获得 libXCDYoutubeKit.a 和 XCDYou
我是一名优秀的程序员,十分优秀!