bonukai / mediatracker Goto Github PK
View Code? Open in Web Editor NEWSelf hosted media tracker for movies, tv shows, video games, books and audiobooks
License: MIT License
Self hosted media tracker for movies, tv shows, video games, books and audiobooks
License: MIT License
As the title states after adding a show, no metadata is added and throws errors in the logs
Updating: Dexter (last updated at: 2/16/2022, 6:45:00 AM)
error: insert into "season" ("description", "id", "isSpecialSeason", "numberOfEpisodes", "poster", "releaseDate", "seasonNumber", "title", "tmdbId", "tvShowId") values ($1, $2, $3, $4, $5, $6, $7, $8, $9, $10) returning "id" - null value in column "id" of relation "season" violates not-null constraint
at Parser.parseErrorMessage (/app/node_modules/pg-protocol/dist/parser.js:287:98)
at Parser.handlePacket (/app/node_modules/pg-protocol/dist/parser.js:126:29)
at Parser.parse (/app/node_modules/pg-protocol/dist/parser.js:39:38)
at Socket.<anonymous> (/app/node_modules/pg-protocol/dist/index.js:11:42)
at Socket.emit (node:events:526:28)
at addChunk (node:internal/streams/readable:324:12)
at readableAddChunk (node:internal/streams/readable:297:9)
at Socket.Readable.push (node:internal/streams/readable:234:10)
at TCP.onStreamRead (node:internal/stream_base_commons:190:23)
Updating: Dexter (last updated at: 2/16/2022, 6:45:00 AM)
error: insert into "season" ("description", "id", "isSpecialSeason", "numberOfEpisodes", "poster", "releaseDate", "seasonNumber", "title", "tmdbId", "tvShowId") values ($1, $2, $3, $4, $5, $6, $7, $8, $9, $10) returning "id" - null value in column "id" of relation "season" violates not-null constraint
at Parser.parseErrorMessage (/app/node_modules/pg-protocol/dist/parser.js:287:98)
at Parser.handlePacket (/app/node_modules/pg-protocol/dist/parser.js:126:29)
at Parser.parse (/app/node_modules/pg-protocol/dist/parser.js:39:38)
at Socket.<anonymous> (/app/node_modules/pg-protocol/dist/index.js:11:42)
at Socket.emit (node:events:526:28)
at addChunk (node:internal/streams/readable:324:12)
at readableAddChunk (node:internal/streams/readable:297:9)
at Socket.Readable.push (node:internal/streams/readable:234:10)
at TCP.onStreamRead (node:internal/stream_base_commons:190:23)
Updating: Dexter (last updated at: 2/16/2022, 6:45:00 AM)
error: insert into "season" ("description", "id", "isSpecialSeason", "numberOfEpisodes", "poster", "releaseDate", "seasonNumber", "title", "tmdbId", "tvShowId") values ($1, $2, $3, $4, $5, $6, $7, $8, $9, $10) returning "id" - null value in column "id" of relation "season" violates not-null constraint
at Parser.parseErrorMessage (/app/node_modules/pg-protocol/dist/parser.js:287:98)
at Parser.handlePacket (/app/node_modules/pg-protocol/dist/parser.js:126:29)
at Parser.parse (/app/node_modules/pg-protocol/dist/parser.js:39:38)
at Socket.<anonymous> (/app/node_modules/pg-protocol/dist/index.js:11:42)
at Socket.emit (node:events:526:28)
at addChunk (node:internal/streams/readable:324:12)
at readableAddChunk (node:internal/streams/readable:297:9)
at Socket.Readable.push (node:internal/streams/readable:234:10)
at TCP.onStreamRead (node:internal/stream_base_commons:190:23)
Updating: Dexter (last updated at: 2/16/2022, 6:45:00 AM)
error: insert into "season" ("description", "id", "isSpecialSeason", "numberOfEpisodes", "poster", "releaseDate", "seasonNumber", "title", "tmdbId", "tvShowId") values ($1, $2, $3, $4, $5, $6, $7, $8, $9, $10) returning "id" - null value in column "id" of relation "season" violates not-null constraint
at Parser.parseErrorMessage (/app/node_modules/pg-protocol/dist/parser.js:287:98)
at Parser.handlePacket (/app/node_modules/pg-protocol/dist/parser.js:126:29)
at Parser.parse (/app/node_modules/pg-protocol/dist/parser.js:39:38)
at Socket.<anonymous> (/app/node_modules/pg-protocol/dist/index.js:11:42)
at Socket.emit (node:events:526:28)
at addChunk (node:internal/streams/readable:324:12)
at readableAddChunk (node:internal/streams/readable:297:9)
at Socket.Readable.push (node:internal/streams/readable:234:10)
at TCP.onStreamRead (node:internal/stream_base_commons:190:23)
already updated to the latest docker image.
This happens with shows added via GUI or API, and multiple shows
regards
Faba
Hi,
I'm currently using the npm version on Windows and closing the server is as easy as closing the terminal. But my idea is to execute this on a Synology that doesn't have docker support, and there closing the terminal won't stop the server, so I don't know how to shutdown it, nor how to check the log.
So I was thinking that could be useful that the admin user have a "Management" section on the settings where we can shutdown / restart the server and check the log.
I did some more testing with in the docker container, but I looks like /assests
is not used
here is the volume config
volumes: ['/appdata/mediatracker/storage:/storage', '/appdata/mediatracker/assets:/assets']
I ended up with ~45Gb in /var/lib/docker/overlay2/
and /appdata/mediatracker/assets
is empty
Hi,
My "feature request" is that you create an issue where you write what things you have planned to avoid new issues that are already thought by you. This To do list should include IMO one disclaimer like "This list is only orientative and being on the list doesn't mean they will be added, and there is no more information about if/when than the already wrote here".
TMDB has an API for theatrical, digital and physical release dates. Those could be added to calendar and upcoming pages and notifications, with per user configuration
I didn't see anything in the API or UI
South Park just started season 25, but only the first 13 seasons show up.
Hi!
Is there any chance to support other languages like German maybe?
TMDB has German support. Maybe by using the API key???
And any chance by having game progress support?
Like GameTrack
https://gametrack.app/
or Games Tracker
https://gamestracking.com/
Thanks
Add comics, maybe from https://comicvine.gamespot.com/api
Add search by IMDb
, TMDB
, ISBN
, author
- for books and maybe more
Hi!
I have another feature request please:
What about the possibility of separating watched and unwatched content?
I find it not so clever to have everything in one overview:
I believe you'll loose focus and overview.
Also a "watchlist" with separated content would be great too!
It would be best to make this selectable by the settings.
What do you thing?
Cheers
URBANsUNITED
Implement API compatible with Trakt, so all tools using Trakt API could work with MediaTracker, just by changing base URL
Hello,
I just found this tool, and really like the idea of it, so I have been working to set it up with my other self-hosted services. I use Traefik 2.X as a reverse proxy for all of my HTTP services, and perform redirects to force it to HTTPS. This works pretty seamlessly for my other services once I have the certificates in place, but attempting the same steps with MediaTracker, I consistently receive a 404 page not found error. I have resorted to accessing directly via HTTP on a separately-mapped port, bypassing Traefik altogether, which I would like to undo as soon as I can get it working through a proxy.
I am not proficient in TypeScript, so perhaps I am missing a setting or capability that already exists, but is there a way to configure MediaTracker to accept a redirect from a reverse proxy?
Thanks!
networks:
frontend:
driver: bridge
internal: false
ipam:
config:
- subnet: 172.21.0.0/16
services:
traefik:
container_name: traefik
image: traefik:v2.5.3
restart: always
networks:
- frontend
command:
# Docker setup
- --providers.docker=true
- --providers.docker.exposedbydefault=false
- --providers.docker.network=frontend # Double-check that this is the actual name
- --providers.file.directory=/configuration/
- --providers.file.watch=true
# Entrypoints
- --entrypoints.entrypoint-http.address=:80
- --entrypoints.entrypoint-https.address=:443
# Global HTTP -> HTTPS Redirect
- --entrypoints.entrypoint-http.http.redirections.entrypoint.to=entrypoint-https
- --entrypoints.entrypoint-http.http.redirections.entrypoint.scheme=https
# Enable dashboard
- --api.dashboard=true
# Enable logging
- --log.filepath=/var/log/traefik.log
- --log.level=ERROR
labels:
# Dashboard
- traefik.enable=true
- traefik.http.routers.router-traefik.rule=Host(`traefik`)
- traefik.http.routers.router-traefik.entrypoints=entrypoint-https
- traefik.http.routers.router-traefik.tls=true
- traefik.http.routers.router-traefik.service=api@internal
ports:
- '80:80' # http
- '443:443' # https
volumes:
- /var/run/docker.sock:/var/run/docker.sock:ro
- ./certs:/certificates:ro
- ./generated/dyn-traefik.toml:/configuration/dyn-traefik.toml:ro # certificate paths specified here
- ./volumes/traefik/logs:/var/log
media-tracker:
container_name: media-tracker
image: bonukai/mediatracker:latest # @todo lock to specific version when available
restart: always
networks:
- frontend # Connect to routers and such for backup;
depends_on:
- traefik
environment:
LANG: en
TMDB_LANG: us
AUDIBLE_LANG: us
expose:
- 7481 # expose http port via Traefik
ports:
- 7481:7481 # @todo this is for debugging only, and should be removed
labels:
- traefik.enable=true
- traefik.http.routers.router-media-tracker.rule=Host(`media-tracker`)
- traefik.http.routers.router-media-tracker.entrypoints=entrypoint-https
- traefik.http.routers.router-media-tracker.tls=true
- traefik.http.routers.router-media-tracker.service=service-media-tracker
- traefik.http.services.service-media-tracker.loadbalancer.server.port=7481
volumes:
- ./volumes/media-tracker/assets:/assets # posters
- ./volumes/media-tracker/storage:/storage
After searching, it doesn’t matter what’s selected in the sorting dropdown, none of the options actually change anything. I only tested this for TV shows and books.
On a related note: The filters don’t make sense for some areas, e.g. "Next Airing" and "Unseen episodes count" for books.
Under "tv" (that's what I checked), if you change the default sort order from "last seen" to "title", and then go to another page, it's reset to "last seen" when you come back.
Also, sort by "title" is incorrect - I'm not sure how it's sorting but it's not by title.
Hi,
I've tried to use the date-fns localization as stated on their documentation to show the strings in the selected language.
In client/src/date.ts I've added:
import { da, de, en, es } from 'date-fns/locale'
(...)
return formatDistance(to, new Date(), { locale: es, addSuffix: true });
And it is showing in spanish as expected:
But I'm failing to get the sever language from lingui. I've tried copying the lingui access from Calendar.tsx, but it seems that it doesn't work that way. I never used typeScript before so I don't know how to continue, so I let you here my progress so maybe you can complete it.
- IGDB has a limit of 4 requests per second. Because of that IGDB API key is not provided with MediaTracker, it can be acquired here and set in #/settings/metadata-providers-credentials
Great notes/docs on how to get a key. I wasn't clear how to set the key. I'm not sure what #/settings/metadata-providers-credentials
is or where that is located.
I opened #64 which worked for me.
Thanks for making this available and easy to setup! :-)
There is only one release date, and the gaming platform is not included.
Air time on TMDB are not very accurate, for example, for Euphoria S02E05 its
6 February 2022, but on Trakt it's February 7, 2022 2:00 AM on HBO, just like on TV maze.
Import ratings, watchlist and lists from IMDb
Currently all entries in local database are individually updated, but TMDB has an API for all changes in the past 14 days which is much more efficient
Add import from Goodreads
Add Collection, just like in Trakt
Your TV show and movie collection — All owned items including Blu-rays, DVDs, and digital downloads.
I couldn't find a documentation on GitHub. Could you point me in the right direction?
Thanks
Faba
Sorry to bother you again but /api/watchlist
requires the mediaitemid
where can I find it?
thanks again
Faba
Add import from Simkl
This is not something I need but I was experimenting with trakt.tv, initial setup was very straight forward, great UI/design 👍 .
The list to import looked much smaller than than what I see in https://trakt.tv/users/clach04/history/episodes/ (missing titles) - I did the import anyway, and that appeared to work but:
I see an error in the Docker log:
C:\docker\mediatracker>docker image ls
REPOSITORY TAG IMAGE ID CREATED SIZE
bonukai/mediatracker latest 70726fc8bd32 14 hours ago 230MB
C:\docker\mediatracker>docker logs mediatracker
Running migrations
Already up to date
MediaTracker listening at http://-----------:7481
Updating metadata
Everything up to date
TypeError: Cannot read properties of undefined (reading 'id')
at /app/build/controllers/traktTvImport.js:181:227
at Array.map (<anonymous>)
at Array.<anonymous> (/app/build/controllers/traktTvImport.js:176:146)
I don't need this but if I can provide diagnostics let me know.
Hi!
Maybe it's on my side, but it is the only container which is unhealthy and has this issue:
curl: (7) Failed to connect to 127.0.0.1 port 7481 after 0 ms: Connection refused
Is it important? Is it fixable?
Taken from Portainer latest version btw.
My setup:
Btw. Website is not accessable on my iPhone. On the Mac using Chrome no issues, Safari doesn't work either! Only Chrome works
Thanks
URBANsUNITED
I am seeing the following error after updating the container this morning.
docker logs mediatracker -f
Running migrations
migration file "20220122003141_bigIntToFloat.js" failed
migration failed with error: DROP TABLE "mediaItem" - FOREIGN KEY constraint failed
/app/node_modules/knex/lib/dialects/better-sqlite3/index.js:39
const response = await statement.run(bindings);
^
SqliteError: DROP TABLE "mediaItem" - FOREIGN KEY constraint failed
at Client_BetterSQLite3._query (/app/node_modules/knex/lib/dialects/better-sqlite3/index.js:39:38)
at executeQuery (/app/node_modules/knex/lib/execution/internal/query-executioner.js:37:17)
at Client_BetterSQLite3.query (/app/node_modules/knex/lib/client.js:146:12)
at /app/node_modules/knex/lib/execution/transaction.js:363:24
at new Promise (<anonymous>)
at Client_BetterSQLite3.trxClient.query (/app/node_modules/knex/lib/execution/transaction.js:358:12)
at Runner.query (/app/node_modules/knex/lib/execution/runner.js:130:36)
at Runner.queryArray (/app/node_modules/knex/lib/execution/runner.js:224:21)
at Runner.queryArray (/app/node_modules/knex/lib/execution/runner.js:276:31)
at async client.transaction.connection (/app/node_modules/knex/lib/execution/runner.js:255:23)
Hi,
When you create a review, if other user go and try to review the same thing when opening the review dialog it will got the review that other user has already made instead an empty review.
Steps to replicate:
Expected on user B:
(I used another content because I don't know how to remove the score, pressing on the selected star doesn't seem to work).
BTW, how can I remove a score? I tried but didn't find out how to do so.
Hi,
I'm used to the Trakt and Filmaffinity review system of 10 points, and I would like to have an option for make that system as default on this server too in order to keep consistency between all the reviews.
Sorry, can't edit the topic.
Docker: Error while start up - Cannot find module '/app/build/src/index.js
should be the correct one.
Hi!
I've just pulled the latest docker image from Docker hub and get this error while start up:
Digest: e7fd119f3aec
node:internal/modules/cjs/loader:936
throw err;
^
Error: Cannot find module '/app/build/src/index.js'
at Function.Module._resolveFilename (node:internal/modules/cjs/loader:933:15)
at Function.Module._load (node:internal/modules/cjs/loader:778:27)
at Function.executeUserEntryPoint [as runMain] (node:internal/modules/run_main:77:12)
at node:internal/main/run_main_module:17:47 {
code: 'MODULE_NOT_FOUND',
requireStack: []
}
Node.js v17.4.0
Possibly enhancement, add option for free form notes to be attached to an entry. At the moment the only way to do this is to review and add some review text BUT if not been seen/reviewed this isn't an ideal workaround.
Hi!
Thank you for a nice application. I was trying your application via docker and found two bugs regarding settings in the application.
I'm not able to disable registration or change password.
Typically I prefer to wait until a season is finished before starting to watch, and use apps similar to this (though less featured) to alert me when the new season starts/finishes. Having the ability to mark the entire season as viewed is much more convenient than having to mark each episode.
Add iCal calendar links
Audiobooks on Audible can have different ID on different domains. For example Endurance: Shackleton's Incredible Voyage on .com has id B002V9ZA6C, but on .co.uk it's B004FTKYIK, and other books may only be on one of the Audible versions
Add custom lists, like in Trakt
Hi,
What's intended to show on the calendar? I have several books and movies marked as "Seen" but the seen dates don't appear on the calendar.
Hi!
Would it be possibel to add a progress indicator for games please?
A bar or % display, free chooseable or with presettings like 0%, 25%, 50%, 75%, 100% and Hours used to play so far?!?
For TV & Movies it would be nice to have an overview about your watch hours in total for each (TV & Movies). I believe Trakt does something similar. The runtime is for each available... so, why not? An total overview on the home screen, and for each on the specific site.
What do you think? Possible?
Many thanks in advance
URBANsUNITED
Please provide the steps to deploy MediaTracker in Heroku
This is a combination question and possible enhancement/feature request.
I love that searching can find things not in the local database, I love the (multiple) seen history support and reviewing mechanism.
I'm a little confused on "watchlist". At first I thought this was an intent to watch, i.e. add tothe list of things I want to view/read/play BUT "Continue watching" shows things in the watch list.
Is there a way to:
For games, books, and audio books consuming is likely to be a longer process. It's not impossible for a movie to take multiple days but unlikely :-) Similar for a TV episode, but a TV series would be something that would be in process for a while.
I'd like to distinguish between:
There are config settings:
DATABASE_PATH
for sqlite3 onlyDATABASE_DATABASE
potentially could remove the path setting and expect the database name to include path in config. This has the potential to be easier/less config ... there are arguments to be made for the reverse ;)
There appears to be a limit to the number of episodes you can mark as seen. For instance, with Saturday Night Live (SNL), on the popup of "What is the last episode you seen?", if you pick the current season/episode (42/3), nothing happens. If you select season 25, episode 20, those episodes will be marked as seen. I'm not sure why I can't mark all of the SNL episodes as seen, but without that ability, it messes up the home screen's "Next episode to watch" suggestions.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.