Flutter Dart:如何从视频URL提取youtube视频ID?

时间:2019-06-09 10:17:03

标签: regex flutter dart

如何使用dart正则表达式从视频URL中提取YouTube视频ID?

示例网址

port 8181

                  +--- host --------> strapi application on localhost:8080
                  |
users --> nginx --|--- host/second-project ---> strapi application on localhost:8181
                  |
                  +--- host/mail ---> strapi application on localhost:8282

返回

https://www.youtube.com/watch?v=SEkUienM2oY&t=1265s

对我有用

https://m.youtube.com/watch?v=SEkUienM2oY&t=1265s

但是如何使用Regex做到这一点?

5 个答案:

答案 0 :(得分:3)

没有正则表达式,我希望它能完美运行 将此依赖项添加到您的pubspec.yaml文件中

youtube_player_flutter: ^6.1.0+4

          try {

            videoIdd = YoutubePlayer.convertUrlToId("your url here");
            print('this is '+videoId);

          } on Exception catch (exception) {

            // only executed if error is of type Exception
            print('exception');

          } catch (error) {

            // executed for errors of all types other than Exception
             print('catch error');
           //  videoIdd="error";

          }

答案 1 :(得分:1)

如果我们所有的URL都与问题中的输入字符串相似,我们可以简单地提取这些ID,其表达式类似于:

.*\?v=(.+?)&.+

,我们所需的输出在以下捕获组中:(.+?)

Demo

答案 2 :(得分:1)

pub 上有包获取 id youtube_parser

youtube_parser 从各种 YouTube 网址中提取 ID 的极简库

import 'package:youtube_parser/youtube_parser.dart';

String foo = getIdFromUrl('https://www.youtube.com/watch?v=CBWlfU_na-2');
// returns 'CBWlfU_na-2'

String bar = getIdFromUrl('https://www.notyoutube.com/watch?v=CBWlfU_na-2');
// returns null

这也是 Uri.parse 现在最终使用的内容

答案 3 :(得分:0)

此类正则表达式也可以解析YouTube视频,使它们无需定时

.*\?v=(.+?)($|[\&])

完整的dart示例:

 final regex = RegExp(r'.*\?v=(.+?)($|[\&])', caseSensitive: false, multiLine: false);
  final url = [PASTE_YOUTUBE_URL_HERE];
  if (regex.hasMatch(text)) {
    final videoId = regex.firstMatch(text).group(1);
    print(videoId);
  } else {
    print("Cannot parse $url");
  }

答案 4 :(得分:0)

gb = data.groupby('Country Code')
explore = gb.count()
explore.describe()