Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
80 commits
Select commit Hold shift + click to select a range
66accb2
update gradle config
red-coracle Jan 14, 2016
ebf336e
update gradle config again
red-coracle Jan 14, 2016
5eb29eb
If no results are found, search all languages
red-coracle Jan 25, 2016
3947b9a
Support shows with no English translation
red-coracle Jan 26, 2016
3041cd9
Add preference for language
red-coracle Jan 27, 2016
50e5d44
Add support for sorting seasons list in descending order
red-coracle Jan 14, 2016
f79f636
Use resource strings instead
red-coracle Jan 14, 2016
a56e448
Add support for archiving shows.
red-coracle Feb 13, 2016
a02dbf8
Hide add show action text in menu
red-coracle Nov 6, 2017
5f18cf1
Update build & lib versions
red-coracle Nov 6, 2017
4b89573
Update gradle plugin
red-coracle Nov 6, 2017
f0e10f8
If there are no results, try substituting & symbol
red-coracle Nov 6, 2017
82c4463
Upgrade to okhttp3
red-coracle Nov 6, 2017
64603a3
Update for new tvdb API
red-coracle Feb 26, 2018
2c3e790
Update libraries; minor fixes for crash prevention.
red-coracle Aug 17, 2018
f8cc4d4
Show progress notification when updating all shows.
red-coracle Aug 18, 2018
4608e7e
Request storage permissions on API 23+.
red-coracle Aug 18, 2018
28c419e
Maintenance update
red-coracle Nov 13, 2019
56402b1
Update version to 0.13.1
red-coracle Nov 13, 2019
f4a16ab
Maintenance update 2
red-coracle Dec 15, 2019
08fa81d
Fix NPE when series has no episodes
red-coracle Dec 16, 2019
4532e52
Remove duplicate dependency
red-coracle Dec 21, 2019
5e853d1
Update gradle to 6.0.1
red-coracle Dec 26, 2019
ecb60b6
Bump version to 0.13.2
red-coracle Dec 26, 2019
76f7292
Add fastlane metadata for F-Droid
red-coracle Jan 23, 2020
0410c4c
Rename java package to match applicationId (#14)
BenMartin94 Mar 18, 2020
b42fc41
Added filter for upcoming shows (#15)
Apr 5, 2020
a021aac
Fix App Crash From Null Return
Sahmwell Apr 5, 2020
3374796
Add language column to episodes table if it does not exist (#23)
red-coracle May 12, 2020
228f05b
Github Actions (#24)
red-coracle May 12, 2020
fb90452
Update dependencies
red-coracle May 13, 2020
b5710ee
Version 0.13.3
red-coracle May 17, 2020
e3b80f0
App strings reworked (#28)
comradekingu Sep 11, 2020
ca1c42b
Translations update from Weblate (#27)
weblate Sep 11, 2020
dbcb784
Updated translations from Weblate (#30)
weblate Sep 14, 2020
5aa920a
README reworked
comradekingu Sep 11, 2020
8afb438
Translations update from Weblate (#31)
weblate Oct 1, 2020
d051e82
Add build & translation badges
red-coracle Sep 29, 2020
34aec68
Update android/gradle dependencies
red-coracle Aug 22, 2020
3c6637e
Updated translations from Weblate
weblate Oct 3, 2020
77cae44
Add version information to AboutActivity
abirke Oct 4, 2020
b9a99e7
Updated translations from Weblate
weblate Oct 4, 2020
1537dd8
Use configured language when downloading shows (#38)
abirke Oct 17, 2020
793cc14
Updated translations from Weblate
weblate Oct 21, 2020
30a54db
Updated translations from Weblate
weblate Oct 27, 2020
0cb6f70
Updated translations from Weblate
weblate Nov 19, 2020
702f155
Version 0.13.4
red-coracle Nov 23, 2020
7392c99
Updated translations from Weblate
weblate Dec 16, 2020
97630c9
Updated translations from Weblate
weblate Feb 12, 2021
2a8e33f
Updated translations from Weblate
weblate Feb 28, 2021
57c7f90
Version 0.13.5
red-coracle Feb 28, 2021
12a3079
Fix queries with whitespace not yielding results
abirke Apr 15, 2021
3db99fb
Version 0.13.6
red-coracle Apr 19, 2021
b197f5a
Updated translations from Weblate
weblate Sep 4, 2021
4a78617
Update dependencies (#61)
red-coracle Oct 2, 2021
e69f23d
Only mark aired episodes of a season as watched
red-coracle Oct 2, 2021
39114d5
Improve search results (#63)
red-coracle Oct 2, 2021
b116965
Version 0.14.0
red-coracle Oct 2, 2021
4895233
Fix back button on season details
red-coracle Oct 17, 2021
4fb762b
Update R8 configuration
red-coracle Oct 5, 2021
13513d6
Make PendingIntent explicitly immutable
red-coracle Oct 25, 2021
22a052e
Version 0.14.1
red-coracle Oct 25, 2021
0abb9f5
Update badges (#75)
red-coracle Nov 15, 2021
07b0da3
New launcher icon (#76)
red-coracle Nov 15, 2021
79c256a
Use storage framework on API19+ (#74)
red-coracle Nov 15, 2021
49d4b2d
Version 0.15.0
red-coracle Nov 15, 2021
e47bac6
Do not request storage permission on API19+ (#77)
red-coracle Jan 20, 2022
5ac5156
Explain F-Droid Anti Feature
licaon-kter May 31, 2022
1bd8a7e
Update build (#82)
red-coracle Oct 1, 2022
a3c3d67
Request notification permission on Android 13+ (#83)
red-coracle Oct 1, 2022
75a0a40
Version 0.15.1 (#84)
red-coracle Oct 1, 2022
e1ec289
Add support for themed app icons
red-coracle Oct 13, 2022
5243850
Switch to TMDB as metadata provider (#85)
red-coracle Dec 4, 2022
d8c35f7
Don't insert TVDB ID when null/zero
red-coracle Mar 22, 2023
7d7073f
Update setup-java action
red-coracle Mar 22, 2023
85d9241
Version 0.16.0
red-coracle Mar 22, 2023
006e24d
Fix sorting in shows list (#103)
red-coracle Jun 1, 2023
da5ea3c
Update star and archive icons to be more visible (#106)
h4iku Feb 6, 2025
dfd52ef
Update actions configuration
red-coracle Feb 6, 2025
fac7e84
Version 0.16.1
red-coracle Feb 7, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
35 changes: 35 additions & 0 deletions .github/workflows/android.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
name: Android CI

on: [push, pull_request]

jobs:
test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Setup JDK
uses: actions/setup-java@v4
with:
distribution: 'temurin'
java-version: '17'
- name: Test with Gradle
run: ./gradlew test

build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Setup JDK
uses: actions/setup-java@v4
with:
distribution: 'temurin'
java-version: '17'
- name: Verify Gradle
uses: gradle/actions/wrapper-validation@v4
- name: Build with Gradle
run: ./gradlew build
- name: Upload APK
uses: actions/upload-artifact@v4
with:
name: app-debug
path: app/build/outputs/apk/standard/debug/app-standard-debug.apk
3 changes: 3 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,3 +1,6 @@
build/
.gradle/
local.properties
.idea/
*.iml
app/fdroid/
20 changes: 7 additions & 13 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,22 +1,16 @@
# Episodes
![GitHub Workflow Status (branch)](https://img.shields.io/github/workflow/status/red-coracle/episodes/Android%20CI/master?style=flat-square)
[![Translation status](https://img.shields.io/weblate/progress/episodes?style=flat-square)](https://hosted.weblate.org/engage/episodes/)
[![F-Droid Version](https://img.shields.io/f-droid/v/com.redcoracle.episodes?style=flat-square&color=%235183C0)](https://f-droid.org/en/packages/com.redcoracle.episodes)

Keep track of which episodes you've watched of your favourite TV shows.
Keep track of which episodes you've watched of your favourite shows.

TV Show information is supplied by TheTVDB.com.
This product uses the [TMDB](https://www.themoviedb.org) API but is not endorsed or certified by TMDB.

## Contributing

Contributions are very welcome. Please file bugs, fork the repository, and send pull requests.

If you'd like to buy me a beer you can send bitcoins to 149XkMSs84ZyzNMqiQeJLt5DbPru16amwA
Contributions are very welcome. Please file bugs, fork the repository, [translate](https://hosted.weblate.org/projects/episodes/) and send pull requests.

## License

Licensed under the [GPLv3](http://www.gnu.org/licenses/gpl-3.0.txt) or later.

## Google Play

<a href="https://play.google.com/store/apps/details?id=com.vindustries.episodes">
<img alt="Get it on Google Play"
src="https://developer.android.com/images/brand/en_generic_rgb_wo_60.png" />
</a>
Copylefted libre software licensed [GPLv3](http://www.gnu.org/licenses/gpl-3.0.txt)+.
83 changes: 60 additions & 23 deletions app/build.gradle
Original file line number Diff line number Diff line change
@@ -1,45 +1,82 @@
apply plugin: 'com.android.application'

android {
compileSdkVersion 21
buildToolsVersion "22.0.1"
def getCommitId = { ->
def gitOutput = new ByteArrayOutputStream()
exec {
commandLine 'git', 'rev-parse', '--short', 'HEAD'
standardOutput = gitOutput
}
return gitOutput.toString().trim()
}

android {
namespace 'com.redcoracle.episodes'
compileSdkVersion 33
defaultConfig {
applicationId "org.jamienicol.episodes"
minSdkVersion 11
targetSdkVersion 21
versionCode 11
versionName "0.11"
minSdkVersion 21
targetSdkVersion 33
versionCode 25
versionName "0.16.1"
buildConfigField "String", "TMDB_KEY", "\"1553d2e4fa2912fc0953305d4d3e7c44\""
buildConfigField "String", "GIT_COMMIT_ID", "\"${getCommitId()}\""
}
flavorDimensions "flavor"
productFlavors {
fdroid {
applicationId = "org.jamienicol.episodes"
}
playstore {
applicationId = "com.vindustries.episodes"
standard {
dimension "flavor"
applicationId = "com.redcoracle.episodes"
}
}
buildTypes {
debug {
applicationIdSuffix '.debug'
versionNameSuffix '-DEBUG'
multiDexEnabled true
}
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
minifyEnabled true
shrinkResources true
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
}
}
lintOptions {
lint {
abortOnError false
}
compileOptions {
sourceCompatibility = 1.8
targetCompatibility = 1.8
}
if (project.hasProperty('signingStoreLocation') &&
project.hasProperty('signingStorePassword') &&
project.hasProperty('signingKeyAlias') &&
project.hasProperty('signingKeyPassword')) {
println "Found sign properties in gradle.properties! Signing build…"

signingConfigs {
release {
storeFile file(signingStoreLocation)
storePassword signingStorePassword
keyAlias signingKeyAlias
keyPassword signingKeyPassword
}
}

buildTypes.release.signingConfig = signingConfigs.release
} else {
buildTypes.release.signingConfig = null
}
}

dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
compile 'com.android.support:support-v4:22.2.0'
compile 'com.android.support:appcompat-v7:22.2.0'
compile 'com.android.support:design:22.2.0'
compile 'com.android.support:recyclerview-v7:22.2.0'
compile 'com.squareup.okhttp:okhttp:2.1.0'
compile 'com.nostra13.universalimageloader:universal-image-loader:1.9.3'
implementation fileTree(include: ['*.jar'], dir: 'libs')
implementation 'androidx.appcompat:appcompat:1.4.2'
implementation 'androidx.legacy:legacy-support-v4:1.0.0'
implementation 'androidx.preference:preference:1.2.0'
implementation 'androidx.recyclerview:recyclerview:1.2.1'
implementation 'com.google.android.material:material:1.6.1'
implementation 'com.github.bumptech.glide:glide:4.14.1'
implementation 'com.uwetrottmann.tmdb2:tmdb-java:2.8.1'
implementation 'org.apache.commons:commons-collections4:4.4'
debugImplementation 'com.android.support:multidex:2.0.1'
annotationProcessor 'com.github.bumptech.glide:compiler:4.14.1'
}
26 changes: 20 additions & 6 deletions app/proguard-rules.pro
Original file line number Diff line number Diff line change
Expand Up @@ -9,9 +9,23 @@

# Add any project specific keep options here:

# If your project uses WebView with JS, uncomment the following
# and specify the fully qualified class name to the JavaScript interface
# class:
#-keepclassmembers class fqcn.of.javascript.interface.for.webview {
# public *;
#}
# Glide
-keep public class * implements com.bumptech.glide.module.GlideModule
-keep public class * extends com.bumptech.glide.module.AppGlideModule
-keep public enum com.bumptech.glide.load.ImageHeaderParser$** {
**[] $VALUES;
public *;
}

# TMDB
-keep class com.uwetrottmann.tmdb2.entities.** { *; }
-keep class com.uwetrottmann.tmdb2.enumerations.** { *; }

# OkHttp platform used only on JVM and when Conscrypt and other security providers are available.
-dontwarn okhttp3.internal.platform.**
-dontwarn org.conscrypt.**
-dontwarn org.bouncycastle.**
-dontwarn org.openjsse.**

# R8 said to add these
-dontwarn kotlin.coroutines.Continuation
6 changes: 6 additions & 0 deletions app/src/debug/res/mipmap-anydpi-v26/ic_launcher.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<adaptive-icon xmlns:android="http://schemas.android.com/apk/res/android">
<background android:drawable="@mipmap/ic_launcher_background" />
<foreground android:drawable="@mipmap/ic_launcher_foreground" />
<monochrome android:drawable="@mipmap/ic_launcher_foreground" />
</adaptive-icon>
Binary file modified app/src/debug/res/mipmap-hdpi/ic_launcher.png
100644 → 100755
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified app/src/debug/res/mipmap-mdpi/ic_launcher.png
100644 → 100755
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified app/src/debug/res/mipmap-xhdpi/ic_launcher.png
100644 → 100755
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified app/src/debug/res/mipmap-xxhdpi/ic_launcher.png
100644 → 100755
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added app/src/debug/res/mipmap-xxxhdpi/ic_launcher.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
29 changes: 8 additions & 21 deletions app/src/main/AndroidManifest.xml
Original file line number Diff line number Diff line change
@@ -1,18 +1,12 @@
<?xml version="1.0" encoding="utf-8"?>
<manifest
xmlns:android="http://schemas.android.com/apk/res/android"
package="org.jamienicol.episodes">
xmlns:android="http://schemas.android.com/apk/res/android">

<uses-permission
android:name="android.permission.ACCESS_NETWORK_STATE"/>
<uses-permission
android:name="android.permission.INTERNET"/>
<uses-permission
android:name="android.permission.READ_EXTERNAL_STORAGE"/>
<uses-permission
android:name="android.permission.RECEIVE_BOOT_COMPLETED"/>
<uses-permission
android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"/>
<uses-permission android:name="android.permission.POST_NOTIFICATIONS"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" android:maxSdkVersion="18" />

<application
android:name=".EpisodesApplication"
Expand All @@ -24,7 +18,8 @@
<activity
android:name=".MainActivity"
android:label="@string/app_name"
android:launchMode="singleTop">
android:launchMode="singleTop"
android:exported="true">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
Expand Down Expand Up @@ -71,14 +66,6 @@
android:label="" >
</activity>

<service
android:name=".services.AddShowService" >
</service>

<service
android:name=".services.RefreshShowService" >
</service>

<service
android:name=".AutoRefreshHelper$Service" >
</service>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,21 +15,30 @@
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/

package org.jamienicol.episodes;
package com.redcoracle.episodes;

import android.os.Bundle;
import android.support.v7.app.ActionBarActivity;
import android.view.MenuItem;
import android.widget.TextView;

import androidx.appcompat.app.AppCompatActivity;

public class AboutActivity
extends ActionBarActivity
extends AppCompatActivity
{
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);

setContentView(R.layout.about_activity);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);

TextView versionInfoView = findViewById(R.id.version_view);
versionInfoView.setText(
getBaseContext().getString(
R.string.version,
BuildConfig.VERSION_NAME,
BuildConfig.GIT_COMMIT_ID));
}

@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,18 +15,21 @@
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/

package org.jamienicol.episodes;
package com.redcoracle.episodes;

import android.content.Intent;
import android.os.Bundle;
import android.support.v4.app.FragmentTransaction;
import android.support.v7.app.ActionBarActivity;
import android.view.MenuItem;

import androidx.appcompat.app.AppCompatActivity;
import androidx.fragment.app.FragmentTransaction;

import com.redcoracle.episodes.tvdb.Show;

import java.util.List;
import org.jamienicol.episodes.tvdb.Show;

public class AddShowPreviewActivity
extends ActionBarActivity
extends AppCompatActivity
{
@Override
public void onCreate(Bundle savedInstanceState)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,24 +15,26 @@
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/

package org.jamienicol.episodes;
package com.redcoracle.episodes;

import android.content.Intent;
import android.database.Cursor;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;

import androidx.fragment.app.Fragment;

import com.redcoracle.episodes.services.AddShowTask;
import com.redcoracle.episodes.services.AsyncTask;
import com.redcoracle.episodes.tvdb.Show;

import java.text.DateFormat;
import java.util.Date;
import java.util.List;
import org.jamienicol.episodes.services.AddShowService;
import org.jamienicol.episodes.tvdb.Show;

public class AddShowPreviewFragment
extends Fragment
Expand Down Expand Up @@ -110,10 +112,6 @@ public boolean onOptionsItemSelected(MenuItem item) {
}

private void addShow() {
Intent intent = new Intent(getActivity(), AddShowService.class);
intent.putExtra("tvdbId", show.getId());
intent.putExtra("showName", show.getName());

getActivity().startService(intent);
new AsyncTask().executeAsync(new AddShowTask(show.getId(), show.getName(), show.getLanguage()));
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -15,17 +15,18 @@
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/

package org.jamienicol.episodes;
package com.redcoracle.episodes;

import android.content.Intent;
import android.os.Bundle;
import android.support.v4.app.FragmentTransaction;
import android.support.v7.app.ActionBarActivity;
import android.view.MenuItem;
import android.view.Window;

import androidx.appcompat.app.AppCompatActivity;
import androidx.fragment.app.FragmentTransaction;

public class AddShowSearchActivity
extends ActionBarActivity
extends AppCompatActivity
{
@Override
public void onCreate(Bundle savedInstanceState)
Expand Down
Loading