Giter VIP home page Giter VIP logo

plugin.video.filmfriend.de's Introduction

Filmfriend.de (Kodinerds) - plugin.video.filmfriend.de

General information

A plugin for KODI to play shows and movies from https://filmfriend.de

You need an account with a public library in order to access this service.

Install the addon

Releases and updates are available via the Kodinerds Addon Repo.

ZIP files for manual installation are available at the GitHub releases page.

Using the addon

Make sure you've installed the Widevine CDM library (e.g. from the settings of the "InputStream Helper" addon).

Before playing videos or accessing your personal watchlist, please use the "Login" function in the settings of this addon.

Misc

Forked from v1.0.0 of https://github.com/xbmc/repo-plugins/tree/matrix/plugin.video.filmfriend by sarbes.

plugin.video.filmfriend.de's People

Contributors

ingo-fp-angel avatar

Stargazers

Sebastian Voigt avatar  avatar

Watchers

 avatar  avatar

plugin.video.filmfriend.de's Issues

Support VÖBB (Berlin)

VÖBB (Berlin) uses a different auth flow than most/all other libraries and currently is not supported.

As I don't have an account with VÖBB, I can't test if my changes work and maybe will also need some help during development/reverse engineering their auth flow.

Login issues with additional age confirmation page

I try to set-up the software for my kids and during the login procedure the plug-in stops with an unknown error.

During the (web) login procedure there is an additional screen which asks to confirm the data transfer of the age. I suspect this could be the issue:

Screenshot_20240104_100144

Playing episodes of a series is not possible

In v1.0.3 it is not possible to play single episodes (only movies work).

From the exception in the log it looks like the result of requests.get(f'https://api.tenant.frontend.vod.filmwerte.de/v11/{lm4utils.getSetting("tenant")}/movies/{videoId}/uri',headers=headers) is not proper JSON

Or maybe the movies part of the URL is wrong

Add some kind of setup-wizard

When the addon is started for the first time it would be nice if the user could be taken to the login procedure right away.

Login using Shibboleth and via IP not working

When I was trying to login to filmfriend using my credentials for the "Universität Mannheim", I got the following error:

error <general>: EXCEPTION Thrown (PythonToCppException) : -->Python callback/script returned the following error<--
- NOTE: IGNORING THIS CAN LEAD TO MEMORY LEAKS!
Error Type: <class 'KeyError'>
Error Contents: 'location'
Traceback (most recent call last):
  File "/Users/mechnich/Library/Application Support/Kodi/addons/plugin.video.filmfriend.de/default.py", line 52, in <module>
    login.pick()
  File "/Users/mechnich/Library/Application Support/Kodi/addons/plugin.video.filmfriend.de/resources/lib/login.py", line 175, in pick
    firstRedirectUrl = response.headers['Location']
                       ~~~~~~~~~~~~~~~~^^^^^^^^^^^^
File "/Users/mechnich/Library/Application Support/Kodi/addons/script.module.requests/lib/requests/structures.py", line 52, in __getitem__
  return self._store[key.lower()][1]
         ~~~~~~~~~~~^^^^^^^^^^^^^
KeyError: 'location'
-->End of Python script error report<--

After looking at the code it seems that login via Shibboleth is not supported (and probably also not that easy to implement). However, my university also supports login via IP if the host uses the university's network.

Unfortunately, at least in this case, sign in via IP is listed as a delegated login method and external takes precedence.

It would already be helpful if it was possible to explicitly select one of the login methods during login.

The following is the provider info for the "Universität Mannheim" (tenant id bffebeed-05f8-40bf-937d-aeada3e8a2b7):

{
  'local': None,
  'delegated': [
    {
      'provider': 'ff4da517-dd2a-4c50-936d-f38d155cc242',
      'displayName': 'Sign in via IP',
      'providerKind': 'Ip',
      'information': 'Sign in via IP',
      'userNameKind': None
    }
  ],
  'external': [
    {
      'provider': '15647c4b-2f6e-45c1-9643-c3c8e9ab17d1',
      'displayName': 'Sign in via Shibboleth',
      'providerKind': 'Shibboleth'
    }
  ]
}

Make the plugin work with Austrian and Swiss libraries

The library selection for login only contains German libraries at the moment.

In order to support the libraries from Austria and Switzerland a country selector needs to be added as the first step of the login procedure.
Hopefully the rest stays the same.

Handle re-authentication

Not yet sure when exactly this is happening, but after a while, HTTP calls run into a 401 Unauthorized error.
In the UI this results in a generic error message that says to check the log file.

Ideally the authentication would get refreshed automatically.
If that's not possible, at the least the message should be changed to tell users to log in again (which fixes the problem).

CVideoPlayer::OpenInputStream - error opening [plugin://plugin.video.filmfriend.de/...

I was delighted when I read your fork also supports Austrian libraries. I was able to login, but can not seem to play any video. I'm not sure if the issue lies in the plugin itself or if there is a different issue. Is it possible to turn on debuggin to get more information?

I've tried 1.0.11 and 1.0.12-beta-1

Widevine CDM is version 4.10.2710.0

Here's the log-output, which doesn't help much I guess:

2024-07-07 11:08:06.820 T:459408    info <general>: VideoPlayer::OpenFile: plugin://plugin.video.filmfriend.de/?mode=playVideo&video=e0c1d49d-96a7-44e3-97b3-dc65555a711c
2024-07-07 11:08:06.821 T:10375    info <general>: Creating InputStream
2024-07-07 11:08:06.821 T:10375   error <general>: IAddonInstanceHandler::CreateInstance: inputstream.adaptive returned bad status "Permanent failure" during instance creation
2024-07-07 11:08:06.821 T:10375   error <general>: CVideoPlayer::OpenInputStream - error opening [plugin://plugin.video.filmfriend.de/?mode=playVideo&video=e0c1d49d-96a7-44e3-97b3-dc65555a711c]
2024-07-07 11:08:06.821 T:10375    info <general>: CVideoPlayer::OnExit()
2024-07-07 11:08:06.952 T:459408    info <general>: CVideoPlayer::CloseFile()
2024-07-07 11:08:06.952 T:459408    info <general>: VideoPlayer: waiting for threads to exit
2024-07-07 11:08:06.952 T:459408    info <general>: VideoPlayer: finished waiting
2024-07-07 11:08:11.824 T:459432    info <general>: JSONRPC Server: Disconnection detected
2024-07-07 11:08:11.966 T:459432    info <general>: JSONRPC Server: New connection added
2024-07-07 11:08:37.121 T:459432    info <general>: JSONRPC Server: Disconnection detected

Properly oder the episodes of a season

While watching a series I noticed that the episodes were not sorted in the proper order. Also the episode title didn't contain an episode number so I had to look up the right order elsewhere.

The default ordering should be by episode number.

PyO3 modules may only be initialized once per interpreter process

Depending on the version of the Python "cryptography" module (used by pyjwt) loading the plugin fails with the following error message in the log

PyO3 modules may only be initialized once per interpreter process

A workaround is to not use pyjwt for checking access token expiry by editing jsonparser.py

  • comment out import pyjwt as jwt
  • add a return statement as first line in method _checkTokenExpired()

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.