iOS 从 Google 驱动器 Swift 流式传输视频

iOS Stream video from Google drive Swift

我正在构建一个 iOS 应用程序,来自 Google 的 Stream 视频驱动视频 link 看起来像这样

https://drive.google.com/file/d/0B2Kri7-TaAFJSlJ4UTJuSElGamM/preview

从上面的 URL 获取 Stream Link 的唯一方法是解码 webView HTML

代码:

let myURLString = "https://drive.google.com/file/d/0B2Kri7-TaAFJSlJ4UTJuSElGamM/preview"

    if let myURL = NSURL(string: myURLString) {

        do {
            let myHTMLString = try String(contentsOfURL: myURL, encoding: NSUTF8StringEncoding)
            print("HTML : \(myHTMLString)")

        } catch {
            print("Error : \(error)")
        }
    } else {
        print("Error: \(myURLString) doesn't  URL")
    }

完成后我得到了 webView HTML

问题是:

我在 HTML 中寻找的是这个“fmt_stream_map”,它包含所有流媒体 Link我也需要流式传输视频,但我不知道如何访问它并从中获取 Steam Links。

PS: 我正在与一位 Android 开发人员合作,他告诉我他使用了 方法来解决问题,但是他无法向我解释,我也不知道java

我使用以下方法解决了问题:

        let myURLString = "https://drive.google.com/file/d/0B1XhqDeOfqG7UWZSaG1ZbFFhSzQ/preview"

    if let myURL = NSURL(string: myURLString) {

        do {
            let myHTMLString = try String(contentsOfURL: myURL, encoding: NSUTF8StringEncoding)

            let t = myHTMLString

            if let rangeOfZero = t.rangeOfString("plid", options: NSStringCompareOptions.BackwardsSearch) {

                let suffix = String(t.characters.suffixFrom(rangeOfZero.endIndex))

                //    print(suffix)

                let input = "\(suffix)"
                let detector = try! NSDataDetector(types: NSTextCheckingType.Link.rawValue)
                let matches = detector.matchesInString(input, options: [], range: NSRange(location: 0, length: input.utf8.count))

                //  print(matches)
                for match in matches {

                    let url = (input as NSString).substringWithRange(match.range)

                    linksA.append(url)

                }

                theLink()

            } else {
                print("noooo")
            }
        } catch {
            print("Error : \(error)")
        }
    } else {
        print("Error: \(myURLString) doesn't  URL")
    }

之后您需要使用此方法解码流 link :

    func theLink() {


    /// /[u]00../g


    let firstElement = linksA.first

    let t = firstElement!.stringByReplacingOccurrencesOfString(",35", withString: "")

    let deUrl = t.characters.split{[=11=] == "|"}.map(String.init)

    let link = deUrl[0]

    // the link needs to be decoded

    let i = link.stringByAddingPercentEscapesUsingEncoding(NSUTF8StringEncoding)


    let p = i!.stringByReplacingOccurrencesOfString("%5Cu", withString: "")


    // you can see how the link should look like here :
    // http://ddecode.com/hexdecoder/?results=d82d4e564eccc1a6b96ee7c5c1e1c3b2

    // %252C : ,
    // 003d : =
    // 0026 : &

     let re = p.stringByReplacingOccurrencesOfString("003d", withString: "=")
     let y = re.stringByReplacingOccurrencesOfString("0026", withString: "&")
        let c = y.stringByReplacingOccurrencesOfString("%252C", withString: ",")

    print(c) }

你可以看到全部代码Here