fixed file import bugs

This commit is contained in:
Denis Çerri 2022-10-20 18:17:56 +02:00
parent a699711671
commit 4edd72f627
No known key found for this signature in database
GPG key ID: 3F50F14A8E7F7A13
3 changed files with 115 additions and 142 deletions

View file

@ -38,8 +38,11 @@ import java.nio.charset.StandardCharsets;
import java.text.DateFormat; import java.text.DateFormat;
import java.text.SimpleDateFormat; import java.text.SimpleDateFormat;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Arrays;
import java.util.Calendar; import java.util.Calendar;
import java.util.Date; import java.util.Date;
import java.util.LinkedList;
import java.util.List;
import java.util.Locale; import java.util.Locale;
@ -175,7 +178,8 @@ public class MainActivity extends AppCompatActivity{
while ((c = reader.read()) != -1) { while ((c = reader.read()) != -1) {
textBuilder.append((char) c); textBuilder.append((char) c);
} }
String[] lines = textBuilder.toString().split("\n"); List<String> l = Arrays.asList(textBuilder.toString().split("\n"));
LinkedList<String> lines = new LinkedList<>(l);
homeFragment.handleFileIntent(lines); homeFragment.handleFileIntent(lines);
}catch (Exception e){ }catch (Exception e){
e.printStackTrace(); e.printStackTrace();

View file

@ -47,6 +47,7 @@ import com.google.android.material.floatingactionbutton.FloatingActionButton;
import com.google.android.material.progressindicator.LinearProgressIndicator; import com.google.android.material.progressindicator.LinearProgressIndicator;
import com.google.android.material.textfield.TextInputLayout; import com.google.android.material.textfield.TextInputLayout;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.LinkedList;
import java.util.regex.Matcher; import java.util.regex.Matcher;
import java.util.regex.Pattern; import java.util.regex.Pattern;
@ -56,7 +57,8 @@ public class HomeFragment extends Fragment implements HomeRecyclerViewAdapter.On
private View fragmentView; private View fragmentView;
private LinearProgressIndicator progressBar; private LinearProgressIndicator progressBar;
private String inputQuery; private String inputQuery;
private String[] inputQueries; private LinkedList<String> inputQueries;
private int inputQueriesLength = 0;
private RecyclerView recyclerView; private RecyclerView recyclerView;
private HomeRecyclerViewAdapter homeRecyclerViewAdapter; private HomeRecyclerViewAdapter homeRecyclerViewAdapter;
private ShimmerFrameLayout shimmerCards; private ShimmerFrameLayout shimmerCards;
@ -247,14 +249,30 @@ public class HomeFragment extends Fragment implements HomeRecyclerViewAdapter.On
dbManager = new DBManager(context); dbManager = new DBManager(context);
dbManager.clearResults(); dbManager.clearResults();
dbManager.close(); dbManager.close();
for (int i = 0; i < inputQueries.length; i++){ inputQueriesLength = inputQueries.size();
inputQuery = inputQueries[i];
activity.runOnUiThread(() -> parseQuery(true)); shimmerCards.startShimmer();
} shimmerCards.setVisibility(View.VISIBLE);
if (inputQueries.length > 1){ Thread thread = new Thread(() -> {
Toast.makeText(context, getString(R.string.finished_loading), Toast.LENGTH_SHORT).show(); while(!inputQueries.isEmpty()){
} inputQuery = inputQueries.pop();
inputQueries = null; parseQuery(false);
}
try{
new Handler(Looper.getMainLooper()).post(() -> {
// DOWNLOAD ALL BUTTON
if (resultObjects.get(0).getIsPlaylistItem() == 1 || inputQueriesLength > 1) {
downloadAllFab.setVisibility(View.VISIBLE);
}
dbManager = new DBManager(context);
dbManager.clearResults();
for (Video v : resultObjects) v.setIsPlaylistItem(1);
dbManager.addToResults(resultObjects);
});
}catch (Exception ignored){}
});
thread.start();
} else { } else {
initCards(); initCards();
} }
@ -272,6 +290,7 @@ public class HomeFragment extends Fragment implements HomeRecyclerViewAdapter.On
Thread thread = new Thread(() -> { Thread thread = new Thread(() -> {
dbManager = new DBManager(context); dbManager = new DBManager(context);
resultObjects = dbManager.getResults(); resultObjects = dbManager.getResults();
Log.e(TAG, resultObjects.toString());
String playlistTitle = ""; String playlistTitle = "";
try { try {
playlistTitle = resultObjects.get(0).getPlaylistTitle(); playlistTitle = resultObjects.get(0).getPlaylistTitle();
@ -358,7 +377,19 @@ public class HomeFragment extends Fragment implements HomeRecyclerViewAdapter.On
downloadFabs.setVisibility(View.GONE); downloadFabs.setVisibility(View.GONE);
selectedObjects = new ArrayList<>(); selectedObjects = new ArrayList<>();
inputQuery = query.trim(); inputQuery = query.trim();
parseQuery(true);
shimmerCards.startShimmer();
shimmerCards.setVisibility(View.VISIBLE);
homeRecyclerViewAdapter.clear();
Thread thread = new Thread(() -> {
parseQuery(true);
// DOWNLOAD ALL BUTTON
if (resultObjects.get(0).getIsPlaylistItem() == 1) {
new Handler(Looper.getMainLooper()).post(() -> downloadAllFab.setVisibility(View.VISIBLE));
}
});
thread.start();
return true; return true;
} }
@ -397,10 +428,11 @@ public class HomeFragment extends Fragment implements HomeRecyclerViewAdapter.On
public void handleIntent(Intent intent) { public void handleIntent(Intent intent) {
inputQueries = new String[]{intent.getStringExtra(Intent.EXTRA_TEXT)}; inputQueries = new LinkedList<>();
inputQueries.add(intent.getStringExtra(Intent.EXTRA_TEXT));
} }
public void handleFileIntent(String[] lines) { public void handleFileIntent(LinkedList<String> lines) {
inputQueries = lines; inputQueries = lines;
} }
@ -410,12 +442,9 @@ public class HomeFragment extends Fragment implements HomeRecyclerViewAdapter.On
} }
private void parseQuery(boolean resetResults) { private void parseQuery(boolean resetResults) {
shimmerCards.startShimmer();
shimmerCards.setVisibility(View.VISIBLE);
homeRecyclerViewAdapter.clear();
infoUtil = new InfoUtil(context);
dbManager = new DBManager(context); dbManager = new DBManager(context);
scrollToTop(); infoUtil = new InfoUtil(context);
new Handler(Looper.getMainLooper()).post(this::scrollToTop);
String type = "Search"; String type = "Search";
Pattern p = Pattern.compile("^(https?)://(www.)?youtu(.be)?"); Pattern p = Pattern.compile("^(https?)://(www.)?youtu(.be)?");
@ -435,32 +464,19 @@ public class HomeFragment extends Fragment implements HomeRecyclerViewAdapter.On
try { try {
switch (type) { switch (type) {
case "Search": { case "Search": {
Thread thread = new Thread(new Runnable() { try {
private final String query; if (resetResults) resultObjects.clear();
resultObjects.addAll(infoUtil.search(inputQuery));
{ } catch (Exception e) {
this.query = inputQuery; Log.e(TAG, e.toString());
} }
new Handler(Looper.getMainLooper()).post(() -> {
@Override if (resetResults) dbManager.clearResults();
public void run() { dbManager.addToResults(resultObjects);
try { homeRecyclerViewAdapter.setVideoList(resultObjects, true);
if (resetResults) resultObjects.clear(); shimmerCards.stopShimmer();
resultObjects.addAll(infoUtil.search(query)); shimmerCards.setVisibility(View.GONE);
} catch (Exception e) {
Log.e(TAG, e.toString());
}
if (resetResults) dbManager.clearResults();
dbManager.addToResults(resultObjects);
dbManager.close();
new Handler(Looper.getMainLooper()).post(() -> {
homeRecyclerViewAdapter.setVideoList(resultObjects, true);
shimmerCards.stopShimmer();
shimmerCards.setVisibility(View.GONE);
});
}
}); });
thread.start();
break; break;
} }
case "Video": { case "Video": {
@ -476,116 +492,68 @@ public class HomeFragment extends Fragment implements HomeRecyclerViewAdapter.On
inputQuery = el[0]; inputQuery = el[0];
} }
Thread thread = new Thread(new Runnable() { try {
private final String query; if (resetResults) resultObjects.clear();
resultObjects.add(infoUtil.getVideo(inputQuery));
} catch (Exception e) {
Log.e(TAG, e.toString());
}
{ new Handler(Looper.getMainLooper()).post(() -> {
this.query = inputQuery; if (resetResults) dbManager.clearResults();
} dbManager.addToResults(resultObjects);
homeRecyclerViewAdapter.setVideoList(resultObjects, true);
@Override shimmerCards.stopShimmer();
public void run() { shimmerCards.setVisibility(View.GONE);
try {
if (resetResults) resultObjects.clear();
resultObjects.add(infoUtil.getVideo(query));
} catch (Exception e) {
Log.e(TAG, e.toString());
}
if (resetResults) dbManager.clearResults();
dbManager.addToResults(resultObjects);
dbManager.close();
new Handler(Looper.getMainLooper()).post(() -> {
homeRecyclerViewAdapter.setVideoList(resultObjects, true);
shimmerCards.stopShimmer();
shimmerCards.setVisibility(View.GONE);
});
}
}); });
thread.start();
break; break;
} }
case "Playlist": { case "Playlist": {
inputQuery = inputQuery.split("list=")[1]; inputQuery = inputQuery.split("list=")[1];
Thread thread = new Thread(new Runnable() { String nextPageToken = "";
private final String query; if (resetResults) dbManager.clearResults();
if (resetResults){
{ resultObjects.clear();
this.query = inputQuery; homeRecyclerViewAdapter.setVideoList(new ArrayList<>(), true);
} }
do {
@Override InfoUtil.PlaylistTuple tmp = infoUtil.getPlaylist(inputQuery, nextPageToken);
public void run() { ArrayList<Video> tmp_vids = tmp.getVideos();
try { String tmp_token = tmp.getNextPageToken();
String nextPageToken = ""; resultObjects.addAll(tmp_vids);
if (resetResults) dbManager.clearResults(); new Handler(Looper.getMainLooper()).post(() -> {
dbManager.close(); dbManager.addToResults(tmp_vids);
if (resetResults){ homeRecyclerViewAdapter.setVideoList(tmp_vids, false);
resultObjects.clear(); shimmerCards.stopShimmer();
homeRecyclerViewAdapter.setVideoList(new ArrayList<>(), true); shimmerCards.setVisibility(View.GONE);
} });
do { if (tmp_token.isEmpty()) break;
InfoUtil.PlaylistTuple tmp = infoUtil.getPlaylist(query, nextPageToken); if (tmp_token.equals(nextPageToken)) break;
ArrayList<Video> tmp_vids = tmp.getVideos(); nextPageToken = tmp_token;
String tmp_token = tmp.getNextPageToken(); }while (true);
resultObjects.addAll(tmp_vids);
new Handler(Looper.getMainLooper()).post(() -> {
homeRecyclerViewAdapter.setVideoList(tmp_vids, false);
shimmerCards.stopShimmer();
shimmerCards.setVisibility(View.GONE);
});
dbManager.addToResults(tmp_vids);
dbManager.close();
if (tmp_token.isEmpty()) break;
if (tmp_token.equals(nextPageToken)) break;
nextPageToken = tmp_token;
}while (true);
// DOWNLOAD ALL BUTTON
if (resultObjects.size() > 1) {
new Handler(Looper.getMainLooper()).post(() -> downloadAllFab.setVisibility(View.VISIBLE));
}
} catch (Exception e) {
Log.e(TAG, e.toString());
}
}
});
thread.start();
break; break;
} }
case "Default" : { case "Default" : {
Thread thread = new Thread(new Runnable() { try {
private final String query; if (resetResults) resultObjects.clear();
ArrayList<Video> video = infoUtil.getFromYTDL(inputQuery);
{ if (video != null) {
this.query = inputQuery; resultObjects.addAll(video);
new Handler(Looper.getMainLooper()).post(() -> {
if (resetResults) dbManager.clearResults();
dbManager.addToResults(resultObjects);
});
} }
@Override new Handler(Looper.getMainLooper()).post(() -> {
public void run() { homeRecyclerViewAdapter.setVideoList(resultObjects, true);
try { shimmerCards.stopShimmer();
if (resetResults) resultObjects.clear(); shimmerCards.setVisibility(View.GONE);
ArrayList<Video> video = infoUtil.getFromYTDL(query); });
if (video != null) {
resultObjects.addAll(video);
if (resetResults) dbManager.clearResults();
dbManager.addToResults(resultObjects);
dbManager.close();
}
new Handler(Looper.getMainLooper()).post(() -> { } catch (Exception e) {
homeRecyclerViewAdapter.setVideoList(resultObjects, true); Log.e(TAG, e.toString());
shimmerCards.stopShimmer(); }
shimmerCards.setVisibility(View.GONE);
});
} catch (Exception e) {
Log.e(TAG, e.toString());
}
}
});
thread.start();
break; break;
} }
} }
@ -593,6 +561,7 @@ public class HomeFragment extends Fragment implements HomeRecyclerViewAdapter.On
Log.e(TAG, e.toString()); Log.e(TAG, e.toString());
} }
dbManager.close();
} }

View file

@ -33,7 +33,7 @@ ext {
commonsIoVer = '2.5' commonsIoVer = '2.5'
// supports java 1.6 // supports java 1.6
commonsCompressVer = '1.12' commonsCompressVer = '1.12'
youtubedlAndroidVer = "0.14.+" youtubedlAndroidVer = "0.14.0"
} }