Giter Site home page Giter Site logo

bonukai / mediatracker Goto Github PK

View Code? Open in Web Editor NEW
560.0 560.0 23.0 13.73 MB

Self hosted media tracker for movies, tv shows, video games, books and audiobooks

License: MIT License

Dockerfile 0.31% HTML 0.07% TypeScript 98.91% CSS 0.22% JavaScript 0.31% Shell 0.03% SCSS 0.15%

mediatracker's People

Contributors

bancrash avatar bonukai avatar clach04 avatar dependabot[bot] avatar gardebreak avatar gitter-badger avatar jonkristian avatar mathmaniac43 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

mediatracker's Issues

Metadata not updating after adding Show

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

Add management server settings

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.

/assests not used in docker

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

Idea: Share your Todo List with a disclaimer

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".

Bugs: Text not readable TV episodes overview & Genres are incorrect

Hi!

As written above,
the text in the episodes overview is unreadable and the text "Genres" is not correct:

Bildschirmfoto 2022-02-06 um 11 11 32

The text is there, but only seeable by marking:

Bildschirmfoto 2022-02-06 um 11 15 48

I am using Chrome, normally Safari too, but here I can't open the page. Will investigate later... On the iPhone page works.

Bildschirmfoto 2022-02-06 um 11 10 46

Better search

Add search by IMDb, TMDB, ISBN, author - for books and maybe more

Feature Request: Possibility of separating watched and unwatched content

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:

Bildschirmfoto 2022-02-09 um 13 28 14

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

Trakt compatible API

Implement API compatible with Trakt, so all tools using Trakt API could work with MediaTracker, just by changing base URL

Cannot Access Via Reverse Proxy

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

Sorting does not work for searches

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.

Sort order incorrect and not maintained

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.

Use translated dates from date-fns localization

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:
image

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 doc settings

  • 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! :-)

Collection

Add Collection, just like in Trakt

Your TV show and movie collection — All owned items including Blu-rays, DVDs, and digital downloads.

API Documentation?

I couldn't find a documentation on GitHub. Could you point me in the right direction?

Thanks

Faba

where to find mediaitemid?

Sorry to bother you again but /api/watchlist requires the mediaitemid where can I find it?
thanks again
Faba

trakt.tv import errors

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:

  • seen history missing on a number of episodes
  • no ratings imported

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.

Unhealthy Container: curl: (7) Failed to connect to 127.0.0.1 port 7481 after 0 ms: Connection refused

Hi!

Maybe it's on my side, but it is the only container which is unhealthy and has this issue:
Bildschirmfoto 2022-02-09 um 09 37 05

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:

Bildschirmfoto 2022-02-09 um 09 40 20

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

migration failed with error: DROP TABLE "mediaItem" - FOREIGN KEY constraint failed

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)

Reviews from other users are showed as your own

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:

  • Create a review on userA for B content including score.
  • Go with userB to the same content, and press on the star.
  • You will get a filled dialog instead and empty dialog.

Expected on user B:
image
(I used another content because I don't know how to remove the score, pressing on the selected star doesn't seem to work).

What is really on user B:
image

BTW, how can I remove a score? I tried but didn't find out how to do so.

Add a setting for change to 10 stars review system

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.

Docker: Error while start up - Cannot find module '/app/build/src/index.js

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

Support for notes?

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.

Can't save settings

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.

Mark Season as watched

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.

Feature Request: Progress for Games & for movies and TV - how many hours have you watched yet

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

Model question

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:

  • mark something as, "I want to watch this, at some point"
  • mark something as, "I'm currently watching/read/playing/listening"

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:

  • what do I want to watch
  • what am I currently in process

simplification idea

There are config settings:

  • DATABASE_PATH for sqlite3 only
  • DATABASE_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 ;)

Add to Seen History (Mark As Seen) Doesn't Work With All TV Shows

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.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.