获取Vine .mp4源代码 - iOS

时间:2015-09-07 02:53:03

标签: javascript ios mp4 vine

我已经找到了一些很好的答案但是在PHP中,是否有使用JavaScript或iOS的方法?

我找到的链接:

  1. How to get Vine video url(不确定如何实施)
  2. Get .mp4 source and poster image from Vine Id (PHP) - 它的PHP所以它不是我追逐的东西。
  3. 作为一个例子,当你打开"检查元素"在视频中,此代码应该存在(自然地具有不同的ID):

    vine video element

    如果您输入网址(" https://v.cdn.vine.co/r/videos/ ..... .mp4)并停在.mp4,视频将在您的浏览器中以视频形式播放,如下所示:

    https://v.cdn.vine.co/r/videos/283A5A8FE01255752559474962432_365d817ea89.4.3.6417578100978898648.mp4

    这就是我想要的;网址(" https://....")。我可以编辑URL的整个内容,只获取.mp4而不是之后的内容,即.jpg。我能做到的。我似乎无法使用https://vine.co/v/eUm1bYVvWj6链接获取网址内容,而不使用PHP。

    非常感谢任何帮助。

    我有UIWebView和MPMoviePlayer可用,可以在我的urlRequest中使用HTML字符串,或者只是使用MPMoviePlayer播放.mp4 URL。我只是想知道如何获得.mp4。

1 个答案:

答案 0 :(得分:1)

尝试通过创建HTML字符串并通过iframe解析藤蔓来使用HTML / JS解决此问题后,我无法实现检索.mp4链接所需的结果。

我通过以下方式克服了这个问题:

  1. 转到解析HTML的Ray Wenderlich教程,并按照教程进行操作,无论您需要什么。您需要的最重要的部分是将hpple文件安装到项目中(通过Ray Wenderlich教程找到)并引用libxml2。

  2. 使用此代码进行解析以获取MP4:

    -(void)loadVine: (NSString *) vineLink {
        //create the string to store the result
        NSString * url = nil;
        // Create a URL from the String passed in
        NSURL *vineURL = [NSURL URLWithString:vineLink];
    
        NSData *vineHTMLdata = [NSData dataWithContentsOfURL:vineURL];
    
        TFHpple *vineParser = [TFHpple hppleWithHTMLData:vineHTMLdata];
    
        // This is the most important part of your query
        // The vine .mp4 path is in the `<meta>` tag as show below
        NSString *vineXpathQueryString = @"//meta[@property='twitter:player:stream']";
        NSArray *vineNodes = [vineParser searchWithXPathQuery:vineXpathQueryString];
    
        for (TFHppleElement *element in vineNodes) {
            //this sets your `NSString * url` to be the result
            url = [element objectForKey:@"content"];
            //print it out in log to display your .mp4 link
            NSLog(@"What is the vine? %@", url);
            //now pass it to your player
            [self autoPlayVine:url];
        }
    }
    
  3. 这是我的藤球员代码:

    -(void) autoPlayVine :(NSString *) link{
    
        NSURL * url = [NSURL URLWithString:link];
    
        self.moviePlayer =  [[MPMoviePlayerController alloc] initWithContentURL:url];
    
        [[NSNotificationCenter defaultCenter] addObserver:self
                                         selector:@selector(moviePlayBackDidFinish:)
                                             name:MPMoviePlayerPlaybackDidFinishNotification
                                           object:self.moviePlayer];
    
        self.moviePlayer.controlStyle = MPMovieControlStyleDefault;
        self.moviePlayer.shouldAutoplay = YES;
        // set the frame to be full screen - needed otherwise you may only get the audio as there is no frame size set, but the movieplayer has been added to the view
        self.moviePlayer.view.frame = CGRectMake(0, 0, self.view.bounds.size.width, self.view.bounds.size.height);
        // below enables either continuous loop or delete for one time play
        self.moviePlayer.repeatMode = YES;
        [self.view addSubview:self.moviePlayer.view];
        [self.moviePlayer setFullscreen:YES animated:YES];
    }
    
  4. 根据您的偏好,在viewDidLoadviewWillAppear中拨打此电话:

    NSString * yourVineLink = @"https://vine.co/v/.......";
    [self loadVine:yourVineLink];
    
  5. 通过遵循Ray Wenderlich教程确保您已将正确的文件和导入语句添加到项目中非常重要。如果你已经这样做了,这应该都可以正常工作(除非Vine决定更改其元标记/ .mp4链接的位置)。

    注意:您可以在方法名称中使用URL,但我喜欢NSString,这只是我的风格。

    享受。