@@ -95,19 +95,32 @@ public static String resolveResolutionString(int itag) {
9595 @ Override
9696 public String getVideoId (String videoUrl ) {
9797 try {
98- String query = (new URI (videoUrl )).getQuery ();
99- String queryElements [] = query .split ("&" );
100- Map <String , String > queryArguments = new HashMap <>();
101- for (String e : queryElements ) {
102- String [] s = e .split ("=" );
103- queryArguments .put (s [0 ], s [1 ]);
98+ URI uri = new URI (videoUrl );
99+ if (uri .getHost ().contains ("youtube" )) {
100+ String query = uri .getQuery ();
101+ String queryElements [] = query .split ("&" );
102+ Map <String , String > queryArguments = new HashMap <>();
103+ for (String e : queryElements ) {
104+ String [] s = e .split ("=" );
105+ queryArguments .put (s [0 ], s [1 ]);
106+ }
107+ return queryArguments .get ("v" );
108+ } else if (uri .getHost ().contains ("youtu.be" )) {
109+ // uri.getRawPath() does somehow not return the last character.
110+ // so we do a workaround instead.
111+ //return uri.getRawPath();
112+ String url [] = videoUrl .split ("/" );
113+ return url [url .length -1 ];
114+ } else {
115+ Log .e (TAG , "Error could not parse url: " + videoUrl );
116+
104117 }
105- return queryArguments .get ("v" );
106- } catch (Exception e ) {
118+ } catch (Exception e ) {
107119 Log .e (TAG , "Error could not parse url: " + videoUrl );
108120 e .printStackTrace ();
109121 return "" ;
110122 }
123+ return null ;
111124 }
112125
113126 @ Override
0 commit comments