small fixes
added icons to preferences updated icon colors removed some leftover hardcoded strings fixed time formatting fixed image table in readme
This commit is contained in:
parent
2cb22f0653
commit
28a72866ca
15 changed files with 119 additions and 84 deletions
|
|
@ -23,7 +23,7 @@
|
||||||
<PersistentState>
|
<PersistentState>
|
||||||
<option name="values">
|
<option name="values">
|
||||||
<map>
|
<map>
|
||||||
<entry key="url" value="file:/$USER_HOME$/AppData/Local/Android/Sdk/icons/material/materialicons/announcement/baseline_announcement_24.xml" />
|
<entry key="url" value="file:/$USER_HOME$/AppData/Local/Android/Sdk/icons/material/materialicons/code/baseline_code_24.xml" />
|
||||||
</map>
|
</map>
|
||||||
</option>
|
</option>
|
||||||
</PersistentState>
|
</PersistentState>
|
||||||
|
|
@ -34,7 +34,7 @@
|
||||||
<option name="values">
|
<option name="values">
|
||||||
<map>
|
<map>
|
||||||
<entry key="color" value="00a6ff" />
|
<entry key="color" value="00a6ff" />
|
||||||
<entry key="outputName" value="ic_announcement" />
|
<entry key="outputName" value="ic_code" />
|
||||||
<entry key="sourceFile" value="C:\Users\denis\Desktop\youtubedl-android-0.13.1\youtubedl-android-0.13.1" />
|
<entry key="sourceFile" value="C:\Users\denis\Desktop\youtubedl-android-0.13.1\youtubedl-android-0.13.1" />
|
||||||
</map>
|
</map>
|
||||||
</option>
|
</option>
|
||||||
|
|
|
||||||
|
|
@ -37,18 +37,21 @@
|
||||||
<entry key="..\:/Users/denis/Desktop/ytdlnis/ytdlnis/app/src/main/res/xml/shortcuts.xml" value="0.13852073535699017" />
|
<entry key="..\:/Users/denis/Desktop/ytdlnis/ytdlnis/app/src/main/res/xml/shortcuts.xml" value="0.13852073535699017" />
|
||||||
<entry key="..\:/Users/denis/Documents/GitHub/ytdlnis/app/src/main/res/drawable/ic_announcement.xml" value="0.1275" />
|
<entry key="..\:/Users/denis/Documents/GitHub/ytdlnis/app/src/main/res/drawable/ic_announcement.xml" value="0.1275" />
|
||||||
<entry key="..\:/Users/denis/Documents/GitHub/ytdlnis/app/src/main/res/drawable/ic_cloud_download.xml" value="0.1275" />
|
<entry key="..\:/Users/denis/Documents/GitHub/ytdlnis/app/src/main/res/drawable/ic_cloud_download.xml" value="0.1275" />
|
||||||
|
<entry key="..\:/Users/denis/Documents/GitHub/ytdlnis/app/src/main/res/drawable/ic_code.xml" value="0.1275" />
|
||||||
<entry key="..\:/Users/denis/Documents/GitHub/ytdlnis/app/src/main/res/drawable/ic_download.xml" value="0.1275" />
|
<entry key="..\:/Users/denis/Documents/GitHub/ytdlnis/app/src/main/res/drawable/ic_download.xml" value="0.1275" />
|
||||||
<entry key="..\:/Users/denis/Documents/GitHub/ytdlnis/app/src/main/res/drawable/ic_go_up.xml" value="0.1275" />
|
<entry key="..\:/Users/denis/Documents/GitHub/ytdlnis/app/src/main/res/drawable/ic_go_up.xml" value="0.1275" />
|
||||||
<entry key="..\:/Users/denis/Documents/GitHub/ytdlnis/app/src/main/res/drawable/ic_home.xml" value="0.1275" />
|
<entry key="..\:/Users/denis/Documents/GitHub/ytdlnis/app/src/main/res/drawable/ic_home.xml" value="0.1275" />
|
||||||
<entry key="..\:/Users/denis/Documents/GitHub/ytdlnis/app/src/main/res/drawable/ic_music.xml" value="0.1275" />
|
<entry key="..\:/Users/denis/Documents/GitHub/ytdlnis/app/src/main/res/drawable/ic_music.xml" value="0.1275" />
|
||||||
<entry key="..\:/Users/denis/Documents/GitHub/ytdlnis/app/src/main/res/drawable/ic_music_downloaded.xml" value="0.1275" />
|
<entry key="..\:/Users/denis/Documents/GitHub/ytdlnis/app/src/main/res/drawable/ic_music_downloaded.xml" value="0.1275" />
|
||||||
<entry key="..\:/Users/denis/Documents/GitHub/ytdlnis/app/src/main/res/drawable/ic_search.xml" value="0.1275" />
|
<entry key="..\:/Users/denis/Documents/GitHub/ytdlnis/app/src/main/res/drawable/ic_search.xml" value="0.1275" />
|
||||||
|
<entry key="..\:/Users/denis/Documents/GitHub/ytdlnis/app/src/main/res/drawable/ic_update.xml" value="0.1275" />
|
||||||
<entry key="..\:/Users/denis/Documents/GitHub/ytdlnis/app/src/main/res/drawable/ic_video.xml" value="0.1275" />
|
<entry key="..\:/Users/denis/Documents/GitHub/ytdlnis/app/src/main/res/drawable/ic_video.xml" value="0.1275" />
|
||||||
|
<entry key="..\:/Users/denis/Documents/GitHub/ytdlnis/app/src/main/res/drawable/ic_video_downloaded.xml" value="0.1275" />
|
||||||
<entry key="..\:/Users/denis/Documents/GitHub/ytdlnis/app/src/main/res/layout/activity_main.xml" value="0.18" />
|
<entry key="..\:/Users/denis/Documents/GitHub/ytdlnis/app/src/main/res/layout/activity_main.xml" value="0.18" />
|
||||||
<entry key="..\:/Users/denis/Documents/GitHub/ytdlnis/app/src/main/res/layout/download_all_card.xml" value="0.3375" />
|
<entry key="..\:/Users/denis/Documents/GitHub/ytdlnis/app/src/main/res/layout/download_all_card.xml" value="0.3375" />
|
||||||
<entry key="..\:/Users/denis/Documents/GitHub/ytdlnis/app/src/main/res/layout/empty_history_hint.xml" value="0.2" />
|
<entry key="..\:/Users/denis/Documents/GitHub/ytdlnis/app/src/main/res/layout/empty_history_hint.xml" value="0.2" />
|
||||||
<entry key="..\:/Users/denis/Documents/GitHub/ytdlnis/app/src/main/res/layout/fragment_history.xml" value="0.20555555555555555" />
|
<entry key="..\:/Users/denis/Documents/GitHub/ytdlnis/app/src/main/res/layout/fragment_history.xml" value="0.20555555555555555" />
|
||||||
<entry key="..\:/Users/denis/Documents/GitHub/ytdlnis/app/src/main/res/layout/fragment_home.xml" value="0.1" />
|
<entry key="..\:/Users/denis/Documents/GitHub/ytdlnis/app/src/main/res/layout/fragment_home.xml" value="0.18" />
|
||||||
<entry key="..\:/Users/denis/Documents/GitHub/ytdlnis/app/src/main/res/layout/fragment_settings.xml" value="0.16875" />
|
<entry key="..\:/Users/denis/Documents/GitHub/ytdlnis/app/src/main/res/layout/fragment_settings.xml" value="0.16875" />
|
||||||
<entry key="..\:/Users/denis/Documents/GitHub/ytdlnis/app/src/main/res/layout/history_card.xml" value="0.1" />
|
<entry key="..\:/Users/denis/Documents/GitHub/ytdlnis/app/src/main/res/layout/history_card.xml" value="0.1" />
|
||||||
<entry key="..\:/Users/denis/Documents/GitHub/ytdlnis/app/src/main/res/layout/history_card_shimmer.xml" value="0.22" />
|
<entry key="..\:/Users/denis/Documents/GitHub/ytdlnis/app/src/main/res/layout/history_card_shimmer.xml" value="0.22" />
|
||||||
|
|
@ -59,7 +62,7 @@
|
||||||
<entry key="..\:/Users/denis/Documents/GitHub/ytdlnis/app/src/main/res/menu/history_menu.xml" value="0.16875" />
|
<entry key="..\:/Users/denis/Documents/GitHub/ytdlnis/app/src/main/res/menu/history_menu.xml" value="0.16875" />
|
||||||
<entry key="..\:/Users/denis/Documents/GitHub/ytdlnis/app/src/main/res/menu/main_menu.xml" value="0.16875" />
|
<entry key="..\:/Users/denis/Documents/GitHub/ytdlnis/app/src/main/res/menu/main_menu.xml" value="0.16875" />
|
||||||
<entry key="..\:/Users/denis/Documents/GitHub/ytdlnis/app/src/main/res/menu/settings_menu.xml" value="0.16875" />
|
<entry key="..\:/Users/denis/Documents/GitHub/ytdlnis/app/src/main/res/menu/settings_menu.xml" value="0.16875" />
|
||||||
<entry key="..\:/Users/denis/Documents/GitHub/ytdlnis/app/src/main/res/xml/root_preferences.xml" value="0.30833333333333335" />
|
<entry key="..\:/Users/denis/Documents/GitHub/ytdlnis/app/src/main/res/xml/root_preferences.xml" value="0.18" />
|
||||||
</map>
|
</map>
|
||||||
</option>
|
</option>
|
||||||
</component>
|
</component>
|
||||||
|
|
|
||||||
|
|
@ -15,9 +15,8 @@ Features:
|
||||||
- [x] share videos / playlists from the Youtube App using the share menu
|
- [x] share videos / playlists from the Youtube App using the share menu
|
||||||
- [x] heads-up download notifications
|
- [x] heads-up download notifications
|
||||||
|
|
||||||
| | |
|
|
||||||
|:-------------------------:|:-------------------------:|
|
|
||||||
|||
|
|||
|
||||||
|
|:-------------------------:|:-------------------------:|
|
||||||
||
|
||
|
||||||
||
|
||
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -38,6 +38,7 @@ import androidx.core.app.NotificationCompat;
|
||||||
import androidx.core.app.NotificationManagerCompat;
|
import androidx.core.app.NotificationManagerCompat;
|
||||||
import androidx.core.content.ContextCompat;
|
import androidx.core.content.ContextCompat;
|
||||||
import androidx.fragment.app.Fragment;
|
import androidx.fragment.app.Fragment;
|
||||||
|
import androidx.recyclerview.widget.RecyclerView;
|
||||||
import androidx.swiperefreshlayout.widget.SwipeRefreshLayout;
|
import androidx.swiperefreshlayout.widget.SwipeRefreshLayout;
|
||||||
import com.deniscerri.ytdl.api.YoutubeAPIManager;
|
import com.deniscerri.ytdl.api.YoutubeAPIManager;
|
||||||
import com.deniscerri.ytdl.database.DBManager;
|
import com.deniscerri.ytdl.database.DBManager;
|
||||||
|
|
@ -99,21 +100,14 @@ public class HomeFragment extends Fragment implements View.OnClickListener{
|
||||||
public void onProgressUpdate(float progress, long etaInSeconds, String line) {
|
public void onProgressUpdate(float progress, long etaInSeconds, String line) {
|
||||||
activity.runOnUiThread(() -> {
|
activity.runOnUiThread(() -> {
|
||||||
progressBar.setProgress((int) progress);
|
progressBar.setProgress((int) progress);
|
||||||
|
|
||||||
String contentText = "";
|
String contentText = "";
|
||||||
if(progressBar.getProgress() > 0){
|
|
||||||
contentText += progressBar.getProgress() + "%";
|
|
||||||
}
|
|
||||||
|
|
||||||
String eta = convertETASecondsToTime(etaInSeconds);
|
|
||||||
if(!eta.equals("0sec")){
|
|
||||||
contentText = contentText+ " Estimated Time: " + eta;
|
|
||||||
}
|
|
||||||
|
|
||||||
if(downloadQueue.size() > 0){
|
if(downloadQueue.size() > 0){
|
||||||
contentText = contentText + "\n" + downloadQueue.size() + " items left";
|
contentText += " " + downloadQueue.size() + " items left\n";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
contentText += line.replaceAll("\\[.*?\\]", "");
|
||||||
|
|
||||||
|
|
||||||
download_notification.setProgress(100,(int) progress,false)
|
download_notification.setProgress(100,(int) progress,false)
|
||||||
.setContentText(contentText);
|
.setContentText(contentText);
|
||||||
|
|
@ -172,6 +166,8 @@ public class HomeFragment extends Fragment implements View.OnClickListener{
|
||||||
shimmerCards = fragmentView.findViewById(R.id.shimmer_results_framelayout);
|
shimmerCards = fragmentView.findViewById(R.id.shimmer_results_framelayout);
|
||||||
topAppBar = fragmentView.findViewById(R.id.home_toolbar);
|
topAppBar = fragmentView.findViewById(R.id.home_toolbar);
|
||||||
|
|
||||||
|
downloadQueue = new LinkedList<>();
|
||||||
|
|
||||||
SwipeRefreshLayout swipeRefreshLayout = fragmentView.findViewById(R.id.swiperefreshhome);
|
SwipeRefreshLayout swipeRefreshLayout = fragmentView.findViewById(R.id.swiperefreshhome);
|
||||||
swipeRefreshLayout.setOnRefreshListener(() -> {
|
swipeRefreshLayout.setOnRefreshListener(() -> {
|
||||||
initCards();
|
initCards();
|
||||||
|
|
@ -182,7 +178,7 @@ public class HomeFragment extends Fragment implements View.OnClickListener{
|
||||||
fab.setOnClickListener(this);
|
fab.setOnClickListener(this);
|
||||||
|
|
||||||
scrollView.setOnScrollChangeListener((view, x, y, oldX, oldY) -> {
|
scrollView.setOnScrollChangeListener((view, x, y, oldX, oldY) -> {
|
||||||
if( y > 500){
|
if(y > 500){
|
||||||
fab.show();
|
fab.show();
|
||||||
}else{
|
}else{
|
||||||
fab.hide();
|
fab.hide();
|
||||||
|
|
@ -246,9 +242,11 @@ public class HomeFragment extends Fragment implements View.OnClickListener{
|
||||||
}
|
}
|
||||||
|
|
||||||
uiHandler.post(() -> {
|
uiHandler.post(() -> {
|
||||||
addEndofResultsText();
|
|
||||||
shimmerCards.stopShimmer();
|
shimmerCards.stopShimmer();
|
||||||
shimmerCards.setVisibility(View.GONE);
|
shimmerCards.setVisibility(View.GONE);
|
||||||
|
if(resultObjects.size() > 1){
|
||||||
|
addEndofResultsText();
|
||||||
|
}
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
thread.start();
|
thread.start();
|
||||||
|
|
@ -327,7 +325,7 @@ public class HomeFragment extends Fragment implements View.OnClickListener{
|
||||||
|
|
||||||
if(m.find()){
|
if(m.find()){
|
||||||
type = "Video";
|
type = "Video";
|
||||||
if (inputQuery.contains("list=")) {
|
if (inputQuery.contains("playlist?list=")) {
|
||||||
type = "Playlist";
|
type = "Playlist";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -372,6 +370,11 @@ public class HomeFragment extends Fragment implements View.OnClickListener{
|
||||||
inputQuery = inputQuery.substring(8);
|
inputQuery = inputQuery.substring(8);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if(inputQuery.contains("&list=")){
|
||||||
|
el = inputQuery.split("&list=");
|
||||||
|
inputQuery = el[0];
|
||||||
|
}
|
||||||
|
|
||||||
Thread thread = new Thread(new Runnable(){
|
Thread thread = new Thread(new Runnable(){
|
||||||
private final String query;
|
private final String query;
|
||||||
{
|
{
|
||||||
|
|
@ -385,8 +388,8 @@ public class HomeFragment extends Fragment implements View.OnClickListener{
|
||||||
Log.e(TAG, e.toString());
|
Log.e(TAG, e.toString());
|
||||||
}
|
}
|
||||||
|
|
||||||
dbManager.addToResults(resultObjects);
|
|
||||||
createCard(resultObjects.get(0));
|
createCard(resultObjects.get(0));
|
||||||
|
dbManager.addToResults(resultObjects);
|
||||||
|
|
||||||
new Handler(Looper.getMainLooper()).post(() -> {
|
new Handler(Looper.getMainLooper()).post(() -> {
|
||||||
shimmerCards.stopShimmer();
|
shimmerCards.stopShimmer();
|
||||||
|
|
@ -540,7 +543,6 @@ public class HomeFragment extends Fragment implements View.OnClickListener{
|
||||||
if(viewIdName.contains("mp3") || viewIdName.contains("mp4")){
|
if(viewIdName.contains("mp3") || viewIdName.contains("mp4")){
|
||||||
Log.e(TAG, viewIdName);
|
Log.e(TAG, viewIdName);
|
||||||
String[] buttonData = viewIdName.split("##");
|
String[] buttonData = viewIdName.split("##");
|
||||||
downloadQueue = new LinkedList<>();
|
|
||||||
if(buttonData[0].equals("ALL")){
|
if(buttonData[0].equals("ALL")){
|
||||||
for (int i = 0; i < resultObjects.size(); i++){
|
for (int i = 0; i < resultObjects.size(); i++){
|
||||||
Video vid = findVideo(resultObjects.get(i).getVideoId());
|
Video vid = findVideo(resultObjects.get(i).getVideoId());
|
||||||
|
|
@ -554,6 +556,11 @@ public class HomeFragment extends Fragment implements View.OnClickListener{
|
||||||
downloadQueue.add(vid);
|
downloadQueue.add(vid);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (downloading) {
|
||||||
|
Toast.makeText(context, R.string.added_to_queue, Toast.LENGTH_LONG).show();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
startDownload(downloadQueue);
|
startDownload(downloadQueue);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
@ -587,11 +594,6 @@ public class HomeFragment extends Fragment implements View.OnClickListener{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (downloading) {
|
|
||||||
Toast.makeText(context, R.string.download_already_started, Toast.LENGTH_LONG).show();
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!isStoragePermissionGranted()) {
|
if (!isStoragePermissionGranted()) {
|
||||||
Toast.makeText(context, R.string.try_again_after_permission, Toast.LENGTH_LONG).show();
|
Toast.makeText(context, R.string.try_again_after_permission, Toast.LENGTH_LONG).show();
|
||||||
return;
|
return;
|
||||||
|
|
@ -608,6 +610,7 @@ public class HomeFragment extends Fragment implements View.OnClickListener{
|
||||||
|
|
||||||
if(type.equals("mp3")){
|
if(type.equals("mp3")){
|
||||||
request.addOption("--embed-thumbnail");
|
request.addOption("--embed-thumbnail");
|
||||||
|
request.addOption("--sponsorblock-remove", "all");
|
||||||
request.addOption("--postprocessor-args", "-write_id3v1 1 -id3v2_version 3");
|
request.addOption("--postprocessor-args", "-write_id3v1 1 -id3v2_version 3");
|
||||||
request.addOption("--add-metadata");
|
request.addOption("--add-metadata");
|
||||||
request.addOption("--no-mtime");
|
request.addOption("--no-mtime");
|
||||||
|
|
@ -616,6 +619,9 @@ public class HomeFragment extends Fragment implements View.OnClickListener{
|
||||||
|
|
||||||
clickedButton = linearLayout.findViewWithTag(id+"##mp3");
|
clickedButton = linearLayout.findViewWithTag(id+"##mp3");
|
||||||
}else if(type.equals("mp4")){
|
}else if(type.equals("mp4")){
|
||||||
|
request.addOption("--embed-thumbnail");
|
||||||
|
request.addOption("--sponsorblock-mark", "all");
|
||||||
|
request.addOption("--embed-subs", "");
|
||||||
request.addOption("-f", "bestvideo[ext=mp4]+bestaudio[ext=m4a]/best[ext=mp4]/best");
|
request.addOption("-f", "bestvideo[ext=mp4]+bestaudio[ext=m4a]/best[ext=mp4]/best");
|
||||||
|
|
||||||
clickedButton = linearLayout.findViewWithTag(id+"##mp4");
|
clickedButton = linearLayout.findViewWithTag(id+"##mp4");
|
||||||
|
|
@ -641,6 +647,7 @@ public class HomeFragment extends Fragment implements View.OnClickListener{
|
||||||
progressBar.setProgress(0);
|
progressBar.setProgress(0);
|
||||||
progressBar.setVisibility(View.GONE);
|
progressBar.setVisibility(View.GONE);
|
||||||
|
|
||||||
|
notificationManager.cancel(Integer.parseInt(App.DOWNLOAD_CHANNEL_ID));
|
||||||
download_notification.setContentText(getString(R.string.download_success))
|
download_notification.setContentText(getString(R.string.download_success))
|
||||||
.setSmallIcon(android.R.drawable.stat_sys_download_done)
|
.setSmallIcon(android.R.drawable.stat_sys_download_done)
|
||||||
.setLargeIcon(BitmapFactory.decodeResource(this.getResources(), android.R.drawable.stat_sys_download_done))
|
.setLargeIcon(BitmapFactory.decodeResource(this.getResources(), android.R.drawable.stat_sys_download_done))
|
||||||
|
|
|
||||||
|
|
@ -118,27 +118,27 @@ public class SettingsFragment extends PreferenceFragmentCompat {
|
||||||
String[] pieces = dataValue.split("/");
|
String[] pieces = dataValue.split("/");
|
||||||
|
|
||||||
int index = 1;
|
int index = 1;
|
||||||
String path = "/storage/";
|
StringBuilder path = new StringBuilder("/storage/");
|
||||||
if(pieces[0].equals("primary")){
|
if(pieces[0].equals("primary")){
|
||||||
path+="emulated/0/";
|
path.append("emulated/0/");
|
||||||
}else{
|
}else{
|
||||||
path+=pieces[0]+"/";
|
path.append(pieces[0]).append("/");
|
||||||
}
|
}
|
||||||
|
|
||||||
for(int i = index; i < pieces.length; i++){
|
for(int i = index; i < pieces.length; i++){
|
||||||
path = path + pieces[i] + "/";
|
path.append(pieces[i]).append("/");
|
||||||
}
|
}
|
||||||
|
|
||||||
Log.e("TEST", path);
|
Log.e("TEST", path.toString());
|
||||||
p.setSummary(path);
|
p.setSummary(path.toString());
|
||||||
SharedPreferences sharedPreferences = requireContext().getSharedPreferences("root_preferences", Activity.MODE_PRIVATE);
|
SharedPreferences sharedPreferences = requireContext().getSharedPreferences("root_preferences", Activity.MODE_PRIVATE);
|
||||||
SharedPreferences.Editor editor = sharedPreferences.edit();
|
SharedPreferences.Editor editor = sharedPreferences.edit();
|
||||||
switch (requestCode){
|
switch (requestCode){
|
||||||
case MUSIC_PATH_CODE:
|
case MUSIC_PATH_CODE:
|
||||||
editor.putString("music_path", path);
|
editor.putString("music_path", path.toString());
|
||||||
break;
|
break;
|
||||||
case VIDEO_PATH_CODE:
|
case VIDEO_PATH_CODE:
|
||||||
editor.putString("video_path", path);
|
editor.putString("video_path", path.toString());
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
editor.apply();
|
editor.apply();
|
||||||
|
|
@ -146,11 +146,11 @@ public class SettingsFragment extends PreferenceFragmentCompat {
|
||||||
|
|
||||||
private void updateYoutubeDL() {
|
private void updateYoutubeDL() {
|
||||||
if (updating) {
|
if (updating) {
|
||||||
Toast.makeText(getContext(), "Perditesimi eshte kerkuar nje here!", Toast.LENGTH_LONG).show();
|
Toast.makeText(getContext(), getString(R.string.ytdl_already_updating), Toast.LENGTH_LONG).show();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
Toast.makeText(getContext(), "Filloi Perditesimi", Toast.LENGTH_SHORT).show();
|
Toast.makeText(getContext(), getString(R.string.ytdl_updating_started), Toast.LENGTH_SHORT).show();
|
||||||
|
|
||||||
updating = true;
|
updating = true;
|
||||||
Disposable disposable = Observable.fromCallable(() -> YoutubeDL.getInstance().updateYoutubeDL(getContext()))
|
Disposable disposable = Observable.fromCallable(() -> YoutubeDL.getInstance().updateYoutubeDL(getContext()))
|
||||||
|
|
@ -159,10 +159,10 @@ public class SettingsFragment extends PreferenceFragmentCompat {
|
||||||
.subscribe(status -> {
|
.subscribe(status -> {
|
||||||
switch (status) {
|
switch (status) {
|
||||||
case DONE:
|
case DONE:
|
||||||
Toast.makeText(getContext(), "Perditesimi u krye me sukses!", Toast.LENGTH_LONG).show();
|
Toast.makeText(getContext(), getString(R.string.ytld_update_success), Toast.LENGTH_LONG).show();
|
||||||
break;
|
break;
|
||||||
case ALREADY_UP_TO_DATE:
|
case ALREADY_UP_TO_DATE:
|
||||||
Toast.makeText(getContext(), "Je ne versionin e fundit", Toast.LENGTH_LONG).show();
|
Toast.makeText(getContext(), getString(R.string.you_are_in_latest_version), Toast.LENGTH_LONG).show();
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
Toast.makeText(getContext(), status.toString(), Toast.LENGTH_LONG).show();
|
Toast.makeText(getContext(), status.toString(), Toast.LENGTH_LONG).show();
|
||||||
|
|
@ -170,8 +170,8 @@ public class SettingsFragment extends PreferenceFragmentCompat {
|
||||||
}
|
}
|
||||||
updating = false;
|
updating = false;
|
||||||
}, e -> {
|
}, e -> {
|
||||||
if(BuildConfig.DEBUG) Log.e(TAG, "Deshtim ne perditesim", e);
|
if(BuildConfig.DEBUG) Log.e(TAG, getString(R.string.ytdl_update_failed), e);
|
||||||
Toast.makeText(getContext(), "Deshtim ne perditesim", Toast.LENGTH_LONG).show();
|
Toast.makeText(getContext(), getString(R.string.ytdl_update_failed), Toast.LENGTH_LONG).show();
|
||||||
updating = false;
|
updating = false;
|
||||||
});
|
});
|
||||||
compositeDisposable.add(disposable);
|
compositeDisposable.add(disposable);
|
||||||
|
|
|
||||||
|
|
@ -203,12 +203,14 @@ public class YoutubeAPIManager {
|
||||||
while((line = reader.readLine()) != null){
|
while((line = reader.readLine()) != null){
|
||||||
responseContent.append(line);
|
responseContent.append(line);
|
||||||
}
|
}
|
||||||
|
reader.close();
|
||||||
|
|
||||||
json = new JSONObject(responseContent.toString());
|
json = new JSONObject(responseContent.toString());
|
||||||
if(json.has("error")){
|
if(json.has("error")){
|
||||||
throw new Exception();
|
throw new Exception();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
conn.disconnect();
|
||||||
}catch(Exception e){
|
}catch(Exception e){
|
||||||
Log.e(TAG, e.toString());
|
Log.e(TAG, e.toString());
|
||||||
}
|
}
|
||||||
|
|
@ -312,13 +314,12 @@ public class YoutubeAPIManager {
|
||||||
if(minutes.isEmpty()){
|
if(minutes.isEmpty()){
|
||||||
if(hours.isEmpty()){
|
if(hours.isEmpty()){
|
||||||
minutes = "0";
|
minutes = "0";
|
||||||
}else{
|
|
||||||
minutes = "00";
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
duration = minutes + ":" + seconds;
|
duration = minutes + ":" + seconds;
|
||||||
|
|
||||||
if(!hours.isEmpty()){
|
if(!hours.isEmpty()){
|
||||||
|
if(Integer.parseInt(minutes) < 10) minutes = "0" + minutes;
|
||||||
duration = hours + ":" + minutes + ":" + seconds;
|
duration = hours + ":" + minutes + ":" + seconds;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
5
app/src/main/res/drawable/ic_code.xml
Normal file
5
app/src/main/res/drawable/ic_code.xml
Normal file
|
|
@ -0,0 +1,5 @@
|
||||||
|
<vector android:height="24dp"
|
||||||
|
android:viewportHeight="24" android:viewportWidth="24"
|
||||||
|
android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android">
|
||||||
|
<path android:fillColor="?android:textColorPrimary" android:pathData="M9.4,16.6L4.8,12l4.6,-4.6L8,6l-6,6 6,6 1.4,-1.4zM14.6,16.6l4.6,-4.6 -4.6,-4.6L16,6l6,6 -6,6 -1.4,-1.4z"/>
|
||||||
|
</vector>
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
<vector android:height="24dp" android:tint="#00A6FF"
|
<vector android:height="24dp"
|
||||||
android:viewportHeight="24" android:viewportWidth="24"
|
android:viewportHeight="24" android:viewportWidth="24"
|
||||||
android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android">
|
android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android">
|
||||||
<path android:fillColor="@android:color/white" android:pathData="M20,2L8,2c-1.1,0 -2,0.9 -2,2v12c0,1.1 0.9,2 2,2h12c1.1,0 2,-0.9 2,-2L22,4c0,-1.1 -0.9,-2 -2,-2zM18,7h-3v5.5c0,1.38 -1.12,2.5 -2.5,2.5S10,13.88 10,12.5s1.12,-2.5 2.5,-2.5c0.57,0 1.08,0.19 1.5,0.51L14,5h4v2zM4,6L2,6v14c0,1.1 0.9,2 2,2h14v-2L4,20L4,6z"/>
|
<path android:fillColor="?android:textColorPrimary" android:pathData="M20,2L8,2c-1.1,0 -2,0.9 -2,2v12c0,1.1 0.9,2 2,2h12c1.1,0 2,-0.9 2,-2L22,4c0,-1.1 -0.9,-2 -2,-2zM18,7h-3v5.5c0,1.38 -1.12,2.5 -2.5,2.5S10,13.88 10,12.5s1.12,-2.5 2.5,-2.5c0.57,0 1.08,0.19 1.5,0.51L14,5h4v2zM4,6L2,6v14c0,1.1 0.9,2 2,2h14v-2L4,20L4,6z"/>
|
||||||
</vector>
|
</vector>
|
||||||
|
|
|
||||||
5
app/src/main/res/drawable/ic_update.xml
Normal file
5
app/src/main/res/drawable/ic_update.xml
Normal file
|
|
@ -0,0 +1,5 @@
|
||||||
|
<vector android:height="24dp"
|
||||||
|
android:viewportHeight="24" android:viewportWidth="24"
|
||||||
|
android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android">
|
||||||
|
<path android:fillColor="?android:textColorPrimary" android:pathData="M21,10.12h-6.78l2.74,-2.82c-2.73,-2.7 -7.15,-2.8 -9.88,-0.1c-2.73,2.71 -2.73,7.08 0,9.79s7.15,2.71 9.88,0C18.32,15.65 19,14.08 19,12.1h2c0,1.98 -0.88,4.55 -2.64,6.29c-3.51,3.48 -9.21,3.48 -12.72,0c-3.5,-3.47 -3.53,-9.11 -0.02,-12.58s9.14,-3.47 12.65,0L21,3V10.12zM12.5,8v4.25l3.5,2.08l-0.72,1.21L11,13V8H12.5z"/>
|
||||||
|
</vector>
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
<vector android:height="24dp" android:tint="#00A6FF"
|
<vector android:height="24dp"
|
||||||
android:viewportHeight="24" android:viewportWidth="24"
|
android:viewportHeight="24" android:viewportWidth="24"
|
||||||
android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android">
|
android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android">
|
||||||
<path android:fillColor="@android:color/white" android:pathData="M4,6L2,6v14c0,1.1 0.9,2 2,2h14v-2L4,20L4,6zM20,2L8,2c-1.1,0 -2,0.9 -2,2v12c0,1.1 0.9,2 2,2h12c1.1,0 2,-0.9 2,-2L22,4c0,-1.1 -0.9,-2 -2,-2zM12,14.5v-9l6,4.5 -6,4.5z"/>
|
<path android:fillColor="?android:textColorPrimary" android:pathData="M4,6L2,6v14c0,1.1 0.9,2 2,2h14v-2L4,20L4,6zM20,2L8,2c-1.1,0 -2,0.9 -2,2v12c0,1.1 0.9,2 2,2h12c1.1,0 2,-0.9 2,-2L22,4c0,-1.1 -0.9,-2 -2,-2zM12,14.5v-9l6,4.5 -6,4.5z"/>
|
||||||
</vector>
|
</vector>
|
||||||
|
|
|
||||||
|
|
@ -10,26 +10,10 @@
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="match_parent"
|
android:layout_height="match_parent"
|
||||||
android:orientation="vertical"
|
android:orientation="vertical"
|
||||||
android:id="@+id/history_big_linearlayout">
|
android:id="@+id/history_big_linearlayout"
|
||||||
|
android:layout_marginTop="?attr/actionBarSize">
|
||||||
|
|
||||||
<com.google.android.material.appbar.AppBarLayout
|
<androidx.swiperefreshlayout.widget.SwipeRefreshLayout
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
app:layout_constraintEnd_toEndOf="parent"
|
|
||||||
app:layout_constraintStart_toStartOf="parent"
|
|
||||||
app:layout_constraintTop_toTopOf="parent">
|
|
||||||
|
|
||||||
<com.google.android.material.appbar.MaterialToolbar
|
|
||||||
android:id="@+id/history_toolbar"
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="?attr/actionBarSize"
|
|
||||||
app:title="@string/history"
|
|
||||||
app:menu="@menu/history_menu"
|
|
||||||
/>
|
|
||||||
|
|
||||||
</com.google.android.material.appbar.AppBarLayout>
|
|
||||||
|
|
||||||
<androidx.swiperefreshlayout.widget.SwipeRefreshLayout
|
|
||||||
xmlns:android="http://schemas.android.com/apk/res/android"
|
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
android:id="@+id/swiperefresh"
|
android:id="@+id/swiperefresh"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
|
|
@ -117,4 +101,21 @@
|
||||||
android:visibility="invisible"
|
android:visibility="invisible"
|
||||||
app:srcCompat="@drawable/ic_go_up"/>
|
app:srcCompat="@drawable/ic_go_up"/>
|
||||||
|
|
||||||
|
<com.google.android.material.appbar.AppBarLayout
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
app:layout_constraintEnd_toEndOf="parent"
|
||||||
|
app:layout_constraintStart_toStartOf="parent"
|
||||||
|
app:layout_constraintTop_toTopOf="parent">
|
||||||
|
|
||||||
|
<com.google.android.material.appbar.MaterialToolbar
|
||||||
|
android:id="@+id/history_toolbar"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="?attr/actionBarSize"
|
||||||
|
app:title="@string/history"
|
||||||
|
app:menu="@menu/history_menu"
|
||||||
|
/>
|
||||||
|
|
||||||
|
</com.google.android.material.appbar.AppBarLayout>
|
||||||
|
|
||||||
</androidx.coordinatorlayout.widget.CoordinatorLayout>
|
</androidx.coordinatorlayout.widget.CoordinatorLayout>
|
||||||
|
|
@ -11,27 +11,9 @@
|
||||||
android:layout_height="match_parent"
|
android:layout_height="match_parent"
|
||||||
android:id="@+id/home_big_linearlayout"
|
android:id="@+id/home_big_linearlayout"
|
||||||
android:orientation="vertical"
|
android:orientation="vertical"
|
||||||
|
android:layout_marginTop="?attr/actionBarSize"
|
||||||
>
|
>
|
||||||
|
|
||||||
<com.google.android.material.appbar.AppBarLayout
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
app:layout_constraintEnd_toEndOf="parent"
|
|
||||||
app:layout_constraintStart_toStartOf="parent"
|
|
||||||
app:layout_constraintTop_toTopOf="parent">
|
|
||||||
|
|
||||||
<com.google.android.material.appbar.MaterialToolbar
|
|
||||||
android:id="@+id/home_toolbar"
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="?attr/actionBarSize"
|
|
||||||
app:title="@string/app_name"
|
|
||||||
app:menu="@menu/main_menu"
|
|
||||||
/>
|
|
||||||
|
|
||||||
</com.google.android.material.appbar.AppBarLayout>
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<androidx.swiperefreshlayout.widget.SwipeRefreshLayout
|
<androidx.swiperefreshlayout.widget.SwipeRefreshLayout
|
||||||
android:id="@+id/swiperefreshhome"
|
android:id="@+id/swiperefreshhome"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
|
|
@ -120,4 +102,20 @@
|
||||||
android:visibility="invisible"
|
android:visibility="invisible"
|
||||||
app:srcCompat="@drawable/ic_go_up"/>
|
app:srcCompat="@drawable/ic_go_up"/>
|
||||||
|
|
||||||
|
<com.google.android.material.appbar.AppBarLayout
|
||||||
|
android:id="@+id/home_appbarlayout"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content">
|
||||||
|
|
||||||
|
<com.google.android.material.appbar.MaterialToolbar
|
||||||
|
android:id="@+id/home_toolbar"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="?attr/actionBarSize"
|
||||||
|
app:layout_scrollFlags="scroll|enterAlways|snap"
|
||||||
|
app:title="@string/app_name"
|
||||||
|
app:menu="@menu/main_menu"
|
||||||
|
/>
|
||||||
|
|
||||||
|
</com.google.android.material.appbar.AppBarLayout>
|
||||||
|
|
||||||
</androidx.coordinatorlayout.widget.CoordinatorLayout>
|
</androidx.coordinatorlayout.widget.CoordinatorLayout>
|
||||||
|
|
@ -26,4 +26,10 @@
|
||||||
<string name="download_notification_channel_name">Shkarkimet e Skedarëve</string>
|
<string name="download_notification_channel_name">Shkarkimet e Skedarëve</string>
|
||||||
<string name="download_notification_channel_description">Njoftimi i cili tregon progresin e shkarkimeve te skedarëve audio dhe video</string>
|
<string name="download_notification_channel_description">Njoftimi i cili tregon progresin e shkarkimeve te skedarëve audio dhe video</string>
|
||||||
<string name="failed_making_directory">Dështim në krijimin e Direktorisë së re! :(</string>
|
<string name="failed_making_directory">Dështim në krijimin e Direktorisë së re! :(</string>
|
||||||
|
<string name="you_are_in_latest_version">Je ne versionin e fundit</string>
|
||||||
|
<string name="ytld_update_success">Perditesimi u krye me sukses!</string>
|
||||||
|
<string name="ytdl_update_failed">Deshtim ne perditesim</string>
|
||||||
|
<string name="added_to_queue">U vendos në rradhë!</string>
|
||||||
|
<string name="ytdl_already_updating">Duke u përditësuar. Prisni!</string>
|
||||||
|
<string name="ytdl_updating_started">Filloi Perditesimi</string>
|
||||||
</resources>
|
</resources>
|
||||||
|
|
@ -26,4 +26,10 @@
|
||||||
<string name="download_notification_channel_name">File Downloads</string>
|
<string name="download_notification_channel_name">File Downloads</string>
|
||||||
<string name="download_notification_channel_description">Notification that shows the download progress of audio and video files</string>
|
<string name="download_notification_channel_description">Notification that shows the download progress of audio and video files</string>
|
||||||
<string name="failed_making_directory">Failed to create the new Directory! :(</string>
|
<string name="failed_making_directory">Failed to create the new Directory! :(</string>
|
||||||
|
<string name="added_to_queue">Item added to the Queue!</string>
|
||||||
|
<string name="you_are_in_latest_version">You are at the latest version</string>
|
||||||
|
<string name="ytld_update_success">Updated Succesfully</string>
|
||||||
|
<string name="ytdl_update_failed">Failed Updating</string>
|
||||||
|
<string name="ytdl_already_updating">Updating in Progress! Please Wait!</string>
|
||||||
|
<string name="ytdl_updating_started">Updating Started</string>
|
||||||
</resources>
|
</resources>
|
||||||
|
|
|
||||||
|
|
@ -9,15 +9,18 @@
|
||||||
<PreferenceCategory app:title="@string/directories">
|
<PreferenceCategory app:title="@string/directories">
|
||||||
<Preference
|
<Preference
|
||||||
app:key="music_path"
|
app:key="music_path"
|
||||||
|
app:icon="@drawable/ic_music_downloaded"
|
||||||
app:title="@string/music_directory" />
|
app:title="@string/music_directory" />
|
||||||
<Preference
|
<Preference
|
||||||
app:key="video_path"
|
app:key="video_path"
|
||||||
|
app:icon="@drawable/ic_video_downloaded"
|
||||||
app:title="@string/video_directory" />
|
app:title="@string/video_directory" />
|
||||||
</PreferenceCategory>
|
</PreferenceCategory>
|
||||||
|
|
||||||
<PreferenceCategory app:title="@string/updating">
|
<PreferenceCategory app:title="@string/updating">
|
||||||
<Preference
|
<Preference
|
||||||
app:key="update"
|
app:key="update"
|
||||||
|
app:icon="@drawable/ic_update"
|
||||||
app:summary="@string/ytdl_update_hint"
|
app:summary="@string/ytdl_update_hint"
|
||||||
app:title="@string/update_ytdl" />
|
app:title="@string/update_ytdl" />
|
||||||
</PreferenceCategory>
|
</PreferenceCategory>
|
||||||
|
|
@ -27,6 +30,7 @@
|
||||||
|
|
||||||
<Preference
|
<Preference
|
||||||
app:key="rreth"
|
app:key="rreth"
|
||||||
|
app:icon="@drawable/ic_code"
|
||||||
app:summary="https://github.com/deniscerri/ytdlnis"
|
app:summary="https://github.com/deniscerri/ytdlnis"
|
||||||
app:title="@string/source_code">
|
app:title="@string/source_code">
|
||||||
<intent
|
<intent
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue