mirror of
https://github.com/jesperh1/view-youtube-dislike.git
synced 2025-05-17 01:38:17 +01:00
Compare commits
2 Commits
Author | SHA1 | Date | |
---|---|---|---|
789c7e3d28 | |||
265dd88054 |
@ -1,4 +1,11 @@
|
|||||||
# Show Youtube Dislikes
|
# Show Youtube Dislikes
|
||||||
|
|
||||||
|
## Installation
|
||||||
|
[F-Droid](https://f-droid.org/en/packages/com.jesperh.showyoutubedislikes/)
|
||||||
|
|
||||||
|
[APK](https://github.com/jesperbakhandskemager/view-youtube-dislike/releases/latest)
|
||||||
|
|
||||||
|
## Description
|
||||||
Bring back Youtube Dislikes for Android
|
Bring back Youtube Dislikes for Android
|
||||||
|
|
||||||
This is a simple application, that parses the data from the "returnyoutubedislike.com" API, and shows you their estimate dislike count on videos.
|
This is a simple application, that parses the data from the "returnyoutubedislike.com" API, and shows you their estimate dislike count on videos.
|
||||||
|
@ -9,8 +9,8 @@ android {
|
|||||||
applicationId "com.jesperh.showyoutubedislikes"
|
applicationId "com.jesperh.showyoutubedislikes"
|
||||||
minSdk 21
|
minSdk 21
|
||||||
targetSdk 32
|
targetSdk 32
|
||||||
versionCode 5
|
versionCode 10
|
||||||
versionName "0.4"
|
versionName "1.0.0"
|
||||||
|
|
||||||
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
|
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
|
||||||
}
|
}
|
||||||
@ -21,6 +21,7 @@ android {
|
|||||||
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
|
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
compileOptions {
|
compileOptions {
|
||||||
sourceCompatibility JavaVersion.VERSION_1_8
|
sourceCompatibility JavaVersion.VERSION_1_8
|
||||||
targetCompatibility JavaVersion.VERSION_1_8
|
targetCompatibility JavaVersion.VERSION_1_8
|
||||||
@ -33,6 +34,7 @@ dependencies {
|
|||||||
implementation 'com.google.android.material:material:1.4.0'
|
implementation 'com.google.android.material:material:1.4.0'
|
||||||
implementation 'androidx.constraintlayout:constraintlayout:2.1.2'
|
implementation 'androidx.constraintlayout:constraintlayout:2.1.2'
|
||||||
implementation 'com.android.volley:volley:1.2.0'
|
implementation 'com.android.volley:volley:1.2.0'
|
||||||
|
implementation 'com.squareup.picasso:picasso:2.8'
|
||||||
testImplementation 'junit:junit:4.+'
|
testImplementation 'junit:junit:4.+'
|
||||||
androidTestImplementation 'androidx.test.ext:junit:1.1.3'
|
androidTestImplementation 'androidx.test.ext:junit:1.1.3'
|
||||||
androidTestImplementation 'androidx.test.espresso:espresso-core:3.4.0'
|
androidTestImplementation 'androidx.test.espresso:espresso-core:3.4.0'
|
||||||
|
@ -11,8 +11,8 @@
|
|||||||
"type": "SINGLE",
|
"type": "SINGLE",
|
||||||
"filters": [],
|
"filters": [],
|
||||||
"attributes": [],
|
"attributes": [],
|
||||||
"versionCode": 5,
|
"versionCode": 10,
|
||||||
"versionName": "0.4",
|
"versionName": "1.0.0",
|
||||||
"outputFile": "app-release.apk"
|
"outputFile": "app-release.apk"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
|
@ -1,23 +1,38 @@
|
|||||||
package com.jesperh.showyoutubedislikes;
|
package com.jesperh.showyoutubedislikes;
|
||||||
|
|
||||||
|
import static android.content.ContentValues.TAG;
|
||||||
|
|
||||||
import androidx.appcompat.app.AppCompatActivity;
|
import androidx.appcompat.app.AppCompatActivity;
|
||||||
|
|
||||||
import android.app.AlertDialog;
|
import android.app.AlertDialog;
|
||||||
import android.content.DialogInterface;
|
import android.content.DialogInterface;
|
||||||
import android.content.Intent;
|
import android.content.Intent;
|
||||||
|
import android.graphics.Bitmap;
|
||||||
|
import android.graphics.BitmapFactory;
|
||||||
import android.net.Uri;
|
import android.net.Uri;
|
||||||
import android.os.Bundle;
|
import android.os.Bundle;
|
||||||
|
import android.util.Log;
|
||||||
import android.view.View;
|
import android.view.View;
|
||||||
|
import android.widget.ImageView;
|
||||||
import android.widget.TextView;
|
import android.widget.TextView;
|
||||||
import com.android.volley.Request;
|
import com.android.volley.Request;
|
||||||
import com.android.volley.RequestQueue;
|
import com.android.volley.RequestQueue;
|
||||||
import com.android.volley.toolbox.StringRequest;
|
import com.android.volley.toolbox.StringRequest;
|
||||||
import com.android.volley.toolbox.Volley;
|
import com.android.volley.toolbox.Volley;
|
||||||
|
import com.squareup.picasso.Picasso;
|
||||||
|
|
||||||
import org.json.JSONException;
|
import org.json.JSONException;
|
||||||
import org.json.JSONObject;
|
import org.json.JSONObject;
|
||||||
|
|
||||||
|
import java.io.BufferedInputStream;
|
||||||
|
import java.io.IOException;
|
||||||
|
import java.io.InputStream;
|
||||||
|
import java.net.MalformedURLException;
|
||||||
|
import java.net.URI;
|
||||||
|
import java.net.URL;
|
||||||
|
import java.net.URLConnection;
|
||||||
import java.text.DecimalFormat;
|
import java.text.DecimalFormat;
|
||||||
|
import java.util.concurrent.atomic.AtomicReference;
|
||||||
import java.util.regex.Pattern;
|
import java.util.regex.Pattern;
|
||||||
|
|
||||||
public class DisplayMessageActivity extends AppCompatActivity {
|
public class DisplayMessageActivity extends AppCompatActivity {
|
||||||
@ -115,6 +130,7 @@ public class DisplayMessageActivity extends AppCompatActivity {
|
|||||||
}
|
}
|
||||||
|
|
||||||
String FINAL_URL = API_BASE_URL + API_GET_VOTES_QUERY + VIDEO_ID;
|
String FINAL_URL = API_BASE_URL + API_GET_VOTES_QUERY + VIDEO_ID;
|
||||||
|
String oEmbedURL = "https://youtube.com/oembed?format=json&url=" + YouTubeLink;
|
||||||
|
|
||||||
// Define the text boxes
|
// Define the text boxes
|
||||||
final TextView textViewDislikes = (TextView) findViewById(R.id.YTDislikes);
|
final TextView textViewDislikes = (TextView) findViewById(R.id.YTDislikes);
|
||||||
@ -123,6 +139,9 @@ public class DisplayMessageActivity extends AppCompatActivity {
|
|||||||
final TextView textViewVideoLink = (TextView) findViewById(R.id.YTVideoLink);
|
final TextView textViewVideoLink = (TextView) findViewById(R.id.YTVideoLink);
|
||||||
final TextView textViewRatio = (TextView) findViewById(R.id.YTRatio);
|
final TextView textViewRatio = (TextView) findViewById(R.id.YTRatio);
|
||||||
|
|
||||||
|
final TextView videoTitle = (TextView) findViewById(R.id.videoTitle);
|
||||||
|
final ImageView ThumbnailView = (ImageView)findViewById(R.id.thumbnail_View);
|
||||||
|
|
||||||
StringRequest myRequest = new StringRequest(Request.Method.GET, FINAL_URL,
|
StringRequest myRequest = new StringRequest(Request.Method.GET, FINAL_URL,
|
||||||
response -> {
|
response -> {
|
||||||
try{
|
try{
|
||||||
@ -140,25 +159,48 @@ public class DisplayMessageActivity extends AppCompatActivity {
|
|||||||
volleyError -> ErrorDownloading()
|
volleyError -> ErrorDownloading()
|
||||||
// Toast.makeText(DisplayMessageActivity.this, volleyError.getMessage(), Toast.LENGTH_SHORT).show()
|
// Toast.makeText(DisplayMessageActivity.this, volleyError.getMessage(), Toast.LENGTH_SHORT).show()
|
||||||
);
|
);
|
||||||
|
|
||||||
|
StringRequest oEmbedRequest = new StringRequest(Request.Method.GET, oEmbedURL,
|
||||||
|
response -> {
|
||||||
|
try{
|
||||||
|
//Create a JSON object containing information from the API.
|
||||||
|
JSONObject myJsonObject = new JSONObject(response);
|
||||||
|
// Set video title
|
||||||
|
videoTitle.setText(myJsonObject.getString("title"));
|
||||||
|
|
||||||
|
// Set video thumbnail
|
||||||
|
String thumbnailUrl = myJsonObject.getString("thumbnail_url");
|
||||||
|
Picasso.get().load(thumbnailUrl).into(ThumbnailView);
|
||||||
|
} catch (JSONException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
},
|
||||||
|
volleyError -> ErrorDownloading()
|
||||||
|
// Toast.makeText(DisplayMessageActivity.this, volleyError.getMessage(), Toast.LENGTH_SHORT).show()
|
||||||
|
);
|
||||||
|
|
||||||
RequestQueue requestQueue = Volley.newRequestQueue(this);
|
RequestQueue requestQueue = Volley.newRequestQueue(this);
|
||||||
requestQueue.add(myRequest);
|
requestQueue.add(myRequest);
|
||||||
|
requestQueue.add(oEmbedRequest);
|
||||||
|
|
||||||
return "";
|
return "";
|
||||||
}
|
}
|
||||||
|
|
||||||
public void ErrorDownloading()
|
public void ErrorDownloading()
|
||||||
{
|
{
|
||||||
final TextView textViewDislikes = (TextView) findViewById(R.id.YTDislikes);
|
final TextView textViewDislikes = findViewById(R.id.YTDislikes);
|
||||||
final TextView textViewLikes = (TextView) findViewById(R.id.YTLikes);
|
final TextView textViewLikes = findViewById(R.id.YTLikes);
|
||||||
final TextView textViewViews = (TextView) findViewById(R.id.YTViews);
|
final TextView textViewViews = findViewById(R.id.YTViews);
|
||||||
final TextView textViewVideoLink = (TextView) findViewById(R.id.YTVideoLink);
|
final TextView textViewVideoLink = findViewById(R.id.YTVideoLink);
|
||||||
final TextView textViewRatio = (TextView) findViewById(R.id.YTRatio);
|
final TextView textViewRatio = findViewById(R.id.YTRatio);
|
||||||
|
final TextView videoTitle = findViewById(R.id.videoTitle);
|
||||||
|
|
||||||
textViewDislikes.setText("Error Downloading!");
|
textViewDislikes.setText("Error Downloading!");
|
||||||
textViewLikes.setText("Error Downloading!");
|
textViewLikes.setText("Error Downloading!");
|
||||||
textViewRatio.setText("Error Downloading!");
|
textViewRatio.setText("Error Downloading!");
|
||||||
textViewViews.setText("Error Downloading!");
|
textViewViews.setText("Error Downloading!");
|
||||||
textViewVideoLink.setText("Error Downloading!");
|
textViewVideoLink.setText("Error Downloading!");
|
||||||
|
textViewVideoLink.setText("Unknown Title");
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -160,4 +160,30 @@
|
|||||||
app:layout_constraintHorizontal_bias="0.0"
|
app:layout_constraintHorizontal_bias="0.0"
|
||||||
app:layout_constraintStart_toStartOf="parent"
|
app:layout_constraintStart_toStartOf="parent"
|
||||||
app:layout_constraintTop_toBottomOf="@+id/textView4" />
|
app:layout_constraintTop_toBottomOf="@+id/textView4" />
|
||||||
|
|
||||||
|
<TextView
|
||||||
|
android:id="@+id/videoTitle"
|
||||||
|
android:layout_width="294dp"
|
||||||
|
android:layout_height="47dp"
|
||||||
|
android:layout_marginStart="112dp"
|
||||||
|
android:layout_marginTop="16dp"
|
||||||
|
android:layout_marginEnd="78dp"
|
||||||
|
android:text="Title"
|
||||||
|
android:textColor="@android:color/primary_text_dark"
|
||||||
|
android:textSize="20sp"
|
||||||
|
app:layout_constraintEnd_toEndOf="parent"
|
||||||
|
app:layout_constraintStart_toStartOf="parent"
|
||||||
|
app:layout_constraintTop_toBottomOf="@+id/YTVideoLink" />
|
||||||
|
|
||||||
|
<ImageView
|
||||||
|
android:id="@+id/thumbnail_View"
|
||||||
|
android:layout_width="411dp"
|
||||||
|
android:layout_height="166dp"
|
||||||
|
android:layout_marginTop="13dp"
|
||||||
|
android:layout_marginBottom="8dp"
|
||||||
|
app:layout_constraintBottom_toTopOf="@+id/textView"
|
||||||
|
app:layout_constraintEnd_toEndOf="parent"
|
||||||
|
app:layout_constraintStart_toStartOf="parent"
|
||||||
|
app:layout_constraintTop_toBottomOf="@+id/videoTitle"
|
||||||
|
app:srcCompat="@mipmap/rydblogo" />
|
||||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
</androidx.constraintlayout.widget.ConstraintLayout>
|
@ -5,7 +5,7 @@ buildscript {
|
|||||||
mavenCentral()
|
mavenCentral()
|
||||||
}
|
}
|
||||||
dependencies {
|
dependencies {
|
||||||
classpath "com.android.tools.build:gradle:7.0.2"
|
classpath 'com.android.tools.build:gradle:7.1.3'
|
||||||
|
|
||||||
// NOTE: Do not place your application dependencies here; they belong
|
// NOTE: Do not place your application dependencies here; they belong
|
||||||
// in the individual module build.gradle files
|
// in the individual module build.gradle files
|
||||||
|
3
gradle/wrapper/gradle-wrapper.properties
vendored
3
gradle/wrapper/gradle-wrapper.properties
vendored
@ -1,7 +1,6 @@
|
|||||||
#Sat Jan 01 22:38:49 CET 2022
|
#Sat Jan 01 22:38:49 CET 2022
|
||||||
distributionBase=GRADLE_USER_HOME
|
distributionBase=GRADLE_USER_HOME
|
||||||
distributionUrl=https\://services.gradle.org/distributions/gradle-7.0.2-bin.zip
|
distributionUrl=https\://services.gradle.org/distributions/gradle-7.2-bin.zip
|
||||||
distributionPath=wrapper/dists
|
distributionPath=wrapper/dists
|
||||||
zipStorePath=wrapper/dists
|
zipStorePath=wrapper/dists
|
||||||
zipStoreBase=GRADLE_USER_HOME
|
zipStoreBase=GRADLE_USER_HOME
|
||||||
distributionSha256Sum=e996d452d2645e70c01c11143ca2d3742734a28da2bf61f25c82bdc288c9e637
|
|
||||||
|
Loading…
Reference in New Issue
Block a user