diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 8320717..94152ea 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -19,7 +19,8 @@ android:roundIcon="@mipmap/ic_launcher_round" android:supportsRtl="true" android:theme="@style/Theme.AsgardiusS3Manager" - tools:targetApi="31" > + tools:targetApi="31" + android:usesCleartextTraffic="true" > diff --git a/app/src/main/java/asgardius/page/s3manager/ObjectSelect.java b/app/src/main/java/asgardius/page/s3manager/ObjectSelect.java index de70557..32a0c65 100644 --- a/app/src/main/java/asgardius/page/s3manager/ObjectSelect.java +++ b/app/src/main/java/asgardius/page/s3manager/ObjectSelect.java @@ -30,6 +30,8 @@ import com.amazonaws.services.s3.model.ListObjectsRequest; import com.amazonaws.services.s3.model.ObjectListing; import com.amazonaws.services.s3.model.S3ObjectSummary; +import java.io.BufferedReader; +import java.io.InputStreamReader; import java.net.URL; import java.net.URLEncoder; import java.util.ArrayList; @@ -192,7 +194,7 @@ public class ObjectSelect extends AppCompatActivity { else if (Name.get(i).toString().toLowerCase(Locale.ROOT).endsWith(".opus") || Name.get(i).toString().toLowerCase(Locale.ROOT).endsWith(".ogg") || Name.get(i).toString().toLowerCase(Locale.ROOT).endsWith(".oga") || Name.get(i).toString().toLowerCase(Locale.ROOT).endsWith(".mp3") || Name.get(i).toString().toLowerCase(Locale.ROOT).endsWith(".m4a") || Name.get(i).toString().toLowerCase(Locale.ROOT).endsWith(".flac") - || Name.get(i).toString().toLowerCase(Locale.ROOT).endsWith(".mka")) { + || Name.get(i).toString().toLowerCase(Locale.ROOT).endsWith(".mka") || Name.get(i).toString().toLowerCase(Locale.ROOT).endsWith(".m3u")) { Img.add(R.drawable.audiofile); } else if(Name.get(i).toString().toLowerCase(Locale.ROOT).endsWith(".mp4") || Name.get(i).toString().toLowerCase(Locale.ROOT).endsWith(".mkv") @@ -322,7 +324,7 @@ public class ObjectSelect extends AppCompatActivity { } } else if (Img.get(position).equals(R.drawable.audiofile) || Img.get(position).equals(R.drawable.videofile)) { simpleProgressBar.setVisibility(View.VISIBLE); - if (isplaylist) { + if (isplaylist && !Name.get(position).toString().toLowerCase(Locale.ROOT).endsWith(".m3u")) { videoPlayer(null, Name.get(position).toString()); } else { Thread mediaread = new Thread(new Runnable() { @@ -471,7 +473,55 @@ public class ObjectSelect extends AppCompatActivity { } private void videoPlayer(String url, String title) { - if (isplaylist) { + if (title.toLowerCase(Locale.ROOT).endsWith(".m3u")) { + Thread mediaread = new Thread(new Runnable() { + + @Override + public void run() { + try { + //load media file + ArrayList links = getPlaylist(url); + ArrayList medialist = new ArrayList(); + for (int i = 0; i < links.size(); i++) { + medialist.add(links.get(i).toString()); + } + + runOnUiThread(new Runnable() { + + @Override + public void run() { + // Sending reference and data to Adapter + //videoPlayer(objectURL.toString(), Name.get(position).toString()); + Intent intent = new Intent(getApplicationContext(), VideoPlayer.class); + intent.putExtra("video_url", url); + intent.putExtra("title", title); + intent.putExtra("videocache", videocache); + intent.putExtra("buffersize", buffersize); + intent.putExtra("isplaylist", true); + intent.putExtra("queue", links); + intent.putExtra("names", medialist); + simpleProgressBar.setVisibility(View.INVISIBLE); + startActivity(intent); + } + }); + //System.out.println("tree "+treelevel); + //System.out.println("prefix "+prefix); + + } catch (Exception e) { + e.printStackTrace(); + runOnUiThread(new Runnable() { + + @Override + public void run() { + Toast.makeText(getApplicationContext(),e.toString(), Toast.LENGTH_SHORT).show(); + } + }); + } + } + }); + mediaread.start(); + } + else if (isplaylist) { Thread mediaread = new Thread(new Runnable() { @Override @@ -490,18 +540,20 @@ public class ObjectSelect extends AppCompatActivity { @Override public void run() { - // Sending reference and data to Adapter - //videoPlayer(objectURL.toString(), Name.get(position).toString()); - Intent intent = new Intent(getApplicationContext(), VideoPlayer.class); - intent.putExtra("video_url", url); - intent.putExtra("title", title); - intent.putExtra("videocache", videocache); - intent.putExtra("buffersize", buffersize); - intent.putExtra("isplaylist", isplaylist); - intent.putExtra("queue", links); - intent.putExtra("names", medialist); - simpleProgressBar.setVisibility(View.INVISIBLE); - startActivity(intent); + if(links != null) { + // Sending reference and data to Adapter + //videoPlayer(objectURL.toString(), Name.get(position).toString()); + Intent intent = new Intent(getApplicationContext(), VideoPlayer.class); + intent.putExtra("video_url", url); + intent.putExtra("title", title); + intent.putExtra("videocache", videocache); + intent.putExtra("buffersize", buffersize); + intent.putExtra("isplaylist", isplaylist); + intent.putExtra("queue", links); + intent.putExtra("names", medialist); + simpleProgressBar.setVisibility(View.INVISIBLE); + startActivity(intent); + } } }); //System.out.println("tree "+treelevel); @@ -532,6 +584,7 @@ public class ObjectSelect extends AppCompatActivity { } } + private void textViewer(String url) { Intent intent = new Intent(this, TextViewer.class); @@ -789,4 +842,26 @@ public class ObjectSelect extends AppCompatActivity { } return links; } + + public ArrayList getPlaylist(String playlist) { + ArrayList links = new ArrayList(); + try { + BufferedReader br = new BufferedReader(new InputStreamReader((new URL(playlist).openStream()))); + String strLine; + +//Read File Line By Line + while ((strLine = br.readLine()) != null) { + // Print the content on the console - do what you want to do + if(!strLine.startsWith("#")) { + links.add(strLine); + } + } + +//Close the input stream + return links; + } catch (Exception e) { + e.printStackTrace(); + return null; + } + } } \ No newline at end of file diff --git a/app/src/main/java/asgardius/page/s3manager/VideoPlayer.java b/app/src/main/java/asgardius/page/s3manager/VideoPlayer.java index c7650ee..af56f0c 100644 --- a/app/src/main/java/asgardius/page/s3manager/VideoPlayer.java +++ b/app/src/main/java/asgardius/page/s3manager/VideoPlayer.java @@ -170,7 +170,11 @@ public class VideoPlayer extends AppCompatActivity { } } player.prepare(); - player.seekTo(names.indexOf(title), 0); + try { + player.seekTo(names.indexOf(title), 0); + }catch (Exception e) { + System.out.println("Playing m3u file"); + } } else { if (title.endsWith(".m3u8")) { MediaItem mediaItem = MediaItem.fromUri(Share.URLify(videoURL));