我有以下URL字符串:提取子
事件ID = VSl4WcedBNbjqgXe7bzQCw &时间戳= 1501047125 &状态= OK & ldpj = -23 &笔者= +铝+半岛电视台阿拉伯语+قناة+الجزيرة& ptchn = fiwzLy-8yKzIbsmZTzxDgw & live_chunk_readahead = 3 & VIDEO_ID = fN2sEo7hq-E & allow_ratings = 0 & allow_embed用于= 1个&标记= vThp8hY3AuC-jibt_jf7TEzWnuqUY7oImICFXKxkWbM = & PLID = AAVVMcSvP1Tr6SGM & PARTNERID = 27 =的& sjG7v9N-R2P9uySMx2Af7Q & live_default_broadcast = 1 &水印=,https://s.ytimg.com/yts/img/watermark/youtube_watermark-vflHX6b6E.png,https://s.ytimg.com/yts/img/watermark/youtube_hd_watermark-vflAzLcD6.png&streaminglib_module=1&live_storyboard_spec=https://i.ytimg.com/sb/fN2sEo7hq-E/storyboard_live_60_3x3_b0/M $ M.jpg?RS = AOn4CLBoEYL8Dt3Yf1HhjHlpNUAc4jqmSg#106#60#3#3 & video_verticals = [881,+ 397] & CSN = VSl4WcedBNbjqgXe7bzQCw &静音= 0 & length_seconds = 1800 & hlsdvr = 1个& videostats_playback_base_url = https://s.youtube.com&title=Al+Jazeera+Arabic+Live+Stream+HD-+البث+الحي+لقناة+الجزيرة+الإخبارية+بجودة+عالية&ptk=aljazeera&iurl=https://i.ytimg.com/vi/fN2sEo7hq-E/hqdefault_live.jpg&vm=CAEQARgE&hlsvp=https://manifest.googlevideo.com/api/manifest/hls_variant/gcr/us/signature/26ADA228BD5549EC76852E925945A6EDBD8A78A9.268E76E7A0831E0DB3C36670FCA24805B0F9AD94/requiressl/yes/source/yt_live_broadcast/key/yt6/ip/72.239.175.191/ipbits/0/maudio/1/playlist_type/DVR/itag/0/expire/1501068725/sparams/gcr,go,id,ip,ipbits,itag,maudio,playlist_type,requiressl,source,expire/go/1/id/fN2sEo7hq-E.0/file/index.m3u8&pltype=contentlive&cl=162900125&iurlmq=https://i.ytimg.com/vi/fN2sEo7hq-E/mqdefault_live.jpg&enable_cardio_before_playback=1&no_get_video_log=1&short_view_count_text=3M+views&avg_rating=4.24240619416&fexp=9422596,9431012,9434289,9441392,9446364,9449243,9457141,9460072,9461821,9463594,9464546,9465833,9466793,9466795,9466797,9466851,9467217,9468797,9468799,9468805,9471755,9475953,9477113,9477691,9478524,9478670,9480034,9480475,9480535,9480795,9481684,9482647,9483080,9484209,9484514,9484643,9484706,9485999&keywords=al+jazeera+tv,al+jazeera+Arabic,الجزيره,اخبار,خبر,free+tv+channels,aljazira,اخبار+الجزيرة,الاسكندرية,الجزيرة+مصر+مباشر,al+jazeera+english+live,aljazeera+tv+live,داعش,العراق,اخبار+العراق,اخبار+سوريا,دمشق,اخبار+مصر,سوريا,بشار+الاسد,عاجل+ليبيا,عاجل,الحصاد,النشرة,نشرة,الاخبار,الاهرام,الوفد,الجزيرة+مباشر,الجمهورية,syria+news,البث+الحي,البث+الحي+لقناة+الجزيرة,جودة+عالية,hd&idpj=-4&c=WEB&innertube_client_version=1.20170718&account_playback_token=QUFFLUhqa3NJenBCUUNnZnBtMHdOb3FLSWE0cG9qQkZBZ3xBQ3Jtc0ttYkdZeEI0TExmQWo1RldLQlFZSGtLTE1wcEJGamNNZnE4UlhDaUpfRGtvSG5WbG1KUHNvbk44T2dtM2NRb0NwWmNZaU9sdGc2MTY3QUg3SldKTmtxOWNzMjVfZ0R5VDYwM1E3RDVQQnNHTU12OVphSQ==&iv3_module=1&iurlhq=https://i.ytimg.com/vi/fN2sEo7hq-E/hqdefault_live.jpg&dashmpd=https://manifest.googlevideo.com/api/manifest/dash/hfr/1/as/fmp4_audio_clear,fmp4_sd_hd_clear/source/yt_live_broadcast/key/yt6/ip/72.239.175.191/expire/1501068725/ipbits/0/signature/D9AC8668BF9CF6B884B618938C9823515B17D8F2.1FDA7E07B2B55FBCCF80C654BA9E0A1F9A48F589/playlist_type/DVR/itag/0/requiressl/yes/sparams/as,gcr,hfr,id,ip,ipbits,itag,playlist_type,requiressl,source,expire/gcr/us/id/fN2sEo7hq-E.0&ypc_ad_indicator=4&ucid=UCfiwzLy-8yKzIbsmZTzxDgw&iv_load_policy=1&iurlmaxres=https://i.ytimg.com/vi/fN2sEo7hq-E/maxresdefault_live.jpg&oid=o0grDQo8XcVLrPz5jByaaQ&iv_invideo_url=https://www.youtube.com/annotations_invideo?cap_hist=1&video_id=fN2sEo7hq-E&ei=VSl4WcedBNbjqgXe7bzQCw&cver=1.20170724&live_playback=1&fmt_list=&auth_timeout=21600000&thumbnail_url=https://i.ytimg.com/vi/fN2sEo7hq-E/default.jpg&root_ve_type=&has_cc=False&is_listed=1&url_encoded_fmt_stream_map=&fresca_module=1&enable_cardio=1&fresca_preroll=1&ypc_license_checker_module=1&iurlsd=https://i.ytimg.com/vi/fN2sEo7hq-E/sddefault_live.jpg&remarketing_url=https://googleads.g.doubleclick.net/pagead/viewthroughconversion/962985656/?backend=player_vars&cname=1&cver=AS3&data=backend%3Dplayer_vars%3Bcname%3D1%3Bcver%3DAS3%3Bptype%3Dview%3Btype%3Dview%3Butuid%3DfiwzLy-8yKzIbsmZTzxDgw%3Butvid%3DfN2sEo7hq-E&foc_id=fiwzLy-8yKzIbsmZTzxDgw&label=followon_view&ptype=view&delay=5&tmi=1&view_count=3025044&use_cipher_signature=False
我如何去从上面的字符串中提取的M3U8网址是什么?我希望它看起来像这样做一次:
我有下面的代码停在这一点上,如下图所示:
extension ViewController {
/*https://stackoverflow.com/questions/35608686/how-can-i-get-the-actual-video-url-of-a-youtube-live-stream*/
func get_youtube_link(videoID: String) {
let url: URL = URL(string: "https://www.youtube.com/get_video_info?&video_id=fN2sEo7hq-E&el=info&ps=default&eurl=&gl=US&hl=en")!
let session = URLSession.shared
var request = URLRequest(url: url)
request.httpMethod = "GET"
request.cachePolicy = NSURLRequest.CachePolicy.reloadIgnoringCacheData
let task = session.dataTask(with: request as URLRequest, completionHandler: {(data, response, error) in
// grab the URL returned by YouTube, which is a URL with many parameters
let feedback = NSString(data: data!, encoding: String.Encoding.utf8.rawValue)
// convert NSString to String
var newString = String(feedback!)
//https://www.uraimo.com/swiftbites/swift-url-encoding/
newString = newString.removingPercentEncoding!
newString = newString.replacingOccurrences(of: "%2C", with: ",")
print(newString)
})
task.resume()
}
}
这是以RAW格式收到的YouTube网络查询数据:
PARTNERID = 27 & root_ve_type = & C = WEB & iurl = HTTPS%3A%2F%2Fi.ytimg.com%2Fvi%2FVmxIA8L3Xz8%2Fhqdefault_live.jpg的& = GC6OCn1lTVgpgJyrp2hYjw & hlsdvr = 1 &的EventID = FEx5We_CJMut4QSH_5OYCw & ypc_license_checker_module = 1个& auth_timeout = 21600000 & videostats_playback_base_url = HTTPS%3A%2F%2Fs.youtube.com &标记= WIs368zOOjdA6jb7Wo5HIeCUIjDqF6aTm40Qf9Lm8xY%3D & CSN = FEx5We_CJMut4QSH_5OYCw & PLID = AAVVQxkmPLDdDSm- & allow_ratings = 1 & live_playback = 1 & live_default_broadc AST = 1 & FEXP = 9422596%2C9431012%2C9434289%2C9441386%2C9446364%2C9449243%2C9457141%2C9460072%2C9461821%2C9463594%2C9464546%2C9465833%2C9466793%2C9466795%2C9466797%2C9466851%2C9467217%2C9468797%2C9468799%2C9468805%2C9471755%2C9475953% 2C9477113%2C9477691%2C9478524%2C9478670%2C9480034%2C9480475%2C9480535%2C9480795%2C9481684%2C9482647%2C9483080%2C9483701%2C9484209%2C9484514%2C9484643%2C9484706%2C9485999 & fresca_module = 1 & idpj = -7 &延迟= 5 & iurlmq = HTTPS %3A%2F%2Fi.ytimg.com%2Fvi%2FVmxIA8L3Xz8%2Fmqdefault_live.jpg & AVG_RATING = 4.53108348135 & ypc_ad_indicator = 4 & remarketing_url = HTTPS%3A%2F%2Fgoogleads.g.doubleclick.net%2Fpagead%2Fviewthroughconversion%2F962985656%2F %3Fbackend%3Dplayer_vars%26cname%3D1%26cver%3DAS3%26foc_id%3DSrZ3UV4jOidv8ppoVuvW9Q %26label%3Dfollowon_view%26ptype%3Dno_rmkt & innertube_client_version = 1。20170718个& video_verticals =%5B16%2C + 396%5D & ldpj = -27 &标题=欧洲新闻+ LIVE & TMI = 1个&水印=%2Chttps%3A%2F%2Fs.ytimg.com%2Fyts%2Fimg%2Fwatermark%2Fyoutube_watermark -vflHX6b6E.png%2Chttps%3A%2F%2Fs.ytimg.com%2Fyts%2Fimg%2Fwatermark%2Fyoutube_hd_watermark-vflAzLcD6.png & cver = 1.20170725 & iv3_module = 1 & no_get_video_log = 1个& has_cc =假& thumbnail_url = HTTPS%3A %2F%2Fi.ytimg.com%2Fvi%2FVmxIA8L3Xz8%2Fdefault.jpg & iv_invideo_url = HTTPS%3A%2F%2Fwww.youtube.com%2Fannotations_invideo%3Fcap_hist%3D1%26video_id%3DVmxIA8L3Xz8%26ei%3DFEx5We_CJMut4QSH_5OYCw &作者=欧洲新闻+%28英寸+英语%29 & statu S = OK & PTK = youtube_none & fresca_preroll = 1 & iurlsd = HTTPS%3A%2F%2Fi.ytimg.com%2Fvi%2FVmxIA8L3Xz8%2Fsddefault_live.jpg & length_seconds = 1800 & VIEW_COUNT = 159557 & is_listed = 1 & VM = CAEQABgE & enable_cardio_before_playback = 1 & dashmpd = HTTPS%3A%2F%2Fmanifest.googlevideo.com%2Fapi%2Fmanifest%2Fdash%2Fas%2Ffmp4_audio_clear%252Cfmp4_sd_hd_clear%2Fgcr%2Fus%2Fexpire%2F1501143156%2Fsignature%2F7779193FA964EC075A94C62E6720B2380AEE39A0.B546BFA286574BA5D7BE116159ACC45130650938%2Fkey%2Fyt6%2Fip% 2F72.239.175.191%2Fplaylist_type%2FDVR%2Fitag%2f0的%2Fipbits%2f0的%2Fsource%2Fyt_live_broadcast%2Frequiressl%2Fyes%2Fhfr%2F1%2Fsparams%2Fas%252Cgcr%252Chfr%252Cid%252Cip%252Cipbits%252Citag%252Cplaylist_type%252Crequiressl% 252Csource%252Ce xpire%2Fid%2FVmxIA8L3Xz8.0 & hlsvp = https%3A%2F%2Fmanifest.googlevideo.com%2Fapi%2Fmanifest%2Fhls_variant%2Fgcr%2Fus%2Fkey%2Fyt6%2Fip%2F72.239.175.191%2Fplaylist_type%2FDVR%2Fexpire% 2F1501143156%2Fitag%2f0的%2Fsource%2Fyt_live_broadcast%2Fmaudio%2F1%2Fid%2FVmxIA8L3Xz8.0%2Fsparams%2Fgcr%252Cgo%252Cid%252Cip%252Cipbits%252Citag%252Cmaudio%252Cplaylist_type%252Crequiressl%252Csource%252Cexpire%2Fipbits%2f0的%2Fgo% 2F1%2Frequiressl%2Fyes%2Fsignature%2FB225396C754E6783728F71F0C1AD4CFE9AFC3839.B2C6E2FFCB07B136D4AECFA5A8F001DFEC084543%2Ffile%2Findex.m3u8 &时间戳= 1501121556 & iurlmaxres = HTTPS%3A%2F%2Fi.ytimg.com%2Fvi%2FVmxIA8L3Xz8%2Fmaxresdefault_live.jpg & use_cipher_signature =假& live_chunk_readahead = 3 & iv_load_policy = 1 & live_storyboard_spec = https%3A%2F%2Fi.ytimg.com%2Fsb%2F VmxIA8L3Xz8%2Fstoryboard_live_60_3x3_b0%2FM%24M.jpg%3Frs%3DAOn4CLBjUwFPDoNQCv904oDJpmFEM5xg7g%23106%2360%233%233 & UCID = UCSrZ3UV4jOidv8ppoVuvW9Q & allow_embed用于= 1 & pltype = contentugclive & short_view_count_text = 159K +视图& fmt_list = &关键字= & enable_cardio = 1 & VIDEO_ID = VmxIA8L3Xz8 & streaminglib_module = 1 & url_encoded_fmt_stream_map = & CL = 162900125 & account_playback_token = QUFFLUhqbl9LME8tdzdIT1VJaG1qRk1VZ3U1OFNnMW1PZ3xBQ3Jtc0ttY0dMZWZJdGtkUVNqTjlFWHpubjE2Rjg5OGxlU21fUndLa3Y0THoyMWpGa3ZXWDN2R3JkR1JHS2tEcm51OXhTbTFqYlNGTHVKY1hrOWllcFlHRU9NNHFZTjZNNGRZQjZ1eFc2VGxjMHpScWFDWnUxdw%3D%3D & MUT ED = 0 & iurlhq = HTTPS%3A%2F%2Fi.ytimg.com%2Fvi%2FVmxIA8L3Xz8%2Fhqdefault_live.jpg
为什么我的问题否决?让我知道,让我明白我做错了什么,不要重复。谢谢! – halkibsi
很可能是因为你的问题没有显示任何形式的努力。在Swift中有无数的提取子字符串的例子。做一些基础研究。尝试一下。然后[编辑]您的问题,以显示您尝试的代码(作为文本,而不是图像或链接),并清楚地解释您需要帮助的内容。 – rmaddy
谢谢,但我一直在为此工作几个小时。我希望这个问题很基础,也很容易理解。那是我的错误。我会按照你的建议进行编辑。谢谢! – halkibsi