Movie Scout is a movie and series tracker based on TMDB. It focuses on What I want to watch now instead of Look what I have for you to watch apps.
Key Features:
- Stream Availability: Easily find out which streaming platforms host your favorite movies and series.
- Search and Organize: Quickly search, add, or remove titles from your list.
- Detailed Information: View essential details like posters, titles, brief descriptions, and more.
- User-Friendly Design: Enjoy a clean and intuitive interface designed for movie and TV enthusiasts.
Whether you’re keeping track of what to watch next or exploring new favorites, Movie Scout ensures you’re always in the know.
Discover. Track. Watch.
Download Movie Scout now and streamline your streaming experience!
To import titles from IMDB go to your Imdb account > Watchlist > Export
and Imdb account > Ratings > Export.
Download the CSV files from Exports and import them with the menu option Import From IMDB.
- Install Android Studio using snap:
sudo snap install android-studio --classic - Install flutter following this guide: Start building Flutter Android apps on Linux
- Add flutter path to .zshrc:
export PATH=$PATH:$HOME/workspace/devtools/flutter/bin - Run
flutter doctor --android-licensesto review and accept andriod licenses.
Got configuration steps from https://firebase.google.com/docs/crashlytics/get-started?platform=flutter
Project configuration at Firebase Movie Scout
Install Flutter Fire
dart pub global activate flutterfire_cli
Add its path to .zshrc
export PATH=$PATH":"$HOME/.pub-cache/bin
Login to Firebase
firebase login
Configure project
flutterfire configure
Select
✔ Select a Firebase project to configure your Flutter application with
- movie-scout-a6608 (MovieScout)
✔ Which platforms should your configuration support (use arrow keys & space to select)?
- android
- web
This process will generate the files:
google-services.json
firebase_options.dart
Useful .vscode/launch.json
{
// Use IntelliSense to learn about possible attributes.
// Hover to view descriptions of existing attributes.
// For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": [
{
"name": "MovieScout Web",
"request": "launch",
"type": "dart",
"program": "lib/main.dart",
"args": ["--web-port", "8080", "--device-id", "chrome"],
},
{
"name": "MovieScout Android",
"request": "launch",
"type": "dart",
"program": "lib/main.dart",
"args": ["--device-id", "RMX2001"]
}
]
}
Add "flutterMode": "profile" parameter for profiling.
On MovieScout Web parameter --web-port is important to set it as the one defined at the Authorized JavaScript origins
On MovieScout Android parameter --device-id set the desired device name.
Followed this guide: i18n|Flutter
Run flutter gen-l10n to update the i18n generated files.
The shared preferences are located at: ~/.local/share/com.xicra.moviescout folder.
Shared Preferences are not intended for huge data and a list of 1000 titles may reach 70MB which is even to much to hold in memory.
Isar was adopted beacuse its easy to use and has power enough for the kind of queries needed by the app.
NOTE: Each time TmdbTitle class changes its "Schema" i.e. the public attributes, the command dart run build_runner build has to be executed. It is also available running the script flutter_tool.sh with -i parameter
The flutter_launcher_icons tool is used to generate the icons for different platforms
The file used as the app logo is ./assets/logo-icon.png defined in the pubspec.yaml file under the flutter_launcher_icons section.
After updating the logo run: $ dart run flutter_launcher_icons
Get the API Read Access Token from The Movie DB API Settings
Create a file called .env in the root directory and add the key:
TMDB_API_RAT=apiReadAccessTokenGotFromTmdb
NOTICE! As stated in the TMDB API Documentation about Providers, the data source is JustWatch.
Images like tvshow_poster.png are created with Cool Text tool using FUN text style.
Use the shell script ./flutter_tool.sh to execute most used commands in the project.
Run ./flutter_tool.sh --help to view the tool options.
Setup this file in the path ./android:
-
key.properties
storePassword=(Stored in BitWarden with the name Android signing)
keyPassword=(Stored in BitWarden with the name Android signing)
keyAlias=upload
storeFile=/home/xcarol/workspace/moviescout/upload-keystore.jks (Stored in BitWarden with the name Android signing)
This attribute shuld be like this
buildTypes {
release {
signingConfig = signingConfigs.release
}
}
it is worth comparing it with the same Overmaps file to imitate it as much as possible.
- Create a new branch with the version number (e.g.
git checkout -b release/1.6.3) - In the pubspec.yaml file modify the last (build) number in version: 1.6.3+X by adding 1 to it.
- Commit changes, publish and merge the new branch to GitHub
- Got to GitHub Releases and create a new release:
- Click on Draft a new release
- Click on Tag button and copy the version number (e.g.
1.6.3+20) from the pubspec.yaml file and click on Create new tag - Click on Generate release notes and then click on Publish release
- Build the bundle
./flutter_tool.sh -d. - Go to: Create an internal test version crate a new version and upload the bundle (
./build/app/outputs/bundle/release/app-release.aab).
With the mobile connected and developer option Enable USB install ON
- Run
lsusbto see the Android device. - It will output something like
Bus 001 Device 005: ID 18d1:4ee2 Google Inc.we need the ID, usually the18d1. - Create or open the file /etc/udev/rules.d/51-android.rules and add
SUBSYSTEM=="usb", ATTR{idVendor}=="18d1", MODE="0666", GROUP="plugdev"
Check the ATTR{idVendor} corresponds with the ouput of lsusb.
- Give read permissions if the file didn't exist
sudo chmod a+r /etc/udev/rules.d/51-android.rules - Restart udev
sudo udevadm control --reload-rules
sudo udevadm trigger
Now the device should appear in the output of adb devices and debugger should be able to connect.