Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

error unmarshaling json: json trying to proxy xstream code supporting stream #160

Open
dancorrigan1 opened this issue Oct 24, 2023 · 56 comments

Comments

@dancorrigan1
Copy link

dancorrigan1 commented Oct 24, 2023

[GIN] 2023/10/24 - 11:17:25 | 500 | 107.502822ms | 192.168.1.111 | GET "/player_api.php?username=dan3&password=dan3"
Error #1: error unmarshaling json: json: invalid use of ,string struct tag, trying to unmarshal unquoted value into xtreamcodes.FlexInt

My command that works for other streams but fails for this one:

/usr/bin/nohup /usr/bin/iptv-proxy --port 8080--hostname myhost.com --xtream-user myuser --xtream-password mypass --xtream-base-url http://myiptvservice.xyz --user dan3 --password dan3

@Juancollado2003
Copy link

In my case is Error #1: json: cannot unmarshal array into Go struct field Series.episodes of type map[string][]xtream codes.Series Episode, very similar, I read that In the json the data structure is object[key]array, while in Go Data is map[key]struct.slice perhaps someone got a better explanation

@ademeo01
Copy link

I have the same problem as @dancorrigan1 on a provider that didn't give me any problems until a couple of days ago. Was anyone able to figure out what the problem was?

@achlyss-8
Copy link

Same mistake, has anyone found a solution?
The project seems dead :( and I can't find any alternatives

@achlyss-8
Copy link

@pierre-emmanuelJ What is the status of the project?

@pierre-emmanuelJ
Copy link
Owner

pierre-emmanuelJ commented Jul 11, 2024

It's an issue happening not on all providers, some provider returns a type as string other provider the same type as an Integer, that's why I created flexint type, I need to fix all of them to make your provider compatible with the project.

It's a bit a mess since xtream code API have no real standards or no longer maintained/versioned, being compatible with everyone on typed languages became chaotic!

I will try to find some time, as you can see I have less time for this hobby project, but I'll try

Otherwise, PR are welcome also 😃

Thanks a lot for your understanding

@achlyss-8
Copy link

It's an issue happening not on all providers, some provider returns a type as string other provider the same type as an Integer, that's why I created flexint type, I need to fix all of them to make your provider compatible with the project.

It's a bit a mess since xtream code API have no real standards or no longer maintained/versioned, being compatible with everyone on typed languages became chaotic!

I will try to find some time, as you can see I have less time for this hobby project, but I'll try

Otherwise, PR are welcome also 😃

Thanks a lot for your understanding

I've never done Go so I don't think I could do a fix myself.
But if you can find the time to look it would be great! If you need logs or anything for debugging, don't hesitate to ask me.

Thanks, have a nice day

@saulchristie
Copy link

Two different services of mine I use through iptv-proxy also started throwing this error in the last week.

@Juancollado2003
Copy link

My solution was to redirect all json to a lua script and use a single user pass to response

@coniman
Copy link

coniman commented Aug 12, 2024

My solution was to redirect all json to a lua script and use a single user pass to response

Hi, could you please explain us how to redirect JSON to Lua script, or just upload the updated code so we can make it work. Thanks!

@Juancollado2003
Copy link

Here is the lua file:

rewrite_by_lua_block {
local original_args = ngx.req.get_uri_args()
local user = original_args["username"]
local pass = original_args["password"]

    -- Realizar la sustitución específica
    if user == "t3st1" then
        user = "xt927nd062ndbf926fnfp"
        pass = "bj08653kpjf67bofhd568"
    end

    -- Construir una nueva cadena de consulta manteniendo otros parámetros
    local new_args = {}
    for key, value in pairs(original_args) do
        if key ~= "username" and key ~= "password" then
            new_args[key] = value
        end
    end
    new_args["username"] = user
    new_args["password"] = pass

    -- Actualizar los valores en la cadena de consulta
    ngx.req.set_uri_args(new_args)
}
proxy_pass http://iptv.server:2082;
resolver 1.1.1.1 ipv4=on;

@Juancollado2003
Copy link

Here is the location code:
location = /player_api.php {
include /etc/openresty/cp.lua;
include /usr/local/openresty/nginx/conf/proxy_pass.conf;
}

@Aeosium
Copy link

Aeosium commented Oct 12, 2024

Hi @Juancollado2003 , thanks for the code snippet, would you be ok to indicate where/how to apply this for the people less experience with go/lua? :)

To @pierre-emmanuelJ , it seems that this issue is one that is faced the most seen the number of comments (including #114 and #140 that seems to have been adressed by @jtdevops). It is clear it won't be possible to tackle all providers but could you point where you expect type issues to happen ? I am sure many people would be keen on looking into it and making PR but don't really know where/how to start in an effective manner.

Thanks in any case, this piece of code is very useful to get iptv behind gluetun and needs more visibility!

@coniman
Copy link

coniman commented Oct 12, 2024

Hi @Juancollado2003 , thanks for the code snippet, would you be ok to indicate where/how to apply this for the people less experience with go/lua? :)

To @pierre-emmanuelJ , it seems that this issue is one that is faced the most seen the number of comments (including #114 and #140 that seems to have been adressed by @jtdevops). It is clear it won't be possible to tackle all providers but could you point where you expect type issues to happen ? I am sure many people would be keen on looking into it and making PR but don't really know where/how to start in an effective manner.

Thanks in any case, this piece of code is very useful to get iptv behind gluetun and needs more visibility!

I agree with you, I don't know where to apply those patches. The best option would be for @Juancollado2003 to upload the modified files for us. I'm using docker, so creating a container with the files modified and ready to go would be amazing.

@Warbs816
Copy link

Thank you, @Juancollado2003, for providing the script. I needed to apply the script to location = /xmltv.php to avoid the same error. Because of how TiviMate works, it uses the Xtream API to dynamically fill in the username and password, regardless of what you enter. Therefore, I wrote a URL rewrite to change them back. Feels good to have TiviMate back!

If anyone needs help, please post your setups, and I'll do my best to assist, given my limited experience—you'll need OpenResty. I've pasted my configuration with private details removed below; you'll just need to replace the placeholders labeled "CHANGE" with your own details.

Lua file mapped to /usr/local/openresty/nginx/lua/cp.lua

rewrite_by_lua_block {
local original_args = ngx.req.get_uri_args()
local user = original_args["username"]
local pass = original_args["password"]

    if user == "CHANGE_proxy_username" then
        user = "CHANGE_iptv_username"
        pass = "CHANGE_iptv_password"
    end

    local new_args = {}
    for key, value in pairs(original_args) do
        if key ~= "username" and key ~= "password" then
            new_args[key] = value
        end
    end
    new_args["username"] = user
    new_args["password"] = pass

    ngx.req.set_uri_args(new_args)
}

proxy_pass http://CHANGE_your_iptv_provider:port;
resolver 1.1.1.1 ipv4=on;

Nginx.conf

worker_processes  1;

events {
    worker_connections  1024;
}

http {

    sendfile        on;
    keepalive_timeout  65;

    server {
        listen CHANGE_Openresty_port; 
        server_name CHANGE_Openresty_IP; 

		location ~ ^/(player_api\.php|xmltv\.php)$ {
			include /usr/local/openresty/nginx/lua/cp.lua;
	}
        
        location / {
		proxy_pass http://CHANGE_proxy_server_ip:port; 

			access_by_lua_block {
				local uri = ngx.var.request_uri

				uri = uri:gsub("CHANGE_iptv_username", "CHANGE_proxy_username") 
				uri = uri:gsub("CHANGE_iptv_password", "CHANGE_proxy_password")

				if uri ~= ngx.var.request_uri then
				return ngx.redirect(uri, ngx.HTTP_MOVED_PERMANENTLY)
				end
			}
		}
	}
}

TiviMate server address then becomes http://proxy_ip:openresty_listening_port

EPG url then becomes http://proxy_ip:openresty_listening_port/xmltv.php?username=proxy_username&password=proxy_pass

@jtdevops
Copy link

For everyone that is interested, I have forked the main project and added some enhancements that correct the EPG and VOD issues mentioned above.
I plan on creating Pull Requests to the original project within the next week or so, but in the meantime you can pull my fork of the project: https://github.com/jtdevops/iptv-proxy

@achlyss-8
Copy link

For everyone that is interested, I have forked the main project and added some enhancements that correct the EPG and VOD issues mentioned above.
I plan on creating Pull Requests to the original project within the next week or so, but in the meantime you can pull my fork of the project: https://github.com/jtdevops/iptv-proxy

Is it possible to install your fork with docker?

Thanks !

@coniman
Copy link

coniman commented Oct 17, 2024

Hi @jtdevops ! I've cloned your repo and ran it as docker compose, but unfortunately I'm having the same error Error #1: error unmarshaling json: json: invalid use of ,string struct tag, trying to unmarshal unquoted value into xtreamcodes.FlexInt. I don't know if I'm doing it wrong. Also I tried as @Warbs816 said, but I don't know how to install Openresty or how to run the proxy outside docker, just as a regular linux binary.

@jtdevops
Copy link

In order to use my fork you can build it the same way as the original project, you just need to use https://github.com/jtdevops/iptv-proxy instead of https://github.com/pierre-emmanuelJ/iptv-proxy

git clone https://github.com/jtdevops/iptv-proxy
cd iptv-proxy
docker-compose build
docker-compose up -d

In order to see the logs, you can also run:
docker-compose logs -f

Hope that helps.

@dancorrigan1
Copy link
Author

dancorrigan1 commented Oct 17, 2024 via email

@coniman
Copy link

coniman commented Oct 17, 2024

Thanks @jtdevops and @dancorrigan1
I've installed successfully on docker and on ubuntu server but still doesn't work, this is what I'm getting with the following docker-compose.yml:

version: "3"
services:
iptv-proxy:
build:
context: .
dockerfile: Dockerfile
volumes:
# If your are using local m3u file instead of m3u remote file
# put your m3u file in this folder
- ./iptv:/root/iptv
container_name: "iptv-proxy"
restart: on-failure
ports:
# have to be the same as ENV variable PORT
- 8080:8080
environment:
# Port to expose the IPTVs endpoints
PORT: 8080
# Hostname or IP to expose the IPTVs endpoints (for machine not for docker)
HOSTNAME: proxy
GIN_MODE: release
## Xtream-code proxy configuration
XTREAM_USER: XXX
XTREAM_PASSWORD: XXX
XTREAM_BASE_URL: "http://XXX:8080"
##### UNSAFE AUTH TODO ADD REAL AUTH
#will be used for m3u and xtream auth poxy
USER: TEST
PASSWORD: TEST

root@docker:~/test/iptv-proxy# docker compose logs -f
WARN[0000] /root/test/iptv-proxy/docker-compose.yml: version is obsolete
iptv-proxy | 2024/10/17 01:08:43 [iptv-proxy] Server is starting...
iptv-proxy | 2024/10/17 01:08:43 [iptv-proxy] Server is ready and listening on :8080
iptv-proxy | 2024/10/17 01:08:52 [iptv-proxy] 2024/10/17 - 01:08:52 | 192.168.1.100 | xtream cache m3u file
iptv-proxy | [GIN] 2024/10/17 - 01:08:52 | 500 | 307.930073ms | 192.168.1.100 | GET "/get.php?username=TEST&password=TEST&type=m3u_plus&output=ts"
iptv-proxy | Error #1: invalid m3u file format. Expected #EXTM3U file header
iptv-proxy | 2024/10/17 01:08:52 [iptv-proxy] 2024/10/17 - 01:08:52 | 192.168.1.100 | xtream cache m3u file
iptv-proxy | [GIN] 2024/10/17 - 01:08:53 | 500 | 284.717736ms | 192.168.1.100 | GET "/get.php?username=TEST&password=TEST&type=m3u_plus&output=ts"
iptv-proxy | Error #1: invalid m3u file format. Expected #EXTM3U file header

And this is what im getting when adding XTREAM_API_GET: 1 at the end of the docker-compose.yml

root@docker:~/test/iptv-proxy# docker compose logs -f
WARN[0000] /root/test/iptv-proxy/docker-compose.yml: version is obsolete
iptv-proxy | 2024/10/17 01:10:12 [iptv-proxy] Server is starting...
iptv-proxy | 2024/10/17 01:10:12 [iptv-proxy] Server is ready and listening on :8080
iptv-proxy | 2024/10/17 01:10:22 [iptv-proxy] 2024/10/17 - 01:10:22 | 192.168.1.100 | xtream cache API m3u file
iptv-proxy | [GIN] 2024/10/17 - 01:10:23 | 500 | 288.785635ms | 192.168.1.100 | GET "/get.php?username=TEST&password=TEST&type=m3u_plus&output=ts"
iptv-proxy | Error #1: error unmarshaling json: json: invalid use of ,string struct tag, trying to unmarshal unquoted value into xtreamcodes.FlexInt
iptv-proxy | 2024/10/17 01:10:23 [iptv-proxy] 2024/10/17 - 01:10:23 | 192.168.1.100 | xtream cache API m3u file
iptv-proxy | [GIN] 2024/10/17 - 01:10:23 | 500 | 265.049689ms | 192.168.1.100 | GET "/get.php?username=TEST&password=TEST&type=m3u_plus&output=ts"
iptv-proxy | Error #1: error unmarshaling json: json: invalid use of ,string struct tag, trying to unmarshal unquoted value into xtreamcodes.FlexInt

@jtdevops
Copy link

jtdevops commented Oct 17, 2024 via email

@coniman
Copy link

coniman commented Oct 17, 2024

Ok, thanks for the fast response. If you want I can provide you privately my IPTV provider credentials. My provider disabled the possibility of accessing the channel list via M3U, it is only possible to access via xtream api. I use TVHeadend as server and it doesn't accept Xtream, so my only option is to use the proxy to convert my providers list to M3U. I don't even have VOD, just live channels and EPG on very few channels. Thanks again @jtdevops !!!

@jtdevops
Copy link

jtdevops commented Oct 17, 2024 via email

@jtdevops
Copy link

I have also added some additional logging under the 'logging' branch. It also writes the IPTV Providers original responses to files for further inspection.

To use this branch, please either do:
git clone https://github.com/jtdevops/iptv-proxy
or
git fetch

Then switch to the logging branch:
git checkout logging

In order to see the saved files you will need to add a volume mount:

    volumes:
      - ./iptv:/root/iptv

The files will be under the iptv/cache folder.
Note: To turn off the logging or saving of files, change back to the 'master' branch:
git checkout master

Then build and (re)create the docker container:

docker-compose build
docker-compose up -d --force-recreate
docker-compose logs -f

@dancorrigan1
Copy link
Author

dancorrigan1 commented Oct 17, 2024 via email

@jtdevops
Copy link

@dancorrigan1 & @coniman,

I have updated the 'logging' branch, and also the 'master' branch. The only difference between them is that there is additional logging and saving of the IPTV Provider responses.
I believe I have fixed the issue that you found.

Let me know if it works for you.

@knilly
Copy link

knilly commented Oct 18, 2024

@jtdevops thanks for your improvements for debugging.
Sometime the proxy can't unmarshal the SeriesInfo because the episode data are unmapped like this:

{
  "seasons": [
    {
      "name": "Extras",
      "episode_count": 1,
      "overview": "images/noposter.jpg",
      "air_date": "2018-03-29",
      "cover": "images/noposter.jpg",
      "cover_tmdb": "images/noposter.jpg",
      "season_number": 0,
      "cover_big": "images/noposter.jpg",
      "releaseDate": "2018-03-29",
      "duration": 21
    },
    {
      "name": "Staffel 1",
      "episode_count": 10,
      "overview": "http://cdn.best-ott.me:80/images/series/dotaeVPgecuKXDCqQQHmpigrdwd_small.jpg",
      "air_date": "2017-01-26",
      "cover": "http://cdn.best-ott.me:80/images/series/dotaeVPgecuKXDCqQQHmpigrdwd_small.jpg",
      "cover_tmdb": "https://image.tmdb.org/t/p/w154/dotaeVPgecuKXDCqQQHmpigrdwd.jpg",
      "season_number": 1,
      "cover_big": "http://cdn.best-ott.me:80/images/series/dotaeVPgecuKXDCqQQHmpigrdwd_big.jpg",
      "releaseDate": "2017-01-26",
      "duration": 21
    },
    {
      "name": "Staffel 2",
      "episode_count": 10,
      "overview": "http://cdn.best-ott.me:80/images/series/uhM39m2cZ0nZE5M5DtCl2KCPBJo_small.jpg",
      "air_date": "2018-03-29",
      "cover": "http://cdn.best-ott.me:80/images/series/uhM39m2cZ0nZE5M5DtCl2KCPBJo_small.jpg",
      "cover_tmdb": "https://image.tmdb.org/t/p/w154/uhM39m2cZ0nZE5M5DtCl2KCPBJo.jpg",
      "season_number": 2,
      "cover_big": "http://cdn.best-ott.me:80/images/series/uhM39m2cZ0nZE5M5DtCl2KCPBJo_big.jpg",
      "releaseDate": "2018-03-29",
      "duration": 21
    },
    {
      "name": "Staffel 3",
      "episode_count": 10,
      "overview": "http://cdn.best-ott.me:80/images/series/kcYVcVbTin4RAzeKDQDIit3qnDD_small.jpg",
      "air_date": "2019-06-18",
      "cover": "http://cdn.best-ott.me:80/images/series/kcYVcVbTin4RAzeKDQDIit3qnDD_small.jpg",
      "cover_tmdb": "https://image.tmdb.org/t/p/w154/kcYVcVbTin4RAzeKDQDIit3qnDD.jpg",
      "season_number": 3,
      "cover_big": "http://cdn.best-ott.me:80/images/series/kcYVcVbTin4RAzeKDQDIit3qnDD_big.jpg",
      "releaseDate": "2019-06-18",
      "duration": 21
    },
    {
      "name": "Staffel 4",
      "episode_count": 11,
      "overview": "http://cdn.best-ott.me:80/images/series/mVyCVaqQtjCDU9nJkh9zNsm5XM2_small.jpg",
      "air_date": "2020-12-23",
      "cover": "http://cdn.best-ott.me:80/images/series/mVyCVaqQtjCDU9nJkh9zNsm5XM2_small.jpg",
      "cover_tmdb": "https://image.tmdb.org/t/p/w154/mVyCVaqQtjCDU9nJkh9zNsm5XM2.jpg",
      "season_number": 4,
      "cover_big": "http://cdn.best-ott.me:80/images/series/mVyCVaqQtjCDU9nJkh9zNsm5XM2_big.jpg",
      "releaseDate": "2020-12-23",
      "duration": 21
    },
    {
      "name": "Staffel 5",
      "episode_count": 10,
      "overview": "http://cdn.best-ott.me:80/images/series/FbVzHN4c9ivs4pnmhhYxshfGuR_small.jpg",
      "air_date": "2023-02-02",
      "cover": "http://cdn.best-ott.me:80/images/series/FbVzHN4c9ivs4pnmhhYxshfGuR_small.jpg",
      "cover_tmdb": "https://image.tmdb.org/t/p/w154/FbVzHN4c9ivs4pnmhhYxshfGuR.jpg",
      "season_number": 5,
      "cover_big": "http://cdn.best-ott.me:80/images/series/FbVzHN4c9ivs4pnmhhYxshfGuR_big.jpg",
      "releaseDate": "2023-02-02",
      "duration": 21
    }
  ],
  "info": {
    "name": "DE - jerks. (DE)",
    "cover": "https://image.tmdb.org/t/p/w154/u1JncmdwAUT3wPNaYRNW1ULQwjD.jpg",
    "plot": "Christian Ulmen und Fahri Yardim sind beste Freunde und lassen keine Peinlichkeit aus. Während sie versuchen, die Tücken des Alltags zu meistern, treten sie in jedes noch so große Fettnäpfchen, verursachen überall ein riesiges Chaos und stoßen immer wieder an moralische Grenzen.",
    "cast": "Christian Ulmen, Fahri Yardım, Leonore von Berg, Hendrik von Bültzingslöwen, Pheline Roggan, Collien Ulmen-Fernandes",
    "director": "Christian Ulmen, Casper Christensen, Frank Hvam",
    "genre": "Komödie",
    "releaseDate": "2017-01-26",
    "last_modified": 1689844120,
    "rating": 8,
    "rating_5based": 4,
    "backdrop_path": [],
    "tmdb": 69931,
    "youtube_trailer": "",
    "episode_run_time": 21,
    "category_id": 209,
    "category_ids": [
      209
    ]
  },
  "episodes": [
    [
      {
        "id": 459916,
        "episode_num": 1,
        "title": "DE - jerks. (DE) - S00E01 - Making Of",
        "container_extension": "mkv",
        "info": {
          "air_date": "2018-03-29",
          "rating": 0,
          "id": 69931,
          "movie_image": "https://image.tmdb.org/t/p/w185/ckkcJyn6fLfaPlQTJNTTSHKVE8Z.jpg",
          "duration_secs": 710,
          "duration": "00:11:50",
          "video": {
            "index": 0,
            "codec_name": "hevc",
            "codec_long_name": "unknown",
            "profile": 1,
            "codec_type": "video",
            "codec_tag_string": "[0][0][0][0]",
            "codec_tag": "0x0000",
            "width": 1920,
            "height": 1080,
            "coded_width": 1920,
            "coded_height": 1080,
            "closed_captions": 0,
            "film_grain": 0,
            "has_b_frames": 2,
            "sample_aspect_ratio": "1:1",
            "display_aspect_ratio": "16:9",
            "pix_fmt": "yuv420p",
            "level": 120,
            "color_range": "tv",
            "color_space": "bt709",
            "color_transfer": "bt709",
            "color_primaries": "bt709",
            "chroma_location": "left",
            "refs": 1,
            "r_frame_rate": "25/1",
            "avg_frame_rate": "25/1",
            "time_base": "1/1000",
            "start_pts": 5,
            "start_time": 0.005,
            "extradata_size": 2231,
            "disposition": {
              "default": 1,
              "dub": 0,
              "original": 0,
              "comment": 0,
              "lyrics": 0,
              "karaoke": 0,
              "forced": 0,
              "hearing_impaired": 0,
              "visual_impaired": 0,
              "clean_effects": 0,
              "attached_pic": 0,
              "timed_thumbnails": 0,
              "captions": 0,
              "descriptions": 0,
              "metadata": 0,
              "dependent": 0,
              "still_image": 0
            }
          },
          "audio": {
            "index": 1,
            "codec_name": "ac3",
            "codec_long_name": "unknown",
            "codec_type": "audio",
            "codec_tag_string": "[0][0][0][0]",
            "codec_tag": "0x0000",
            "sample_fmt": "fltp",
            "sample_rate": 48000,
            "channels": 2,
            "channel_layout": "stereo",
            "bits_per_sample": 0,
            "r_frame_rate": "0/0",
            "avg_frame_rate": "0/0",
            "time_base": "1/1000",
            "start_pts": 0,
            "start_time": 0,
            "bit_rate": 224000,
            "disposition": {
              "default": 1,
              "dub": 0,
              "original": 0,
              "comment": 0,
              "lyrics": 0,
              "karaoke": 0,
              "forced": 0,
              "hearing_impaired": 0,
              "visual_impaired": 0,
              "clean_effects": 0,
              "attached_pic": 0,
              "timed_thumbnails": 0,
              "captions": 0,
              "descriptions": 0,
              "metadata": 0,
              "dependent": 0,
              "still_image": 0
            },
            "tags": {
              "language": "ger",
              "title": ""
            }
          },
          "bitrate": 4624
        },
        "custom_sid": null,
        "added": 1677337446,
        "season": 0,
        "direct_source": ""
      }
    ],
    [
      {
        "id": 459917,
        "episode_num": 1,
        "title": "DE - jerks. (DE) - S01E01 - Samenraub",
        "container_extension": "mkv",
        "info": {
          "air_date": "2017-01-26",
          "crew": "Christian Ulmen",
          "rating": 8,
          "id": 69931,
          "movie_image": "https://image.tmdb.org/t/p/w185/oLAiMkKqT6NImm0wlX4zm6p2ZCX.jpg",
          "duration_secs": 1401,
          "duration": "00:23:21",
          "video": {
            "index": 0,
            "codec_name": "hevc",
            "codec_long_name": "unknown",
            "profile": 1,
            "codec_type": "video",
            "codec_tag_string": "[0][0][0][0]",
            "codec_tag": "0x0000",
            "width": 1920,
            "height": 1080,
            "coded_width": 1920,
            "coded_height": 1080,
            "closed_captions": 0,
            "film_grain": 0,
            "has_b_frames": 2,
            "sample_aspect_ratio": "1:1",
            "display_aspect_ratio": "16:9",
            "pix_fmt": "yuv420p",
            "level": 120,
            "color_range": "tv",
            "color_space": "bt709",
            "color_transfer": "bt709",
            "color_primaries": "bt709",
            "chroma_location": "left",
            "refs": 1,
            "r_frame_rate": "25/1",
            "avg_frame_rate": "25/1",
            "time_base": "1/1000",
            "start_pts": 5,
            "start_time": 0.005,
            "extradata_size": 2231,
            "disposition": {
              "default": 1,
              "dub": 0,
              "original": 0,
              "comment": 0,
              "lyrics": 0,
              "karaoke": 0,
              "forced": 0,
              "hearing_impaired": 0,
              "visual_impaired": 0,
              "clean_effects": 0,
              "attached_pic": 0,
              "timed_thumbnails": 0,
              "captions": 0,
              "descriptions": 0,
              "metadata": 0,
              "dependent": 0,
              "still_image": 0
            }
          },
          "audio": {
            "index": 1,
            "codec_name": "ac3",
            "codec_long_name": "unknown",
            "codec_type": "audio",
            "codec_tag_string": "[0][0][0][0]",
            "codec_tag": "0x0000",
            "sample_fmt": "fltp",
            "sample_rate": 48000,
            "channels": 2,
            "channel_layout": "stereo",
            "bits_per_sample": 0,
            "r_frame_rate": "0/0",
            "avg_frame_rate": "0/0",
            "time_base": "1/1000",
            "start_pts": 0,
            "start_time": 0,
            "bit_rate": 224000,
            "disposition": {
              "default": 1,
              "dub": 0,
              "original": 0,
              "comment": 0,
              "lyrics": 0,
              "karaoke": 0,
              "forced": 0,
              "hearing_impaired": 0,
              "visual_impaired": 0,
              "clean_effects": 0,
              "attached_pic": 0,
              "timed_thumbnails": 0,
              "captions": 0,
              "descriptions": 0,
              "metadata": 0,
              "dependent": 0,
              "still_image": 0
            },
            "tags": {
              "language": "ger",
              "title": ""
            }
          },
          "bitrate": 2611
        },
        "custom_sid": null,
        "added": 1677337462,
        "season": 1,
        "direct_source": ""
      },
      {
        "id": 459918,
        "episode_num": 2,
        "title": "DE - jerks. (DE) - S01E02 - Camilla",
        "container_extension": "mkv",
        "info": {
          "air_date": "2017-01-26",
          "crew": "Christian Ulmen",
          "rating": 7.5,
          "id": 69931,
          "movie_image": "https://image.tmdb.org/t/p/w185/yckx3BIM2FUHjZ2VQ9q3mQznnjp.jpg",
          "duration_secs": 1358,
          "duration": "00:22:38",
          "video": {
            "index": 0,
            "codec_name": "hevc",
            "codec_long_name": "unknown",
            "profile": 1,
            "codec_type": "video",
            "codec_tag_string": "[0][0][0][0]",
            "codec_tag": "0x0000",
            "width": 1920,
            "height": 1080,
            "coded_width": 1920,
            "coded_height": 1080,
            "closed_captions": 0,
            "film_grain": 0,
            "has_b_frames": 2,
            "sample_aspect_ratio": "1:1",
            "display_aspect_ratio": "16:9",
            "pix_fmt": "yuv420p",
            "level": 120,
            "color_range": "tv",
            "color_space": "bt709",
            "color_transfer": "bt709",
            "color_primaries": "bt709",
            "chroma_location": "left",
            "refs": 1,
            "r_frame_rate": "25/1",
            "avg_frame_rate": "25/1",
            "time_base": "1/1000",
            "start_pts": 5,
            "start_time": 0.005,
            "extradata_size": 2231,
            "disposition": {
              "default": 1,
              "dub": 0,
              "original": 0,
              "comment": 0,
              "lyrics": 0,
              "karaoke": 0,
              "forced": 0,
              "hearing_impaired": 0,
              "visual_impaired": 0,
              "clean_effects": 0,
              "attached_pic": 0,
              "timed_thumbnails": 0,
              "captions": 0,
              "descriptions": 0,
              "metadata": 0,
              "dependent": 0,
              "still_image": 0
            }
          },
          "audio": {
            "index": 1,
            "codec_name": "ac3",
            "codec_long_name": "unknown",
            "codec_type": "audio",
            "codec_tag_string": "[0][0][0][0]",
            "codec_tag": "0x0000",
            "sample_fmt": "fltp",
            "sample_rate": 48000,
            "channels": 2,
            "channel_layout": "stereo",
            "bits_per_sample": 0,
            "r_frame_rate": "0/0",
            "avg_frame_rate": "0/0",
            "time_base": "1/1000",
            "start_pts": 0,
            "start_time": 0,
            "bit_rate": 224000,
            "disposition": {
              "default": 1,
              "dub": 0,
              "original": 0,
              "comment": 0,
              "lyrics": 0,
              "karaoke": 0,
              "forced": 0,
              "hearing_impaired": 0,
              "visual_impaired": 0,
              "clean_effects": 0,
              "attached_pic": 0,
              "timed_thumbnails": 0,
              "captions": 0,
              "descriptions": 0,
              "metadata": 0,
              "dependent": 0,
              "still_image": 0
            },
            "tags": {
              "language": "ger",
              "title": ""
            }
          },
          "bitrate": 2431
        },
        "custom_sid": null,
        "added": 1677337462,
        "season": 1,
        "direct_source": ""
      },
      {
        "id": 459919,
        "episode_num": 3,
        "title": "DE - jerks. (DE) - S01E03 - Hindenburg",
        "container_extension": "mkv",
        "info": {
          "air_date": "2017-02-02",
          "crew": "Christian Ulmen",
          "rating": 8,
          "id": 69931,
          "movie_image": "https://image.tmdb.org/t/p/w185/5SlPUKdOixPjPxEp9b3ddWKrxZI.jpg",
          "duration_secs": 1294,
          "duration": "00:21:34",
          "video": {
            "index": 0,
            "codec_name": "hevc",
            "codec_long_name": "unknown",
            "profile": 1,
            "codec_type": "video",
            "codec_tag_string": "[0][0][0][0]",
            "codec_tag": "0x0000",
            "width": 1920,
            "height": 1080,
            "coded_width": 1920,
            "coded_height": 1080,
            "closed_captions": 0,
            "film_grain": 0,
            "has_b_frames": 2,
            "sample_aspect_ratio": "1:1",
            "display_aspect_ratio": "16:9",
            "pix_fmt": "yuv420p",
            "level": 120,
            "color_range": "tv",
            "color_space": "bt709",
            "color_transfer": "bt709",
            "color_primaries": "bt709",
            "chroma_location": "left",
            "refs": 1,
            "r_frame_rate": "25/1",
            "avg_frame_rate": "25/1",
            "time_base": "1/1000",
            "start_pts": 5,
            "start_time": 0.005,
            "extradata_size": 2231,
            "disposition": {
              "default": 1,
              "dub": 0,
              "original": 0,
              "comment": 0,
              "lyrics": 0,
              "karaoke": 0,
              "forced": 0,
              "hearing_impaired": 0,
              "visual_impaired": 0,
              "clean_effects": 0,
              "attached_pic": 0,
              "timed_thumbnails": 0,
              "captions": 0,
              "descriptions": 0,
              "metadata": 0,
              "dependent": 0,
              "still_image": 0
            }
          },
          "audio": {
            "index": 1,
            "codec_name": "ac3",
            "codec_long_name": "unknown",
            "codec_type": "audio",
            "codec_tag_string": "[0][0][0][0]",
            "codec_tag": "0x0000",
            "sample_fmt": "fltp",
            "sample_rate": 48000,
            "channels": 2,
            "channel_layout": "stereo",
            "bits_per_sample": 0,
            "r_frame_rate": "0/0",
            "avg_frame_rate": "0/0",
            "time_base": "1/1000",
            "start_pts": 0,
            "start_time": 0,
            "bit_rate": 224000,
            "disposition": {
              "default": 1,
              "dub": 0,
              "original": 0,
              "comment": 0,
              "lyrics": 0,
              "karaoke": 0,
              "forced": 0,
              "hearing_impaired": 0,
              "visual_impaired": 0,
              "clean_effects": 0,
              "attached_pic": 0,
              "timed_thumbnails": 0,
              "captions": 0,
              "descriptions": 0,
              "metadata": 0,
              "dependent": 0,
              "still_image": 0
            },
            "tags": {
              "language": "ger",
              "title": ""
            }
          },
          "bitrate": 2134
        },
        "custom_sid": null,
        "added": 1677337463,
        "season": 1,
        "direct_source": ""
      },
      {
        "id": 459920,
        "episode_num": 4,
        "title": "DE - jerks. (DE) - S01E04 - Merhaba",
        "container_extension": "mkv",
        "info": {
          "air_date": "2017-02-02",
          "crew": "Christian Ulmen",
          "rating": 0,
          "id": 69931,
          "movie_image": "https://image.tmdb.org/t/p/w185/ttSsiw74EiJBCyqziU2wqMcHfAW.jpg",
          "duration_secs": 1251,
          "duration": "00:20:51",
          "video": {
            "index": 0,
            "codec_name": "hevc",
            "codec_long_name": "unknown",
            "profile": 1,
            "codec_type": "video",
            "codec_tag_string": "[0][0][0][0]",
            "codec_tag": "0x0000",
            "width": 1920,
            "height": 1080,
            "coded_width": 1920,
            "coded_height": 1080,
            "closed_captions": 0,
            "film_grain": 0,
            "has_b_frames": 2,
            "sample_aspect_ratio": "1:1",
            "display_aspect_ratio": "16:9",
            "pix_fmt": "yuv420p",
            "level": 120,
            "color_range": "tv",
            "color_space": "bt709",
            "color_transfer": "bt709",
            "color_primaries": "bt709",
            "chroma_location": "left",
            "refs": 1,
            "r_frame_rate": "25/1",
            "avg_frame_rate": "25/1",
            "time_base": "1/1000",
            "start_pts": 5,
            "start_time": 0.005,
            "extradata_size": 2231,
            "disposition": {
              "default": 1,
              "dub": 0,
              "original": 0,
              "comment": 0,
              "lyrics": 0,
              "karaoke": 0,
              "forced": 0,
              "hearing_impaired": 0,
              "visual_impaired": 0,
              "clean_effects": 0,
              "attached_pic": 0,
              "timed_thumbnails": 0,
              "captions": 0,
              "descriptions": 0,
              "metadata": 0,
              "dependent": 0,
              "still_image": 0
            }
          },
          "audio": {
            "index": 1,
            "codec_name": "ac3",
            "codec_long_name": "unknown",
            "codec_type": "audio",
            "codec_tag_string": "[0][0][0][0]",
            "codec_tag": "0x0000",
            "sample_fmt": "fltp",
            "sample_rate": 48000,
            "channels": 2,
            "channel_layout": "stereo",
            "bits_per_sample": 0,
            "r_frame_rate": "0/0",
            "avg_frame_rate": "0/0",
            "time_base": "1/1000",
            "start_pts": 0,
            "start_time": 0,
            "bit_rate": 224000,
            "disposition": {
              "default": 1,
              "dub": 0,
              "original": 0,
              "comment": 0,
              "lyrics": 0,
              "karaoke": 0,
              "forced": 0,
              "hearing_impaired": 0,
              "visual_impaired": 0,
              "clean_effects": 0,
              "attached_pic": 0,
              "timed_thumbnails": 0,
              "captions": 0,
              "descriptions": 0,
              "metadata": 0,
              "dependent": 0,
              "still_image": 0
            },
            "tags": {
              "language": "ger",
              "title": ""
            }
          },
          "bitrate": 2367
        },
        "custom_sid": null,
        "added": 1677337463,
        "season": 1,
        "direct_source": ""
      },
      {
        "id": 459921,
        "episode_num": 5,
        "title": "DE - jerks. (DE) - S01E05 - Der Jojo-Effekt",
        "container_extension": "mkv",
        "info": {
          "air_date": "2017-02-09",
          "crew": "Christian Ulmen",
          "rating": 9,
          "id": 69931,
          "movie_image": "https://image.tmdb.org/t/p/w185/9rUzKxtWiwmejQsOf0rOjevaBOT.jpg",
          "duration_secs": 1466,
          "duration": "00:24:26",
          "video": {
            "index": 0,
            "codec_name": "hevc",
            "codec_long_name": "unknown",
            "profile": 1,
            "codec_type": "video",
            "codec_tag_string": "[0][0][0][0]",
            "codec_tag": "0x0000",
            "width": 1920,
            "height": 1080,
            "coded_width": 1920,
            "coded_height": 1080,
            "closed_captions": 0,
            "film_grain": 0,
            "has_b_frames": 2,
            "sample_aspect_ratio": "1:1",
            "display_aspect_ratio": "16:9",
            "pix_fmt": "yuv420p",
            "level": 120,
            "color_range": "tv",
            "color_space": "bt709",
            "color_transfer": "bt709",
            "color_primaries": "bt709",
            "chroma_location": "left",
            "refs": 1,
            "r_frame_rate": "25/1",
            "avg_frame_rate": "25/1",
            "time_base": "1/1000",
            "start_pts": 5,
            "start_time": 0.005,
            "extradata_size": 2231,
            "disposition": {
              "default": 1,
              "dub": 0,
              "original": 0,
              "comment": 0,
              "lyrics": 0,
              "karaoke": 0,
              "forced": 0,
              "hearing_impaired": 0,
              "visual_impaired": 0,
              "clean_effects": 0,
              "attached_pic": 0,
              "timed_thumbnails": 0,
              "captions": 0,
              "descriptions": 0,
              "metadata": 0,
              "dependent": 0,
              "still_image": 0
            }
          },
          "audio": {
            "index": 1,
            "codec_name": "ac3",
            "codec_long_name": "unknown",
            "codec_type": "audio",
            "codec_tag_string": "[0][0][0][0]",
            "codec_tag": "0x0000",
            "sample_fmt": "fltp",
            "sample_rate": 48000,
            "channels": 2,
            "channel_layout": "stereo",
            "bits_per_sample": 0,
            "r_frame_rate": "0/0",
            "avg_frame_rate": "0/0",
            "time_base": "1/1000",
            "start_pts": 0,
            "start_time": 0,
            "bit_rate": 224000,
            "disposition": {
              "default": 1,
              "dub": 0,
              "original": 0,
              "comment": 0,
              "lyrics": 0,
              "karaoke": 0,
              "forced": 0,
              "hearing_impaired": 0,
              "visual_impaired": 0,
              "clean_effects": 0,
              "attached_pic": 0,
              "timed_thumbnails": 0,
              "captions": 0,
              "descriptions": 0,
              "metadata": 0,
              "dependent": 0,
              "still_image": 0
            },
            "tags": {
              "language": "ger",
              "title": ""
            }
          },
          "bitrate": 2236
        },
        "custom_sid": null,
        "added": 1677337463,
        "season": 1,
        "direct_source": ""
      },
      {
        "id": 459922,
        "episode_num": 6,
        "title": "DE - jerks. (DE) - S01E06 - Der soziale Abstieg",
        "container_extension": "mkv",
        "info": {
          "air_date": "2017-02-09",
          "crew": "Christian Ulmen",
          "rating": 0,
          "id": 69931,
          "movie_image": "https://image.tmdb.org/t/p/w185/adIdYxRxyZyO0hWrktbhkK2xMzX.jpg",
          "duration_secs": 1253,
          "duration": "00:20:53",
          "video": {
            "index": 0,
            "codec_name": "hevc",
            "codec_long_name": "unknown",
            "profile": 1,
            "codec_type": "video",
            "codec_tag_string": "[0][0][0][0]",
            "codec_tag": "0x0000",
            "width": 1920,
            "height": 1080,
            "coded_width": 1920,
            "coded_height": 1080,
            "closed_captions": 0,
            "film_grain": 0,
            "has_b_frames": 2,
            "sample_aspect_ratio": "1:1",
            "display_aspect_ratio": "16:9",
            "pix_fmt": "yuv420p",
            "level": 120,
            "color_range": "tv",
            "color_space": "bt709",
            "color_transfer": "bt709",
            "color_primaries": "bt709",
            "chroma_location": "left",
            "refs": 1,
            "r_frame_rate": "25/1",
            "avg_frame_rate": "25/1",
            "time_base": "1/1000",
            "start_pts": 5,
            "start_time": 0.005,
            "extradata_size": 2231,
            "disposition": {
              "default": 1,
              "dub": 0,
              "original": 0,
              "comment": 0,
              "lyrics": 0,
              "karaoke": 0,
              "forced": 0,
              "hearing_impaired": 0,
              "visual_impaired": 0,
              "clean_effects": 0,
              "attached_pic": 0,
              "timed_thumbnails": 0,
              "captions": 0,
              "descriptions": 0,
              "metadata": 0,
              "dependent": 0,
              "still_image": 0
            }
          },
          "audio": {
            "index": 1,
            "codec_name": "ac3",
            "codec_long_name": "unknown",
            "codec_type": "audio",
            "codec_tag_string": "[0][0][0][0]",
            "codec_tag": "0x0000",
            "sample_fmt": "fltp",
            "sample_rate": 48000,
            "channels": 2,
            "channel_layout": "stereo",
            "bits_per_sample": 0,
            "r_frame_rate": "0/0",
            "avg_frame_rate": "0/0",
            "time_base": "1/1000",
            "start_pts": 0,
            "start_time": 0,
            "bit_rate": 224000,
            "disposition": {
              "default": 1,
              "dub": 0,
              "original": 0,
              "comment": 0,
              "lyrics": 0,
              "karaoke": 0,
              "forced": 0,
              "hearing_impaired": 0,
              "visual_impaired": 0,
              "clean_effects": 0,
              "attached_pic": 0,
              "timed_thumbnails": 0,
              "captions": 0,
              "descriptions": 0,
              "metadata": 0,
              "dependent": 0,
              "still_image": 0
            },
            "tags": {
              "language": "ger",
              "title": ""
            }
          },
          "bitrate": 2495
        },
        "custom_sid": null,
        "added": 1677337463,
        "season": 1,
        "direct_source": ""
      },
      {
        "id": 459923,
        "episode_num": 7,
        "title": "DE - jerks. (DE) - S01E07 - Die Mutter aller Drogen",
        "container_extension": "mkv",
        "info": {
          "air_date": "2017-02-16",
          "crew": "Christian Ulmen",
          "rating": 0,
          "id": 69931,
          "movie_image": "https://image.tmdb.org/t/p/w185/nVShIYQKnAkuCFSj6CaSQUP41md.jpg",
          "duration_secs": 1394,
          "duration": "00:23:14",
          "video": {
            "index": 0,
            "codec_name": "hevc",
            "codec_long_name": "unknown",
            "profile": 1,
            "codec_type": "video",
            "codec_tag_string": "[0][0][0][0]",
            "codec_tag": "0x0000",
            "width": 1920,
            "height": 1080,
            "coded_width": 1920,
            "coded_height": 1080,
            "closed_captions": 0,
            "film_grain": 0,
            "has_b_frames": 2,
            "sample_aspect_ratio": "1:1",
            "display_aspect_ratio": "16:9",
            "pix_fmt": "yuv420p",
            "level": 120,
            "color_range": "tv",
            "color_space": "bt709",
            "color_transfer": "bt709",
            "color_primaries": "bt709",
            "chroma_location": "left",
            "refs": 1,
            "r_frame_rate": "25/1",
            "avg_frame_rate": "25/1",
            "time_base": "1/1000",
            "start_pts": 5,
            "start_time": 0.005,
            "extradata_size": 2231,
            "disposition": {
              "default": 1,
              "dub": 0,
              "original": 0,
              "comment": 0,
              "lyrics": 0,
              "karaoke": 0,
              "forced": 0,
              "hearing_impaired": 0,
              "visual_impaired": 0,
              "clean_effects": 0,
              "attached_pic": 0,
              "timed_thumbnails": 0,
              "captions": 0,
              "descriptions": 0,
              "metadata": 0,
              "dependent": 0,
              "still_image": 0
            }
          },
          "audio": {
            "index": 1,
            "codec_name": "ac3",
            "codec_long_name": "unknown",
            "codec_type": "audio",
            "codec_tag_string": "[0][0][0][0]",
            "codec_tag": "0x0000",
            "sample_fmt": "fltp",
            "sample_rate": 48000,
            "channels": 2,
            "channel_layout": "stereo",
            "bits_per_sample": 0,
            "r_frame_rate": "0/0",
            "avg_frame_rate": "0/0",
            "time_base": "1/1000",
            "start_pts": 0,
            "start_time": 0,
            "bit_rate": 224000,
            "disposition": {
              "default": 1,
              "dub": 0,
              "original": 0,
              "comment": 0,
              "lyrics": 0,
              "karaoke": 0,
              "forced": 0,
              "hearing_impaired": 0,
              "visual_impaired": 0,
              "clean_effects": 0,
              "attached_pic": 0,
              "timed_thumbnails": 0,
              "captions": 0,
              "descriptions": 0,
              "metadata": 0,
              "dependent": 0,
              "still_image": 0
            },
            "tags": {
              "language": "ger",
              "title": ""
            }
          },
          "bitrate": 2417
        },
        "custom_sid": null,
        "added": 1677337464,
        "season": 1,
        "direct_source": ""
      },
      {
        "id": 459924,
        "episode_num": 8,
        "title": "DE - jerks. (DE) - S01E08 - Braindead",
        "container_extension": "mkv",
        "info": {
          "air_date": "2017-02-16",
          "crew": "Christian Ulmen",
          "rating": 0,
          "id": 69931,
          "movie_image": "https://image.tmdb.org/t/p/w185/eOgMEnGRWOyxdzhReHcvwQxDYRk.jpg",
          "duration_secs": 1316,
          "duration": "00:21:56",
          "video": {
            "index": 0,
            "codec_name": "hevc",
            "codec_long_name": "unknown",
            "profile": 1,
            "codec_type": "video",
            "codec_tag_string": "[0][0][0][0]",
            "codec_tag": "0x0000",
            "width": 1920,
            "height": 1080,
            "coded_width": 1920,
            "coded_height": 1080,
            "closed_captions": 0,
            "film_grain": 0,
            "has_b_frames": 2,
            "sample_aspect_ratio": "1:1",
            "display_aspect_ratio": "16:9",
            "pix_fmt": "yuv420p",
            "level": 120,
            "color_range": "tv",
            "color_space": "bt709",
            "color_transfer": "bt709",
            "color_primaries": "bt709",
            "chroma_location": "left",
            "refs": 1,
            "r_frame_rate": "25/1",
            "avg_frame_rate": "25/1",
            "time_base": "1/1000",
            "start_pts": 5,
            "start_time": 0.005,
            "extradata_size": 2231,
            "disposition": {
              "default": 1,
              "dub": 0,
              "original": 0,
              "comment": 0,
              "lyrics": 0,
              "karaoke": 0,
              "forced": 0,
              "hearing_impaired": 0,
              "visual_impaired": 0,
              "clean_effects": 0,
              "attached_pic": 0,
              "timed_thumbnails": 0,
              "captions": 0,
              "descriptions": 0,
              "metadata": 0,
              "dependent": 0,
              "still_image": 0
            }
          },
          "audio": {
            "index": 1,
            "codec_name": "ac3",
            "codec_long_name": "unknown",
            "codec_type": "audio",
            "codec_tag_string": "[0][0][0][0]",
            "codec_tag": "0x0000",
            "sample_fmt": "fltp",
            "sample_rate": 48000,
            "channels": 2,
            "channel_layout": "stereo",
            "bits_per_sample": 0,
            "r_frame_rate": "0/0",
            "avg_frame_rate": "0/0",
            "time_base": "1/1000",
            "start_pts": 0,
            "start_time": 0,
            "bit_rate": 224000,
            "disposition": {
              "default": 1,
              "dub": 0,
              "original": 0,
              "comment": 0,
              "lyrics": 0,
              "karaoke": 0,
              "forced": 0,
              "hearing_impaired": 0,
              "visual_impaired": 0,
              "clean_effects": 0,
              "attached_pic": 0,
              "timed_thumbnails": 0,
              "captions": 0,
              "descriptions": 0,
              "metadata": 0,
              "dependent": 0,
              "still_image": 0
            },
            "tags": {
              "language": "ger",
              "title": ""
            }
          },
          "bitrate": 2502
        },
        "custom_sid": null,
        "added": 1677337464,
        "season": 1,
        "direct_source": ""
      },
      {
        "id": 459925,
        "episode_num": 9,
        "title": "DE - jerks. (DE) - S01E09 - Der Junggesellenabschied",
        "container_extension": "mkv",
        "info": {
          "air_date": "2017-02-23",
          "crew": "Christian Ulmen",
          "rating": 0,
          "id": 69931,
          "movie_image": "https://image.tmdb.org/t/p/w185/z5aQmKUjf2Z6HlHdD0J52iGif09.jpg",
          "duration_secs": 1333,
          "duration": "00:22:13",
          "video": {
            "index": 0,
            "codec_name": "hevc",
            "codec_long_name": "unknown",
            "profile": 1,
            "codec_type": "video",
            "codec_tag_string": "[0][0][0][0]",
            "codec_tag": "0x0000",
            "width": 1920,
            "height": 1080,
            "coded_width": 1920,
            "coded_height": 1080,
            "closed_captions": 0,
            "film_grain": 0,
            "has_b_frames": 2,
            "sample_aspect_ratio": "1:1",
            "display_aspect_ratio": "16:9",
            "pix_fmt": "yuv420p",
            "level": 120,
            "color_range": "tv",
            "color_space": "bt709",
            "color_transfer": "bt709",
            "color_primaries": "bt709",
            "chroma_location": "left",
            "refs": 1,
            "r_frame_rate": "25/1",
            "avg_frame_rate": "25/1",
            "time_base": "1/1000",
            "start_pts": 5,
            "start_time": 0.005,
            "extradata_size": 2231,
            "disposition": {
              "default": 1,
              "dub": 0,
              "original": 0,
              "comment": 0,
              "lyrics": 0,
              "karaoke": 0,
              "forced": 0,
              "hearing_impaired": 0,
              "visual_impaired": 0,
              "clean_effects": 0,
              "attached_pic": 0,
              "timed_thumbnails": 0,
              "captions": 0,
              "descriptions": 0,
              "metadata": 0,
              "dependent": 0,
              "still_image": 0
            }
          },
          "audio": {
            "index": 1,
            "codec_name": "ac3",
            "codec_long_name": "unknown",
            "codec_type": "audio",
            "codec_tag_string": "[0][0][0][0]",
            "codec_tag": "0x0000",
            "sample_fmt": "fltp",
            "sample_rate": 48000,
            "channels": 2,
            "channel_layout": "stereo",
            "bits_per_sample": 0,
            "r_frame_rate": "0/0",
            "avg_frame_rate": "0/0",
            "time_base": "1/1000",
            "start_pts": 0,
            "start_time": 0,
            "bit_rate": 224000,
            "disposition": {
              "default": 1,
              "dub": 0,
              "original": 0,
              "comment": 0,
              "lyrics": 0,
              "karaoke": 0,
              "forced": 0,
              "hearing_impaired": 0,
              "visual_impaired": 0,
              "clean_effects": 0,
              "attached_pic": 0,
              "timed_thumbnails": 0,
              "captions": 0,
              "descriptions": 0,
              "metadata": 0,
              "dependent": 0,
              "still_image": 0
            },
            "tags": {
              "language": "ger",
              "title": ""
            }
          },
          "bitrate": 3014
        },
        "custom_sid": null,
        "added": 1677337464,
        "season": 1,
        "direct_source": ""
      },
      {
        "id": 459926,
        "episode_num": 10,
        "title": "DE - jerks. (DE) - S01E10 - Ring of Fire",
        "container_extension": "mkv",
        "info": {
          "air_date": "2017-02-23",
          "crew": "Christian Ulmen",
          "rating": 0,
          "id": 69931,
          "movie_image": "https://image.tmdb.org/t/p/w185/aJV5d44DMuGEKToGBOxAQ2lxoV5.jpg",
          "duration_secs": 1391,
          "duration": "00:23:11",
          "video": {
            "index": 0,
            "codec_name": "hevc",
            "codec_long_name": "unknown",
            "profile": 1,
            "codec_type": "video",
            "codec_tag_string": "[0][0][0][0]",
            "codec_tag": "0x0000",
            "width": 1920,
            "height": 1080,
            "coded_width": 1920,
            "coded_height": 1080,
            "closed_captions": 0,
            "film_grain": 0,
            "has_b_frames": 2,
            "sample_aspect_ratio": "1:1",
            "display_aspect_ratio": "16:9",
            "pix_fmt": "yuv420p",
            "level": 120,
            "color_range": "tv",
            "color_space": "bt709",
            "color_transfer": "bt709",
            "color_primaries": "bt709",
            "chroma_location": "left",
            "refs": 1,
            "r_frame_rate": "25/1",
            "avg_frame_rate": "25/1",
            "time_base": "1/1000",
            "start_pts": 5,
            "start_time": 0.005,
            "extradata_size": 2231,
            "disposition": {
              "default": 1,
              "dub": 0,
              "original": 0,
              "comment": 0,
              "lyrics": 0,
              "karaoke": 0,
              "forced": 0,
              "hearing_impaired": 0,
              "visual_impaired": 0,
              "clean_effects": 0,
              "attached_pic": 0,
              "timed_thumbnails": 0,
              "captions": 0,
              "descriptions": 0,
              "metadata": 0,
              "dependent": 0,
              "still_image": 0
            }
          },
          "audio": {
            "index": 1,
            "codec_name": "ac3",
            "codec_long_name": "unknown",
            "codec_type": "audio",
            "codec_tag_string": "[0][0][0][0]",
            "codec_tag": "0x0000",
            "sample_fmt": "fltp",
            "sample_rate": 48000,
            "channels": 2,
            "channel_layout": "stereo",
            "bits_per_sample": 0,
            "r_frame_rate": "0/0",
            "avg_frame_rate": "0/0",
            "time_base": "1/1000",
            "start_pts": 0,
            "start_time": 0,
            "bit_rate": 224000,
            "disposition": {
              "default": 1,
              "dub": 0,
              "original": 0,
              "comment": 0,
              "lyrics": 0,
              "karaoke": 0,
              "forced": 0,
              "hearing_impaired": 0,
              "visual_impaired": 0,
              "clean_effects": 0,
              "attached_pic": 0,
              "timed_thumbnails": 0,
              "captions": 0,
              "descriptions": 0,
              "metadata": 0,
              "dependent": 0,
              "still_image": 0
            },
            "tags": {
              "language": "ger",
              "title": ""
            }
          },
          "bitrate": 3084
        },
        "custom_sid": null,
        "added": 1677337464,
        "season": 1,
        "direct_source": ""
      }
    ],
    [
      {
        "id": 459927,
        "episode_num": 1,
        "title": "DE - jerks. (DE) - S02E01 - Seitensprung",
        "container_extension": "mkv",
        "info": {
          "air_date": "2018-03-29",
          "crew": "Christian Ulmen",
          "rating": 0,
          "id": 69931,
          "movie_image": "https://image.tmdb.org/t/p/w185/oJQWez06FTMeU1mfeFAivSU618g.jpg",
          "duration_secs": 1433,
          "duration": "00:23:53",
          "video": {
            "index": 0,
            "codec_name": "hevc",
            "codec_long_name": "unknown",
            "profile": 1,
            "codec_type": "video",
            "codec_tag_string": "[0][0][0][0]",
            "codec_tag": "0x0000",
            "width": 1920,
            "height": 1080,
            "coded_width": 1920,
            "coded_height": 1080,
            "closed_captions": 0,
            "film_grain": 0,
            "has_b_frames": 2,
            "sample_aspect_ratio": "1:1",
            "display_aspect_ratio": "16:9",
            "pix_fmt": "yuv420p",
            "level": 120,
            "color_range": "tv",
            "color_space": "bt709",
            "color_transfer": "bt709",
            "color_primaries": "bt709",
            "chroma_location": "left",
            "refs": 1,
            "r_frame_rate": "25/1",
            "avg_frame_rate": "25/1",
            "time_base": "1/1000",
            "start_pts": 5,
            "start_time": 0.005,
            "extradata_size": 2231,
            "disposition": {
              "default": 1,
              "dub": 0,
              "original": 0,
              "comment": 0,
              "lyrics": 0,
              "karaoke": 0,
              "forced": 0,
              "hearing_impaired": 0,
              "visual_impaired": 0,
              "clean_effects": 0,
              "attached_pic": 0,
              "timed_thumbnails": 0,
              "captions": 0,
              "descriptions": 0,
              "metadata": 0,
              "dependent": 0,
              "still_image": 0
            }
          },
          "audio": {
            "index": 1,
            "codec_name": "ac3",
            "codec_long_name": "unknown",
            "codec_type": "audio",
            "codec_tag_string": "[0][0][0][0]",
            "codec_tag": "0x0000",
            "sample_fmt": "fltp",
            "sample_rate": 48000,
            "channels": 2,
            "channel_layout": "stereo",
            "bits_per_sample": 0,
            "r_frame_rate": "0/0",
            "avg_frame_rate": "0/0",
            "time_base": "1/1000",
            "start_pts": 0,
            "start_time": 0,
            "bit_rate": 224000,
            "disposition": {
              "default": 1,
              "dub": 0,
              "original": 0,
              "comment": 0,
              "lyrics": 0,
              "karaoke": 0,
              "forced": 0,
              "hearing_impaired": 0,
              "visual_impaired": 0,
              "clean_effects": 0,
              "attached_pic": 0,
              "timed_thumbnails": 0,
              "captions": 0,
              "descriptions": 0,
              "metadata": 0,
              "dependent": 0,
              "still_image": 0
            },
            "tags": {
              "language": "ger",
              "title": ""
            }
          },
          "bitrate": 2609
        },
        "custom_sid": null,
        "added": 1677337497,
        "season": 2,
        "direct_source": ""
      },
      {
        "id": 459928,
        "episode_num": 2,
        "title": "DE - jerks. (DE) - S02E02 - Junge Herzen",
        "container_extension": "mkv",
        "info": {
          "air_date": "2018-03-29",
          "crew": "Christian Ulmen",
          "rating": 9,
          "id": 69931,
          "movie_image": "https://image.tmdb.org/t/p/w185/5awJacjaCaCw7lOooDuAFAKNtxH.jpg",
          "duration_secs": 1502,
          "duration": "00:25:02",
          "video": {
            "index": 0,
            "codec_name": "hevc",
            "codec_long_name": "unknown",
            "profile": 1,
            "codec_type": "video",
            "codec_tag_string": "[0][0][0][0]",
            "codec_tag": "0x0000",
            "width": 1920,
            "height": 1080,
            "coded_width": 1920,
            "coded_height": 1080,
            "closed_captions": 0,
            "film_grain": 0,
            "has_b_frames": 2,
            "sample_aspect_ratio": "1:1",
            "display_aspect_ratio": "16:9",
            "pix_fmt": "yuv420p",
            "level": 120,
            "color_range": "tv",
            "color_space": "bt709",
            "color_transfer": "bt709",
            "color_primaries": "bt709",
            "chroma_location": "left",
            "refs": 1,
            "r_frame_rate": "25/1",
            "avg_frame_rate": "25/1",
            "time_base": "1/1000",
            "start_pts": 5,
            "start_time": 0.005,
            "extradata_size": 2231,
            "disposition": {
              "default": 1,
              "dub": 0,
              "original": 0,
              "comment": 0,
              "lyrics": 0,
              "karaoke": 0,
              "forced": 0,
              "hearing_impaired": 0,
              "visual_impaired": 0,
              "clean_effects": 0,
              "attached_pic": 0,
              "timed_thumbnails": 0,
              "captions": 0,
              "descriptions": 0,
              "metadata": 0,
              "dependent": 0,
              "still_image": 0
            }
          },
          "audio": {
            "index": 1,
            "codec_name": "ac3",
            "codec_long_name": "unknown",
            "codec_type": "audio",
            "codec_tag_string": "[0][0][0][0]",
            "codec_tag": "0x0000",
            "sample_fmt": "fltp",
            "sample_rate": 48000,
            "channels": 2,
            "channel_layout": "stereo",
            "bits_per_sample": 0,
            "r_frame_rate": "0/0",
            "avg_frame_rate": "0/0",
            "time_base": "1/1000",
            "start_pts": 0,
            "start_time": 0,
            "bit_rate": 224000,
            "disposition": {
              "default": 1,
              "dub": 0,
              "original": 0,
              "comment": 0,
              "lyrics": 0,
              "karaoke": 0,
              "forced": 0,
              "hearing_impaired": 0,
              "visual_impaired": 0,
              "clean_effects": 0,
              "attached_pic": 0,
              "timed_thumbnails": 0,
              "captions": 0,
              "descriptions": 0,
              "metadata": 0,
              "dependent": 0,
              "still_image": 0
            },
            "tags": {
              "language": "ger",
              "title": ""
            }
          },
          "bitrate": 3479
        },
        "custom_sid": null,
        "added": 1677337497,
        "season": 2,
        "direct_source": ""
      },
      {
        "id": 459929,
        "episode_num": 3,
        "title": "DE - jerks. (DE) - S02E03 - München",
        "container_extension": "mkv",
        "info": {
          "air_date": "2018-03-29",
          "crew": "Christian Ulmen",
          "rating": 9,
          "id": 69931,
          "movie_image": "https://image.tmdb.org/t/p/w185/vQoYAqECNCODYoU3Ff7uQMiT8vJ.jpg",
          "duration_secs": 1408,
          "duration": "00:23:28",
          "video": {
            "index": 0,
            "codec_name": "hevc",
            "codec_long_name": "unknown",
            "profile": 1,
            "codec_type": "video",
            "codec_tag_string": "[0][0][0][0]",
            "codec_tag": "0x0000",
            "width": 1920,
            "height": 1080,
            "coded_width": 1920,
            "coded_height": 1080,
            "closed_captions": 0,
            "film_grain": 0,
            "has_b_frames": 2,
            "sample_aspect_ratio": "1:1",
            "display_aspect_ratio": "16:9",
            "pix_fmt": "yuv420p",
            "level": 120,
            "color_range": "tv",
            "color_space": "bt709",
            "color_transfer": "bt709",
            "color_primaries": "bt709",
            "chroma_location": "left",
            "refs": 1,
            "r_frame_rate": "25/1",
            "avg_frame_rate": "25/1",
            "time_base": "1/1000",
            "start_pts": 5,
            "start_time": 0.005,
            "extradata_size": 2231,
            "disposition": {
              "default": 1,
              "dub": 0,
              "original": 0,
              "comment": 0,
              "lyrics": 0,
              "karaoke": 0,
              "forced": 0,
              "hearing_impaired": 0,
              "visual_impaired": 0,
              "clean_effects": 0,
              "attached_pic": 0,
              "timed_thumbnails": 0,
              "captions": 0,
              "descriptions": 0,
              "metadata": 0,
              "dependent": 0,
              "still_image": 0
            }
          },
          "audio": {
            "index": 1,
            "codec_name": "ac3",
            "codec_long_name": "unknown",
            "codec_type": "audio",
            "codec_tag_string": "[0][0][0][0]",
            "codec_tag": "0x0000",
            "sample_fmt": "fltp",
            "sample_rate": 48000,
            "channels": 2,
            "channel_layout": "stereo",
            "bits_per_sample": 0,
            "r_frame_rate": "0/0",
            "avg_frame_rate": "0/0",
            "time_base": "1/1000",
            "start_pts": 0,
            "start_time": 0,
            "bit_rate": 224000,
            "disposition": {
              "default": 1,
              "dub": 0,
              "original": 0,
              "comment": 0,
              "lyrics": 0,
              "karaoke": 0,
              "forced": 0,
              "hearing_impaired": 0,
              "visual_impaired": 0,
              "clean_effects": 0,
              "attached_pic": 0,
              "timed_thumbnails": 0,
              "captions": 0,
              "descriptions": 0,
              "metadata": 0,
              "dependent": 0,
              "still_image": 0
            },
            "tags": {
              "language": "ger",
              "title": ""
            }
          },
          "bitrate": 2671
        },
        "custom_sid": null,
        "added": 1677337498,
        "season": 2,
        "direct_source": ""
      },
      {
        "id": 459930,
        "episode_num": 4,
        "title": "DE - jerks. (DE) - S02E04 - Fuss",
        "container_extension": "mkv",
        "info": {
          "air_date": "2018-03-29",
          "crew": "Christian Ulmen",
          "rating": 0,
          "id": 69931,
          "movie_image": "https://image.tmdb.org/t/p/w185/v3LBJ90bWeyRkYGPDmIXJzcntmM.jpg",
          "duration_secs": 1378,
          "duration": "00:22:58",
          "video": {
            "index": 0,
            "codec_name": "hevc",
            "codec_long_name": "unknown",
            "profile": 1,
            "codec_type": "video",
            "codec_tag_string": "[0][0][0][0]",
            "codec_tag": "0x0000",
            "width": 1920,
            "height": 1080,
            "coded_width": 1920,
            "coded_height": 1080,
            "closed_captions": 0,
            "film_grain": 0,
            "has_b_frames": 2,
            "sample_aspect_ratio": "1:1",
            "display_aspect_ratio": "16:9",
            "pix_fmt": "yuv420p",
            "level": 120,
            "color_range": "tv",
            "color_space": "bt709",
            "color_transfer": "bt709",
            "color_primaries": "bt709",
            "chroma_location": "left",
            "refs": 1,
            "r_frame_rate": "25/1",
            "avg_frame_rate": "25/1",
            "time_base": "1/1000",
            "start_pts": 5,
            "start_time": 0.005,
            "extradata_size": 2231,
            "disposition": {
              "default": 1,
              "dub": 0,
              "original": 0,
              "comment": 0,
              "lyrics": 0,
              "karaoke": 0,
              "forced": 0,
              "hearing_impaired": 0,
              "visual_impaired": 0,
              "clean_effects": 0,
              "attached_pic": 0,
              "timed_thumbnails": 0,
              "captions": 0,
              "descriptions": 0,
              "metadata": 0,
              "dependent": 0,
              "still_image": 0
            }
          },
          "audio": {
            "index": 1,
            "codec_name": "ac3",
            "codec_long_name": "unknown",
            "codec_type": "audio",
            "codec_tag_string": "[0][0][0][0]",
            "codec_tag": "0x0000",
            "sample_fmt": "fltp",
            "sample_rate": 48000,
            "channels": 2,
            "channel_layout": "stereo",
            "bits_per_sample": 0,
            "r_frame_rate": "0/0",
            "avg_frame_rate": "0/0",
            "time_base": "1/1000",
            "start_pts": 0,
            "start_time": 0,
            "bit_rate": 224000,
            "disposition": {
              "default": 1,
              "dub": 0,
              "original": 0,
              "comment": 0,
              "lyrics": 0,
              "karaoke": 0,
              "forced": 0,
              "hearing_impaired": 0,
              "visual_impaired": 0,
              "clean_effects": 0,
              "attached_pic": 0,
              "timed_thumbnails": 0,
              "captions": 0,
              "descriptions": 0,
              "metadata": 0,
              "dependent": 0,
              "still_image": 0
            },
            "tags": {
              "language": "ger",
              "title": ""
            }
          },
          "bitrate": 2795
        },
        "custom_sid": null,
        "added": 1677337498,
        "season": 2,
        "direct_source": ""
      },
      {
        "id": 459931,
        "episode_num": 5,
        "title": "DE - jerks. (DE) - S02E05 - Tibet",
        "container_extension": "mkv",
        "info": {
          "air_date": "2018-03-29",
          "crew": "Christian Ulmen",
          "rating": 0,
          "id": 69931,
          "movie_image": "https://image.tmdb.org/t/p/w185/6nsQYGU1aKB1EjnR9TgUShl5BRg.jpg",
          "duration_secs": 1459,
          "duration": "00:24:19",
          "video": {
            "index": 0,
            "codec_name": "hevc",
            "codec_long_name": "unknown",
            "profile": 1,
            "codec_type": "video",
            "codec_tag_string": "[0][0][0][0]",
            "codec_tag": "0x0000",
            "width": 1920,
            "height": 1080,
            "coded_width": 1920,
            "coded_height": 1080,
            "closed_captions": 0,
            "film_grain": 0,
            "has_b_frames": 2,
            "sample_aspect_ratio": "1:1",
            "display_aspect_ratio": "16:9",
            "pix_fmt": "yuv420p",
            "level": 120,
            "color_range": "tv",
            "color_space": "bt709",
            "color_transfer": "bt709",
            "color_primaries": "bt709",
            "chroma_location": "left",
            "refs": 1,
            "r_frame_rate": "25/1",
            "avg_frame_rate": "25/1",
            "time_base": "1/1000",
            "start_pts": 5,
            "start_time": 0.005,
            "extradata_size": 2231,
            "disposition": {
              "default": 1,
              "dub": 0,
              "original": 0,
              "comment": 0,
              "lyrics": 0,
              "karaoke": 0,
              "forced": 0,
              "hearing_impaired": 0,
              "visual_impaired": 0,
              "clean_effects": 0,
              "attached_pic": 0,
              "timed_thumbnails": 0,
              "captions": 0,
              "descriptions": 0,
              "metadata": 0,
              "dependent": 0,
              "still_image": 0
            }
          },
          "audio": {
            "index": 1,
            "codec_name": "ac3",
            "codec_long_name": "unknown",
            "codec_type": "audio",
            "codec_tag_string": "[0][0][0][0]",
            "codec_tag": "0x0000",
            "sample_fmt": "fltp",
            "sample_rate": 48000,
            "channels": 2,
            "channel_layout": "stereo",
            "bits_per_sample": 0,
            "r_frame_rate": "0/0",
            "avg_frame_rate": "0/0",
            "time_base": "1/1000",
            "start_pts": 0,
            "start_time": 0,
            "bit_rate": 224000,
            "disposition": {
              "default": 1,
              "dub": 0,
              "original": 0,
              "comment": 0,
              "lyrics": 0,
              "karaoke": 0,
              "forced": 0,
              "hearing_impaired": 0,
              "visual_impaired": 0,
              "clean_effects": 0,
              "attached_pic": 0,
              "timed_thumbnails": 0,
              "captions": 0,
              "descriptions": 0,
              "metadata": 0,
              "dependent": 0,
              "still_image": 0
            },
            "tags": {
              "language": "ger",
              "title": ""
            }
          },
          "bitrate": 2440
        },
        "custom_sid": null,
        "added": 1677337498,
        "season": 2,
        "direct_source": ""
      },
      {
        "id": 459932,
        "episode_num": 6,
        "title": "DE - jerks. (DE) - S02E06 - Elternhaus",
        "container_extension": "mkv",
        "info": {
          "air_date": "2018-03-29",
          "crew": "Christian Ulmen",
          "rating": 0,
          "id": 69931,
          "movie_image": "https://image.tmdb.org/t/p/w185/cbL2DrUELV3tNOTR6KhdAldfm4R.jpg",
          "duration_secs": 1272,
          "duration": "00:21:12",
          "video": {
            "index": 0,
            "codec_name": "hevc",
            "codec_long_name": "unknown",
            "profile": 1,
            "codec_type": "video",
            "codec_tag_string": "[0][0][0][0]",
            "codec_tag": "0x0000",
            "width": 1920,
            "height": 1080,
            "coded_width": 1920,
            "coded_height": 1080,
            "closed_captions": 0,
            "film_grain": 0,
            "has_b_frames": 2,
            "sample_aspect_ratio": "1:1",
            "display_aspect_ratio": "16:9",
            "pix_fmt": "yuv420p",
            "level": 120,
            "color_range": "tv",
            "color_space": "bt709",
            "color_transfer": "bt709",
            "color_primaries": "bt709",
            "chroma_location": "left",
            "refs": 1,
            "r_frame_rate": "25/1",
            "avg_frame_rate": "25/1",
            "time_base": "1/1000",
            "start_pts": 5,
            "start_time": 0.005,
            "extradata_size": 2231,
            "disposition": {
              "default": 1,
              "dub": 0,
              "original": 0,
              "comment": 0,
              "lyrics": 0,
              "karaoke": 0,
              "forced": 0,
              "hearing_impaired": 0,
              "visual_impaired": 0,
              "clean_effects": 0,
              "attached_pic": 0,
              "timed_thumbnails": 0,
              "captions": 0,
              "descriptions": 0,
              "metadata": 0,
              "dependent": 0,
              "still_image": 0
            }
          },
          "audio": {
            "index": 1,
            "codec_name": "ac3",
            "codec_long_name": "unknown",
            "codec_type": "audio",
            "codec_tag_string": "[0][0][0][0]",
            "codec_tag": "0x0000",
            "sample_fmt": "fltp",
            "sample_rate": 48000,
            "channels": 2,
            "channel_layout": "stereo",
            "bits_per_sample": 0,
            "r_frame_rate": "0/0",
            "avg_frame_rate": "0/0",
            "time_base": "1/1000",
            "start_pts": 0,
            "start_time": 0,
            "bit_rate": 224000,
            "disposition": {
              "default": 1,
              "dub": 0,
              "original": 0,
              "comment": 0,
              "lyrics": 0,
              "karaoke": 0,
              "forced": 0,
              "hearing_impaired": 0,
              "visual_impaired": 0,
              "clean_effects": 0,
              "attached_pic": 0,
              "timed_thumbnails": 0,
              "captions": 0,
              "descriptions": 0,
              "metadata": 0,
              "dependent": 0,
              "still_image": 0
            },
            "tags": {
              "language": "ger",
              "title": ""
            }
          },
          "bitrate": 3350
        },
        "custom_sid": null,
        "added": 1677337498,
        "season": 2,
        "direct_source": ""
      },
      {
        "id": 459933,
        "episode_num": 7,
        "title": "DE - jerks. (DE) - S02E07 - Paul",
        "container_extension": "mkv",
        "info": {
          "air_date": "2018-03-29",
          "crew": "Christian Ulmen",
          "rating": 0,
          "id": 69931,
          "movie_image": "https://image.tmdb.org/t/p/w185/wVR7hQUKnjLNXb15SWPTaj095eg.jpg",
          "duration_secs": 1317,
          "duration": "00:21:57",
          "video": {
            "index": 0,
            "codec_name": "hevc",
            "codec_long_name": "unknown",
            "profile": 1,
            "codec_type": "video",
            "codec_tag_string": "[0][0][0][0]",
            "codec_tag": "0x0000",
            "width": 1920,
            "height": 1080,
            "coded_width": 1920,
            "coded_height": 1080,
            "closed_captions": 0,
            "film_grain": 0,
            "has_b_frames": 2,
            "sample_aspect_ratio": "1:1",
            "display_aspect_ratio": "16:9",
            "pix_fmt": "yuv420p",
            "level": 120,
            "color_range": "tv",
            "color_space": "bt709",
            "color_transfer": "bt709",
            "color_primaries": "bt709",
            "chroma_location": "left",
            "refs": 1,
            "r_frame_rate": "25/1",
            "avg_frame_rate": "25/1",
            "time_base": "1/1000",
            "start_pts": 5,
            "start_time": 0.005,
            "extradata_size": 2231,
            "disposition": {
              "default": 1,
              "dub": 0,
              "original": 0,
              "comment": 0,
              "lyrics": 0,
              "karaoke": 0,
              "forced": 0,
              "hearing_impaired": 0,
              "visual_impaired": 0,
              "clean_effects": 0,
              "attached_pic": 0,
              "timed_thumbnails": 0,
              "captions": 0,
              "descriptions": 0,
              "metadata": 0,
              "dependent": 0,
              "still_image": 0
            }
          },
          "audio": {
            "index": 1,
            "codec_name": "ac3",
            "codec_long_name": "unknown",
            "codec_type": "audio",
            "codec_tag_string": "[0][0][0][0]",
            "codec_tag": "0x0000",
            "sample_fmt": "fltp",
            "sample_rate": 48000,
            "channels": 2,
            "channel_layout": "stereo",
            "bits_per_sample": 0,
            "r_frame_rate": "0/0",
            "avg_frame_rate": "0/0",
            "time_base": "1/1000",
            "start_pts": 0,
            "start_time": 0,
            "bit_rate": 224000,
            "disposition": {
              "default": 1,
              "dub": 0,
              "original": 0,
              "comment": 0,
              "lyrics": 0,
              "karaoke": 0,
              "forced": 0,
              "hearing_impaired": 0,
              "visual_impaired": 0,
              "clean_effects": 0,
              "attached_pic": 0,
              "timed_thumbnails": 0,
              "captions": 0,
              "descriptions": 0,
              "metadata": 0,
              "dependent": 0,
              "still_image": 0
            },
            "tags": {
              "language": "ger",
              "title": ""
            }
          },
          "bitrate": 2583
        },
        "custom_sid": null,
        "added": 1677337499,
        "season": 2,
        "direct_source": ""
      },
      {
        "id": 459934,
        "episode_num": 8,
        "title": "DE - jerks. (DE) - S02E08 - Escort",
        "container_extension": "mkv",
        "info": {
          "air_date": "2018-03-29",
          "crew": "Christian Ulmen",
          "rating": 0,
          "id": 69931,
          "movie_image": "https://image.tmdb.org/t/p/w185/aD7HqFSR6ceznMKvHOsZHNn38VM.jpg",
          "duration_secs": 1424,
          "duration": "00:23:44",
          "video": {
            "index": 0,
            "codec_name": "hevc",
            "codec_long_name": "unknown",
            "profile": 1,
            "codec_type": "video",
            "codec_tag_string": "[0][0][0][0]",
            "codec_tag": "0x0000",
            "width": 1920,
            "height": 1080,
            "coded_width": 1920,
            "coded_height": 1080,
            "closed_captions": 0,
            "film_grain": 0,
            "has_b_frames": 2,
            "sample_aspect_ratio": "1:1",
            "display_aspect_ratio": "16:9",
            "pix_fmt": "yuv420p",
            "level": 120,
            "color_range": "tv",
            "color_space": "bt709",
            "color_transfer": "bt709",
            "color_primaries": "bt709",
            "chroma_location": "left",
            "refs": 1,
            "r_frame_rate": "25/1",
            "avg_frame_rate": "25/1",
            "time_base": "1/1000",
            "start_pts": 5,
            "start_time": 0.005,
            "extradata_size": 2231,
            "disposition": {
              "default": 1,
              "dub": 0,
              "original": 0,
              "comment": 0,
              "lyrics": 0,
              "karaoke": 0,
              "forced": 0,
              "hearing_impaired": 0,
              "visual_impaired": 0,
              "clean_effects": 0,
              "attached_pic": 0,
              "timed_thumbnails": 0,
              "captions": 0,
              "descriptions": 0,
              "metadata": 0,
              "dependent": 0,
              "still_image": 0
            }
          },
          "audio": {
            "index": 1,
            "codec_name": "ac3",
            "codec_long_name": "unknown",
            "codec_type": "audio",
            "codec_tag_string": "[0][0][0][0]",
            "codec_tag": "0x0000",
            "sample_fmt": "fltp",
            "sample_rate": 48000,
            "channels": 2,
            "channel_layout": "stereo",
            "bits_per_sample": 0,
            "r_frame_rate": "0/0",
            "avg_frame_rate": "0/0",
            "time_base": "1/1000",
            "start_pts": 0,
            "start_time": 0,
            "bit_rate": 224000,
            "disposition": {
              "default": 1,
              "dub": 0,
              "original": 0,
              "comment": 0,
              "lyrics": 0,
              "karaoke": 0,
              "forced": 0,
              "hearing_impaired": 0,
              "visual_impaired": 0,
              "clean_effects": 0,
              "attached_pic": 0,
              "timed_thumbnails": 0,
              "captions": 0,
              "descriptions": 0,
              "metadata": 0,
              "dependent": 0,
              "still_image": 0
            },
            "tags": {
              "language": "ger",
              "title": ""
            }
          },
          "bitrate": 2109
        },
        "custom_sid": null,
        "added": 1677337499,
        "season": 2,
        "direct_source": ""
      },
      {
        "id": 459935,
        "episode_num": 9,
        "title": "DE - jerks. (DE) - S02E09 - Noah",
        "container_extension": "mkv",
        "info": {
          "air_date": "2018-03-29",
          "crew": "Christian Ulmen",
          "rating": 0,
          "id": 69931,
          "movie_image": "https://image.tmdb.org/t/p/w185/ntclXc2MaZxWRD7wbvau9VXaCtl.jpg",
          "duration_secs": 1224,
          "duration": "00:20:24",
          "video": {
            "index": 0,
            "codec_name": "hevc",
            "codec_long_name": "unknown",
            "profile": 1,
            "codec_type": "video",
            "codec_tag_string": "[0][0][0][0]",
            "codec_tag": "0x0000",
            "width": 1920,
            "height": 1080,
            "coded_width": 1920,
            "coded_height": 1080,
            "closed_captions": 0,
            "film_grain": 0,
            "has_b_frames": 2,
            "sample_aspect_ratio": "1:1",
            "display_aspect_ratio": "16:9",
            "pix_fmt": "yuv420p",
            "level": 120,
            "color_range": "tv",
            "color_space": "bt709",
            "color_transfer": "bt709",
            "color_primaries": "bt709",
            "chroma_location": "left",
            "refs": 1,
            "r_frame_rate": "25/1",
            "avg_frame_rate": "25/1",
            "time_base": "1/1000",
            "start_pts": 5,
            "start_time": 0.005,
            "extradata_size": 2231,
            "disposition": {
              "default": 1,
              "dub": 0,
              "original": 0,
              "comment": 0,
              "lyrics": 0,
              "karaoke": 0,
              "forced": 0,
              "hearing_impaired": 0,
              "visual_impaired": 0,
              "clean_effects": 0,
              "attached_pic": 0,
              "timed_thumbnails": 0,
              "captions": 0,
              "descriptions": 0,
              "metadata": 0,
              "dependent": 0,
              "still_image": 0
            }
          },
          "audio": {
            "index": 1,
            "codec_name": "ac3",
            "codec_long_name": "unknown",
            "codec_type": "audio",
            "codec_tag_string": "[0][0][0][0]",
            "codec_tag": "0x0000",
            "sample_fmt": "fltp",
            "sample_rate": 48000,
            "channels": 2,
            "channel_layout": "stereo",
            "bits_per_sample": 0,
            "r_frame_rate": "0/0",
            "avg_frame_rate": "0/0",
            "time_base": "1/1000",
            "start_pts": 0,
            "start_time": 0,
            "bit_rate": 224000,
            "disposition": {
              "default": 1,
              "dub": 0,
              "original": 0,
              "comment": 0,
              "lyrics": 0,
              "karaoke": 0,
              "forced": 0,
              "hearing_impaired": 0,
              "visual_impaired": 0,
              "clean_effects": 0,
              "attached_pic": 0,
              "timed_thumbnails": 0,
              "captions": 0,
              "descriptions": 0,
              "metadata": 0,
              "dependent": 0,
              "still_image": 0
            },
            "tags": {
              "language": "ger",
              "title": ""
            }
          },
          "bitrate": 2409
        },
        "custom_sid": null,
        "added": 1677337499,
        "season": 2,
        "direct_source": ""
      },
      {
        "id": 459936,
        "episode_num": 10,
        "title": "DE - jerks. (DE) - S02E10 - Der kleine Yardim",
        "container_extension": "mkv",
        "info": {
          "air_date": "2018-03-29",
          "crew": "Christian Ulmen",
          "rating": 9,
          "id": 69931,
          "movie_image": "https://image.tmdb.org/t/p/w185/6W8sBoeaxM5eHOEVo3bZcONCNTk.jpg",
          "duration_secs": 1271,
          "duration": "00:21:11",
          "video": {
            "index": 0,
            "codec_name": "hevc",
            "codec_long_name": "unknown",
            "profile": 1,
            "codec_type": "video",
            "codec_tag_string": "[0][0][0][0]",
            "codec_tag": "0x0000",
            "width": 1920,
            "height": 1080,
            "coded_width": 1920,
            "coded_height": 1080,
            "closed_captions": 0,
            "film_grain": 0,
            "has_b_frames": 2,
            "sample_aspect_ratio": "1:1",
            "display_aspect_ratio": "16:9",
            "pix_fmt": "yuv420p",
            "level": 120,
            "color_range": "tv",
            "color_space": "bt709",
            "color_transfer": "bt709",
            "color_primaries": "bt709",
            "chroma_location": "left",
            "refs": 1,
            "r_frame_rate": "25/1",
            "avg_frame_rate": "25/1",
            "time_base": "1/1000",
            "start_pts": 5,
            "start_time": 0.005,
            "extradata_size": 2231,
            "disposition": {
              "default": 1,
              "dub": 0,
              "original": 0,
              "comment": 0,
              "lyrics": 0,
              "karaoke": 0,
              "forced": 0,
              "hearing_impaired": 0,
              "visual_impaired": 0,
              "clean_effects": 0,
              "attached_pic": 0,
              "timed_thumbnails": 0,
              "captions": 0,
              "descriptions": 0,
              "metadata": 0,
              "dependent": 0,
              "still_image": 0
            }
          },
          "audio": {
            "index": 1,
            "codec_name": "ac3",
            "codec_long_name": "unknown",
            "codec_type": "audio",
            "codec_tag_string": "[0][0][0][0]",
            "codec_tag": "0x0000",
            "sample_fmt": "fltp",
            "sample_rate": 48000,
            "channels": 2,
            "channel_layout": "stereo",
            "bits_per_sample": 0,
            "r_frame_rate": "0/0",
            "avg_frame_rate": "0/0",
            "time_base": "1/1000",
            "start_pts": 0,
            "start_time": 0,
            "bit_rate": 224000,
            "disposition": {
              "default": 1,
              "dub": 0,
              "original": 0,
              "comment": 0,
              "lyrics": 0,
              "karaoke": 0,
              "forced": 0,
              "hearing_impaired": 0,
              "visual_impaired": 0,
              "clean_effects": 0,
              "attached_pic": 0,
              "timed_thumbnails": 0,
              "captions": 0,
              "descriptions": 0,
              "metadata": 0,
              "dependent": 0,
              "still_image": 0
            },
            "tags": {
              "language": "ger",
              "title": ""
            }
          },
          "bitrate": 2590
        },
        "custom_sid": null,
        "added": 1677337499,
        "season": 2,
        "direct_source": ""
      }
    ],
    [
      {
        "id": 459937,
        "episode_num": 1,
        "title": "DE - jerks. (DE) - S03E01 - Happiness",
        "container_extension": "mkv",
        "info": {
          "air_date": "2019-06-18",
          "crew": "Christian Ulmen",
          "rating": 0,
          "id": 69931,
          "movie_image": "https://image.tmdb.org/t/p/w185/nYlb7ZU9EAPWbwn85kvMeUmmp40.jpg",
          "duration_secs": 1419,
          "duration": "00:23:39",
          "video": {
            "index": 0,
            "codec_name": "hevc",
            "codec_long_name": "unknown",
            "profile": 1,
            "codec_type": "video",
            "codec_tag_string": "[0][0][0][0]",
            "codec_tag": "0x0000",
            "width": 1920,
            "height": 1080,
            "coded_width": 1920,
            "coded_height": 1080,
            "closed_captions": 0,
            "film_grain": 0,
            "has_b_frames": 2,
            "sample_aspect_ratio": "1:1",
            "display_aspect_ratio": "16:9",
            "pix_fmt": "yuv420p",
            "level": 120,
            "color_range": "tv",
            "color_space": "bt709",
            "color_transfer": "bt709",
            "color_primaries": "bt709",
            "chroma_location": "left",
            "refs": 1,
            "r_frame_rate": "25/1",
            "avg_frame_rate": "25/1",
            "time_base": "1/1000",
            "start_pts": 5,
            "start_time": 0.005,
            "extradata_size": 2231,
            "disposition": {
              "default": 1,
              "dub": 0,
              "original": 0,
              "comment": 0,
              "lyrics": 0,
              "karaoke": 0,
              "forced": 0,
              "hearing_impaired": 0,
              "visual_impaired": 0,
              "clean_effects": 0,
              "attached_pic": 0,
              "timed_thumbnails": 0,
              "captions": 0,
              "descriptions": 0,
              "metadata": 0,
              "dependent": 0,
              "still_image": 0
            }
          },
          "audio": {
            "index": 1,
            "codec_name": "ac3",
            "codec_long_name": "unknown",
            "codec_type": "audio",
            "codec_tag_string": "[0][0][0][0]",
            "codec_tag": "0x0000",
            "sample_fmt": "fltp",
            "sample_rate": 48000,
            "channels": 2,
            "channel_layout": "stereo",
            "bits_per_sample": 0,
            "r_frame_rate": "0/0",
            "avg_frame_rate": "0/0",
            "time_base": "1/1000",
            "start_pts": 0,
            "start_time": 0,
            "bit_rate": 224000,
            "disposition": {
              "default": 1,
              "dub": 0,
              "original": 0,
              "comment": 0,
              "lyrics": 0,
              "karaoke": 0,
              "forced": 0,
              "hearing_impaired": 0,
              "visual_impaired": 0,
              "clean_effects": 0,
              "attached_pic": 0,
              "timed_thumbnails": 0,
              "captions": 0,
              "descriptions": 0,
              "metadata": 0,
              "dependent": 0,
              "still_image": 0
            },
            "tags": {
              "language": "ger",
              "title": ""
            }
          },
          "bitrate": 2597
        },
        "custom_sid": null,
        "added": 1677337515,
        "season": 3,
        "direct_source": ""
      },
      {
        "id": 459938,
        "episode_num": 2,
        "title": "DE - jerks. (DE) - S03E02 - Volker",
        "container_extension": "mkv",
        "info": {
          "air_date": "2019-06-18",
          "crew": "Christian Ulmen",
          "rating": 0,
          "id": 69931,
          "movie_image": "https://image.tmdb.org/t/p/w185/ot4JtCZaZTMJUSoxowb1F0HTCdm.jpg",
          "duration_secs": 1568,
          "duration": "00:26:08",
          "video": {
            "index": 0,
            "codec_name": "hevc",
            "codec_long_name": "unknown",
            "profile": 1,
            "codec_type": "video",
            "codec_tag_string": "[0][0][0][0]",
            "codec_tag": "0x0000",
            "width": 1920,
            "height": 1080,
            "coded_width": 1920,
            "coded_height": 1080,
            "closed_captions": 0,
            "film_grain": 0,
            "has_b_frames": 2,
            "sample_aspect_ratio": "1:1",
            "display_aspect_ratio": "16:9",
            "pix_fmt": "yuv420p",
            "level": 120,
            "color_range": "tv",
            "color_space": "bt709",
            "color_transfer": "bt709",
            "color_primaries": "bt709",
            "chroma_location": "left",
            "refs": 1,
            "r_frame_rate": "25/1",
            "avg_frame_rate": "25/1",
            "time_base": "1/1000",
            "start_pts": 5,
            "start_time": 0.005,
            "extradata_size": 2231,
            "disposition": {
              "default": 1,
              "dub": 0,
              "original": 0,
              "comment": 0,
              "lyrics": 0,
              "karaoke": 0,
              "forced": 0,
              "hearing_impaired": 0,
              "visual_impaired": 0,
              "clean_effects": 0,
              "attached_pic": 0,
              "timed_thumbnails": 0,
              "captions": 0,
              "descriptions": 0,
              "metadata": 0,
              "dependent": 0,
              "still_image": 0
            }
          },
          "audio": {
            "index": 1,
            "codec_name": "ac3",
            "codec_long_name": "unknown",
            "codec_type": "audio",
            "codec_tag_string": "[0][0][0][0]",
            "codec_tag": "0x0000",
            "sample_fmt": "fltp",
            "sample_rate": 48000,
            "channels": 2,
            "channel_layout": "stereo",
            "bits_per_sample": 0,
            "r_frame_rate": "0/0",
            "avg_frame_rate": "0/0",
            "time_base": "1/1000",
            "start_pts": 0,
            "start_time": 0,
            "bit_rate": 224000,
            "disposition": {
              "default": 1,
              "dub": 0,
              "original": 0,
              "comment": 0,
              "lyrics": 0,
              "karaoke": 0,
              "forced": 0,
              "hearing_impaired": 0,
              "visual_impaired": 0,
              "clean_effects": 0,
              "attached_pic": 0,
              "timed_thumbnails": 0,
              "captions": 0,
              "descriptions": 0,
              "metadata": 0,
              "dependent": 0,
              "still_image": 0
            },
            "tags": {
              "language": "ger",
              "title": ""
            }
          },
          "bitrate": 2132
        },
        "custom_sid": null,
        "added": 1677337515,
        "season": 3,
        "direct_source": ""
      },
      {
        "id": 459939,
        "episode_num": 3,
        "title": "DE - jerks. (DE) - S03E03 - Babas Tod",
        "container_extension": "mkv",
        "info": {
          "air_date": "2019-06-25",
          "crew": "Christian Ulmen",
          "rating": 0,
          "id": 69931,
          "movie_image": "https://image.tmdb.org/t/p/w185/cSrjtdponxH8a4NBg9ByCrzPQLj.jpg",
          "duration_secs": 1559,
          "duration": "00:25:59",
          "video": {
            "index": 0,
            "codec_name": "hevc",
            "codec_long_name": "unknown",
            "profile": 1,
            "codec_type": "video",
            "codec_tag_string": "[0][0][0][0]",
            "codec_tag": "0x0000",
            "width": 1920,
            "height": 1080,
            "coded_width": 1920,
            "coded_height": 1080,
            "closed_captions": 0,
            "film_grain": 0,
            "has_b_frames": 2,
            "sample_aspect_ratio": "1:1",
            "display_aspect_ratio": "16:9",
            "pix_fmt": "yuv420p",
            "level": 120,
            "color_range": "tv",
            "color_space": "bt709",
            "color_transfer": "bt709",
            "color_primaries": "bt709",
            "chroma_location": "left",
            "refs": 1,
            "r_frame_rate": "25/1",
            "avg_frame_rate": "25/1",
            "time_base": "1/1000",
            "start_pts": 5,
            "start_time": 0.005,
            "extradata_size": 2231,
            "disposition": {
              "default": 1,
              "dub": 0,
              "original": 0,
              "comment": 0,
              "lyrics": 0,
              "karaoke": 0,
              "forced": 0,
              "hearing_impaired": 0,
              "visual_impaired": 0,
              "clean_effects": 0,
              "attached_pic": 0,
              "timed_thumbnails": 0,
              "captions": 0,
              "descriptions": 0,
              "metadata": 0,
              "dependent": 0,
              "still_image": 0
            }
          },
          "audio": {
            "index": 1,
            "codec_name": "ac3",
            "codec_long_name": "unknown",
            "codec_type": "audio",
            "codec_tag_string": "[0][0][0][0]",
            "codec_tag": "0x0000",
            "sample_fmt": "fltp",
            "sample_rate": 48000,
            "channels": 2,
            "channel_layout": "stereo",
            "bits_per_sample": 0,
            "r_frame_rate": "0/0",
            "avg_frame_rate": "0/0",
            "time_base": "1/1000",
            "start_pts": 0,
            "start_time": 0,
            "bit_rate": 224000,
            "disposition": {
              "default": 1,
              "dub": 0,
              "original": 0,
              "comment": 0,
              "lyrics": 0,
              "karaoke": 0,
              "forced": 0,
              "hearing_impaired": 0,
              "visual_impaired": 0,
              "clean_effects": 0,
              "attached_pic": 0,
              "timed_thumbnails": 0,
              "captions": 0,
              "descriptions": 0,
              "metadata": 0,
              "dependent": 0,
              "still_image": 0
            },
            "tags": {
              "language": "ger",
              "title": ""
            }
          },
          "bitrate": 2499
        },
        "custom_sid": null,
        "added": 1677337515,
        "season": 3,
        "direct_source": ""
      },
      {
        "id": 459940,
        "episode_num": 4,
        "title": "DE - jerks. (DE) - S03E04 - Blütezeit",
        "container_extension": "mkv",
        "info": {
          "air_date": "2019-06-25",
          "crew": "Christian Ulmen",
          "rating": 0,
          "id": 69931,
          "movie_image": "https://image.tmdb.org/t/p/w185/wBVaSHCB9X2pflPmUas49PPuZJW.jpg",
          "duration_secs": 1377,
          "duration": "00:22:57",
          "video": {
            "index": 0,
            "codec_name": "hevc",
            "codec_long_name": "unknown",
            "profile": 1,
            "codec_type": "video",
            "codec_tag_string": "[0][0][0][0]",
            "codec_tag": "0x0000",
            "width": 1920,
            "height": 1080,
            "coded_width": 1920,
            "coded_height": 1080,
            "closed_captions": 0,
            "film_grain": 0,
            "has_b_frames": 2,
            "sample_aspect_ratio": "1:1",
            "display_aspect_ratio": "16:9",
            "pix_fmt": "yuv420p",
            "level": 120,
            "color_range": "tv",
            "color_space": "bt709",
            "color_transfer": "bt709",
            "color_primaries": "bt709",
            "chroma_location": "left",
            "refs": 1,
            "r_frame_rate": "25/1",
            "avg_frame_rate": "25/1",
            "time_base": "1/1000",
            "start_pts": 5,
            "start_time": 0.005,
            "extradata_size": 2231,
            "disposition": {
              "default": 1,
              "dub": 0,
              "original": 0,
              "comment": 0,
              "lyrics": 0,
              "karaoke": 0,
              "forced": 0,
              "hearing_impaired": 0,
              "visual_impaired": 0,
              "clean_effects": 0,
              "attached_pic": 0,
              "timed_thumbnails": 0,
              "captions": 0,
              "descriptions": 0,
              "metadata": 0,
              "dependent": 0,
              "still_image": 0
            }
          },
          "audio": {
            "index": 1,
            "codec_name": "ac3",
            "codec_long_name": "unknown",
            "codec_type": "audio",
            "codec_tag_string": "[0][0][0][0]",
            "codec_tag": "0x0000",
            "sample_fmt": "fltp",
            "sample_rate": 48000,
            "channels": 2,
            "channel_layout": "stereo",
            "bits_per_sample": 0,
            "r_frame_rate": "0/0",
            "avg_frame_rate": "0/0",
            "time_base": "1/1000",
            "start_pts": 0,
            "start_time": 0,
            "bit_rate": 224000,
            "disposition": {
              "default": 1,
              "dub": 0,
              "original": 0,
              "comment": 0,
              "lyrics": 0,
              "karaoke": 0,
              "forced": 0,
              "hearing_impaired": 0,
              "visual_impaired": 0,
              "clean_effects": 0,
              "attached_pic": 0,
              "timed_thumbnails": 0,
              "captions": 0,
              "descriptions": 0,
              "metadata": 0,
              "dependent": 0,
              "still_image": 0
            },
            "tags": {
              "language": "ger",
              "title": ""
            }
          },
          "bitrate": 2771
        },
        "custom_sid": null,
        "added": 1677337515,
        "season": 3,
        "direct_source": ""
      },
      {
        "id": 459941,
        "episode_num": 5,
        "title": "DE - jerks. (DE) - S03E05 - Griebnitzsee",
        "container_extension": "mkv",
        "info": {
          "air_date": "2019-07-02",
          "crew": "Christian Ulmen",
          "rating": 0,
          "id": 69931,
          "movie_image": "https://image.tmdb.org/t/p/w185/4xLxFPDukIZjdKMcBRPtTDXypbk.jpg",
          "duration_secs": 1604,
          "duration": "00:26:44",
          "video": {
            "index": 0,
            "codec_name": "hevc",
            "codec_long_name": "unknown",
            "profile": 1,
            "codec_type": "video",
            "codec_tag_string": "[0][0][0][0]",
            "codec_tag": "0x0000",
            "width": 1920,
            "height": 1080,
            "coded_width": 1920,
            "coded_height": 1080,
            "closed_captions": 0,
            "film_grain": 0,
            "has_b_frames": 2,
            "sample_aspect_ratio": "1:1",
            "display_aspect_ratio": "16:9",
            "pix_fmt": "yuv420p",
            "level": 120,
            "color_range": "tv",
            "color_space": "bt709",
            "color_transfer": "bt709",
            "color_primaries": "bt709",
            "chroma_location": "left",
            "refs": 1,
            "r_frame_rate": "25/1",
            "avg_frame_rate": "25/1",
            "time_base": "1/1000",
            "start_pts": 5,
            "start_time": 0.005,
            "extradata_size": 2231,
            "disposition": {
              "default": 1,
              "dub": 0,
              "original": 0,
              "comment": 0,
              "lyrics": 0,
              "karaoke": 0,
              "forced": 0,
              "hearing_impaired": 0,
              "visual_impaired": 0,
              "clean_effects": 0,
              "attached_pic": 0,
              "timed_thumbnails": 0,
              "captions": 0,
              "descriptions": 0,
              "metadata": 0,
              "dependent": 0,
              "still_image": 0
            }
          },
          "audio": {
            "index": 1,
            "codec_name": "ac3",
            "codec_long_name": "unknown",
            "codec_type": "audio",
            "codec_tag_string": "[0][0][0][0]",
            "codec_tag": "0x0000",
            "sample_fmt": "fltp",
            "sample_rate": 48000,
            "channels": 2,
            "channel_layout": "stereo",
            "bits_per_sample": 0,
            "r_frame_rate": "0/0",
            "avg_frame_rate": "0/0",
            "time_base": "1/1000",
            "start_pts": 0,
            "start_time": 0,
            "bit_rate": 224000,
            "disposition": {
              "default": 1,
              "dub": 0,
              "original": 0,
              "comment": 0,
              "lyrics": 0,
              "karaoke": 0,
              "forced": 0,
              "hearing_impaired": 0,
              "visual_impaired": 0,
              "clean_effects": 0,
              "attached_pic": 0,
              "timed_thumbnails": 0,
              "captions": 0,
              "descriptions": 0,
              "metadata": 0,
              "dependent": 0,
              "still_image": 0
            },
            "tags": {
              "language": "ger",
              "title": ""
            }
          },
          "bitrate": 3020
        },
        "custom_sid": null,
        "added": 1677337516,
        "season": 3,
        "direct_source": ""
      },
      {
        "id": 459942,
        "episode_num": 6,
        "title": "DE - jerks. (DE) - S03E06 - Jump Up - Jump Up and Get Down",
        "container_extension": "mkv",
        "info": {
          "air_date": "2019-07-02",
          "crew": "Christian Ulmen",
          "rating": 0,
          "id": 69931,
          "movie_image": "https://image.tmdb.org/t/p/w185/u1XeLNYi1J3VllRu4JfVLsOa1tO.jpg",
          "duration_secs": 1558,
          "duration": "00:25:58",
          "video": {
            "index": 0,
            "codec_name": "hevc",
            "codec_long_name": "unknown",
            "profile": 1,
            "codec_type": "video",
            "codec_tag_string": "[0][0][0][0]",
            "codec_tag": "0x0000",
            "width": 1920,
            "height": 1080,
            "coded_width": 1920,
            "coded_height": 1080,
            "closed_captions": 0,
            "film_grain": 0,
            "has_b_frames": 2,
            "sample_aspect_ratio": "1:1",
            "display_aspect_ratio": "16:9",
            "pix_fmt": "yuv420p",
            "level": 120,
            "color_range": "tv",
            "color_space": "bt709",
            "color_transfer": "bt709",
            "color_primaries": "bt709",
            "chroma_location": "left",
            "refs": 1,
            "r_frame_rate": "25/1",
            "avg_frame_rate": "25/1",
            "time_base": "1/1000",
            "start_pts": 5,
            "start_time": 0.005,
            "extradata_size": 2231,
            "disposition": {
              "default": 1,
              "dub": 0,
              "original": 0,
              "comment": 0,
              "lyrics": 0,
              "karaoke": 0,
              "forced": 0,
              "hearing_impaired": 0,
              "visual_impaired": 0,
              "clean_effects": 0,
              "attached_pic": 0,
              "timed_thumbnails": 0,
              "captions": 0,
              "descriptions": 0,
              "metadata": 0,
              "dependent": 0,
              "still_image": 0
            }
          },
          "audio": {
            "index": 1,
            "codec_name": "ac3",
            "codec_long_name": "unknown",
            "codec_type": "audio",
            "codec_tag_string": "[0][0][0][0]",
            "codec_tag": "0x0000",
            "sample_fmt": "fltp",
            "sample_rate": 48000,
            "channels": 2,
            "channel_layout": "stereo",
            "bits_per_sample": 0,
            "r_frame_rate": "0/0",
            "avg_frame_rate": "0/0",
            "time_base": "1/1000",
            "start_pts": 0,
            "start_time": 0,
            "bit_rate": 224000,
            "disposition": {
              "default": 1,
              "dub": 0,
              "original": 0,
              "comment": 0,
              "lyrics": 0,
              "karaoke": 0,
              "forced": 0,
              "hearing_impaired": 0,
              "visual_impaired": 0,
              "clean_effects": 0,
              "attached_pic": 0,
              "timed_thumbnails": 0,
              "captions": 0,
              "descriptions": 0,
              "metadata": 0,
              "dependent": 0,
              "still_image": 0
            },
            "tags": {
              "language": "ger",
              "title": ""
            }
          },
          "bitrate": 2505
        },
        "custom_sid": null,
        "added": 1677337516,
        "season": 3,
        "direct_source": ""
      },
      {
        "id": 459943,
        "episode_num": 7,
        "title": "DE - jerks. (DE) - S03E07 - House of Cards",
        "container_extension": "mkv",
        "info": {
          "air_date": "2019-07-09",
          "crew": "Christian Ulmen",
          "rating": 0,
          "id": 69931,
          "movie_image": "https://image.tmdb.org/t/p/w185/liiv2TAugoBiLVxMrfmnxjBacGn.jpg",
          "duration_secs": 1523,
          "duration": "00:25:23",
          "video": {
            "index": 0,
            "codec_name": "hevc",
            "codec_long_name": "unknown",
            "profile": 1,
            "codec_type": "video",
            "codec_tag_string": "[0][0][0][0]",
            "codec_tag": "0x0000",
            "width": 1920,
            "height": 1080,
            "coded_width": 1920,
            "coded_height": 1080,
            "closed_captions": 0,
            "film_grain": 0,
            "has_b_frames": 2,
            "sample_aspect_ratio": "1:1",
            "display_aspect_ratio": "16:9",
            "pix_fmt": "yuv420p",
            "level": 120,
            "color_range": "tv",
            "color_space": "bt709",
            "color_transfer": "bt709",
            "color_primaries": "bt709",
            "chroma_location": "left",
            "refs": 1,
            "r_frame_rate": "25/1",
            "avg_frame_rate": "25/1",
            "time_base": "1/1000",
            "start_pts": 5,
            "start_time": 0.005,
            "extradata_size": 2231,
            "disposition": {
              "default": 1,
              "dub": 0,
              "original": 0,
              "comment": 0,
              "lyrics": 0,
              "karaoke": 0,
              "forced": 0,
              "hearing_impaired": 0,
              "visual_impaired": 0,
              "clean_effects": 0,
              "attached_pic": 0,
              "timed_thumbnails": 0,
              "captions": 0,
              "descriptions": 0,
              "metadata": 0,
              "dependent": 0,
              "still_image": 0
            }
          },
          "audio": {
            "index": 1,
            "codec_name": "ac3",
            "codec_long_name": "unknown",
            "codec_type": "audio",
            "codec_tag_string": "[0][0][0][0]",
            "codec_tag": "0x0000",
            "sample_fmt": "fltp",
            "sample_rate": 48000,
            "channels": 2,
            "channel_layout": "stereo",
            "bits_per_sample": 0,
            "r_frame_rate": "0/0",
            "avg_frame_rate": "0/0",
            "time_base": "1/1000",
            "start_pts": 0,
            "start_time": 0,
            "bit_rate": 224000,
            "disposition": {
              "default": 1,
              "dub": 0,
              "original": 0,
              "comment": 0,
              "lyrics": 0,
              "karaoke": 0,
              "forced": 0,
              "hearing_impaired": 0,
              "visual_impaired": 0,
              "clean_effects": 0,
              "attached_pic": 0,
              "timed_thumbnails": 0,
              "captions": 0,
              "descriptions": 0,
              "metadata": 0,
              "dependent": 0,
              "still_image": 0
            },
            "tags": {
              "language": "ger",
              "title": ""
            }
          },
          "bitrate": 2370
        },
        "custom_sid": null,
        "added": 1677337516,
        "season": 3,
        "direct_source": ""
      },
      {
        "id": 459944,
        "episode_num": 8,
        "title": "DE - jerks. (DE) - S03E08 - W. Axl Rose",
        "container_extension": "mkv",
        "info": {
          "air_date": "2019-07-09",
          "crew": "Christian Ulmen",
          "rating": 0,
          "id": 69931,
          "movie_image": "https://image.tmdb.org/t/p/w185/cDFUEJHspH1zxve5PHdoLS73Tbp.jpg",
          "duration_secs": 1486,
          "duration": "00:24:46",
          "video": {
            "index": 0,
            "codec_name": "hevc",
            "codec_long_name": "unknown",
            "profile": 1,
            "codec_type": "video",
            "codec_tag_string": "[0][0][0][0]",
            "codec_tag": "0x0000",
            "width": 1920,
            "height": 1080,
            "coded_width": 1920,
            "coded_height": 1080,
            "closed_captions": 0,
            "film_grain": 0,
            "has_b_frames": 2,
            "sample_aspect_ratio": "1:1",
            "display_aspect_ratio": "16:9",
            "pix_fmt": "yuv420p",
            "level": 120,
            "color_range": "tv",
            "color_space": "bt709",
            "color_transfer": "bt709",
            "color_primaries": "bt709",
            "chroma_location": "left",
            "refs": 1,
            "r_frame_rate": "25/1",
            "avg_frame_rate": "25/1",
            "time_base": "1/1000",
            "start_pts": 5,
            "start_time": 0.005,
            "extradata_size": 2231,
            "disposition": {
              "default": 1,
              "dub": 0,
              "original": 0,
              "comment": 0,
              "lyrics": 0,
              "karaoke": 0,
              "forced": 0,
              "hearing_impaired": 0,
              "visual_impaired": 0,
              "clean_effects": 0,
              "attached_pic": 0,
              "timed_thumbnails": 0,
              "captions": 0,
              "descriptions": 0,
              "metadata": 0,
              "dependent": 0,
              "still_image": 0
            }
          },
          "audio": {
            "index": 1,
            "codec_name": "ac3",
            "codec_long_name": "unknown",
            "codec_type": "audio",
            "codec_tag_string": "[0][0][0][0]",
            "codec_tag": "0x0000",
            "sample_fmt": "fltp",
            "sample_rate": 48000,
            "channels": 2,
            "channel_layout": "stereo",
            "bits_per_sample": 0,
            "r_frame_rate": "0/0",
            "avg_frame_rate": "0/0",
            "time_base": "1/1000",
            "start_pts": 0,
            "start_time": 0,
            "bit_rate": 224000,
            "disposition": {
              "default": 1,
              "dub": 0,
              "original": 0,
              "comment": 0,
              "lyrics": 0,
              "karaoke": 0,
              "forced": 0,
              "hearing_impaired": 0,
              "visual_impaired": 0,
              "clean_effects": 0,
              "attached_pic": 0,
              "timed_thumbnails": 0,
              "captions": 0,
              "descriptions": 0,
              "metadata": 0,
              "dependent": 0,
              "still_image": 0
            },
            "tags": {
              "language": "ger",
              "title": ""
            }
          },
          "bitrate": 2750
        },
        "custom_sid": null,
        "added": 1677337516,
        "season": 3,
        "direct_source": ""
      },
      {
        "id": 459945,
        "episode_num": 9,
        "title": "DE - jerks. (DE) - S03E09 - Shalom",
        "container_extension": "mkv",
        "info": {
          "air_date": "2019-07-16",
          "crew": "Christian Ulmen",
          "rating": 0,
          "id": 69931,
          "movie_image": "https://image.tmdb.org/t/p/w185/wL0C6YNmpSA2mTcxxGF7DhlOJNa.jpg",
          "duration_secs": 1601,
          "duration": "00:26:41",
          "video": {
            "index": 0,
            "codec_name": "hevc",
            "codec_long_name": "unknown",
            "profile": 1,
            "codec_type": "video",
            "codec_tag_string": "[0][0][0][0]",
            "codec_tag": "0x0000",
            "width": 1920,
            "height": 1080,
            "coded_width": 1920,
            "coded_height": 1080,
            "closed_captions": 0,
            "film_grain": 0,
            "has_b_frames": 2,
            "sample_aspect_ratio": "1:1",
            "display_aspect_ratio": "16:9",
            "pix_fmt": "yuv420p",
            "level": 120,
            "color_range": "tv",
            "color_space": "bt709",
            "color_transfer": "bt709",
            "color_primaries": "bt709",
            "chroma_location": "left",
            "refs": 1,
            "r_frame_rate": "25/1",
            "avg_frame_rate": "25/1",
            "time_base": "1/1000",
            "start_pts": 5,
            "start_time": 0.005,
            "extradata_size": 2231,
            "disposition": {
              "default": 1,
              "dub": 0,
              "original": 0,
              "comment": 0,
              "lyrics": 0,
              "karaoke": 0,
              "forced": 0,
              "hearing_impaired": 0,
              "visual_impaired": 0,
              "clean_effects": 0,
              "attached_pic": 0,
              "timed_thumbnails": 0,
              "captions": 0,
              "descriptions": 0,
              "metadata": 0,
              "dependent": 0,
              "still_image": 0
            }
          },
          "audio": {
            "index": 1,
            "codec_name": "ac3",
            "codec_long_name": "unknown",
            "codec_type": "audio",
            "codec_tag_string": "[0][0][0][0]",
            "codec_tag": "0x0000",
            "sample_fmt": "fltp",
            "sample_rate": 48000,
            "channels": 2,
            "channel_layout": "stereo",
            "bits_per_sample": 0,
            "r_frame_rate": "0/0",
            "avg_frame_rate": "0/0",
            "time_base": "1/1000",
            "start_pts": 0,
            "start_time": 0,
            "bit_rate": 224000,
            "disposition": {
              "default": 1,
              "dub": 0,
              "original": 0,
              "comment": 0,
              "lyrics": 0,
              "karaoke": 0,
              "forced": 0,
              "hearing_impaired": 0,
              "visual_impaired": 0,
              "clean_effects": 0,
              "attached_pic": 0,
              "timed_thumbnails": 0,
              "captions": 0,
              "descriptions": 0,
              "metadata": 0,
              "dependent": 0,
              "still_image": 0
            },
            "tags": {
              "language": "ger",
              "title": ""
            }
          },
          "bitrate": 2853
        },
        "custom_sid": null,
        "added": 1677337517,
        "season": 3,
        "direct_source": ""
      },
      {
        "id": 459946,
        "episode_num": 10,
        "title": "DE - jerks. (DE) - S03E10 - Rausch",
        "container_extension": "mkv",
        "info": {
          "air_date": "2019-07-16",
          "crew": "Christian Ulmen, Christian Ulmen",
          "rating": 0,
          "id": 69931,
          "movie_image": "https://image.tmdb.org/t/p/w185/qSZX0dCgcUL2Jx6PUoB2esafAiM.jpg",
          "duration_secs": 1634,
          "duration": "00:27:14",
          "video": {
            "index": 0,
            "codec_name": "hevc",
            "codec_long_name": "unknown",
            "profile": 1,
            "codec_type": "video",
            "codec_tag_string": "[0][0][0][0]",
            "codec_tag": "0x0000",
            "width": 1920,
            "height": 1080,
            "coded_width": 1920,
            "coded_height": 1080,
            "closed_captions": 0,
            "film_grain": 0,
            "has_b_frames": 2,
            "sample_aspect_ratio": "1:1",
            "display_aspect_ratio": "16:9",
            "pix_fmt": "yuv420p",
            "level": 120,
            "color_range": "tv",
            "color_space": "bt709",
            "color_transfer": "bt709",
            "color_primaries": "bt709",
            "chroma_location": "left",
            "refs": 1,
            "r_frame_rate": "25/1",
            "avg_frame_rate": "25/1",
            "time_base": "1/1000",
            "start_pts": 5,
            "start_time": 0.005,
            "extradata_size": 2231,
            "disposition": {
              "default": 1,
              "dub": 0,
              "original": 0,
              "comment": 0,
              "lyrics": 0,
              "karaoke": 0,
              "forced": 0,
              "hearing_impaired": 0,
              "visual_impaired": 0,
              "clean_effects": 0,
              "attached_pic": 0,
              "timed_thumbnails": 0,
              "captions": 0,
              "descriptions": 0,
              "metadata": 0,
              "dependent": 0,
              "still_image": 0
            }
          },
          "audio": {
            "index": 1,
            "codec_name": "ac3",
            "codec_long_name": "unknown",
            "codec_type": "audio",
            "codec_tag_string": "[0][0][0][0]",
            "codec_tag": "0x0000",
            "sample_fmt": "fltp",
            "sample_rate": 48000,
            "channels": 2,
            "channel_layout": "stereo",
            "bits_per_sample": 0,
            "r_frame_rate": "0/0",
            "avg_frame_rate": "0/0",
            "time_base": "1/1000",
            "start_pts": 0,
            "start_time": 0,
            "bit_rate": 224000,
            "disposition": {
              "default": 1,
              "dub": 0,
              "original": 0,
              "comment": 0,
              "lyrics": 0,
              "karaoke": 0,
              "forced": 0,
              "hearing_impaired": 0,
              "visual_impaired": 0,
              "clean_effects": 0,
              "attached_pic": 0,
              "timed_thumbnails": 0,
              "captions": 0,
              "descriptions": 0,
              "metadata": 0,
              "dependent": 0,
              "still_image": 0
            },
            "tags": {
              "language": "ger",
              "title": ""
            }
          },
          "bitrate": 2207
        },
        "custom_sid": null,
        "added": 1677337517,
        "season": 3,
        "direct_source": ""
      }
    ],
    [
      {
        "id": 459947,
        "episode_num": 1,
        "title": "DE - jerks. (DE) - S04E01 - Gentleman's Stich",
        "container_extension": "mkv",
        "info": {
          "air_date": "2020-12-23",
          "crew": "Christian Ulmen, Christian Ulmen",
          "rating": 8.5,
          "id": 69931,
          "movie_image": "https://image.tmdb.org/t/p/w185/nLQxTNSBmo8xEjDxbc6j8Zm9vzx.jpg",
          "duration_secs": 2910,
          "duration": "00:48:30",
          "video": {
            "index": 0,
            "codec_name": "hevc",
            "codec_long_name": "unknown",
            "profile": 1,
            "codec_type": "video",
            "codec_tag_string": "[0][0][0][0]",
            "codec_tag": "0x0000",
            "width": 1280,
            "height": 720,
            "coded_width": 1280,
            "coded_height": 720,
            "closed_captions": 0,
            "film_grain": 0,
            "has_b_frames": 2,
            "sample_aspect_ratio": "1:1",
            "display_aspect_ratio": "16:9",
            "pix_fmt": "yuv420p",
            "level": 93,
            "color_range": "tv",
            "color_space": "bt709",
            "color_transfer": "bt709",
            "color_primaries": "bt709",
            "chroma_location": "left",
            "refs": 1,
            "r_frame_rate": "25/1",
            "avg_frame_rate": "25/1",
            "time_base": "1/1000",
            "start_pts": 5,
            "start_time": 0.005,
            "extradata_size": 2084,
            "disposition": {
              "default": 1,
              "dub": 0,
              "original": 0,
              "comment": 0,
              "lyrics": 0,
              "karaoke": 0,
              "forced": 0,
              "hearing_impaired": 0,
              "visual_impaired": 0,
              "clean_effects": 0,
              "attached_pic": 0,
              "timed_thumbnails": 0,
              "captions": 0,
              "descriptions": 0,
              "metadata": 0,
              "dependent": 0,
              "still_image": 0
            }
          },
          "audio": {
            "index": 1,
            "codec_name": "ac3",
            "codec_long_name": "unknown",
            "codec_type": "audio",
            "codec_tag_string": "[0][0][0][0]",
            "codec_tag": "0x0000",
            "sample_fmt": "fltp",
            "sample_rate": 48000,
            "channels": 2,
            "channel_layout": "stereo",
            "bits_per_sample": 0,
            "r_frame_rate": "0/0",
            "avg_frame_rate": "0/0",
            "time_base": "1/1000",
            "start_pts": 0,
            "start_time": 0,
            "bit_rate": 224000,
            "disposition": {
              "default": 1,
              "dub": 0,
              "original": 0,
              "comment": 0,
              "lyrics": 0,
              "karaoke": 0,
              "forced": 0,
              "hearing_impaired": 0,
              "visual_impaired": 0,
              "clean_effects": 0,
              "attached_pic": 0,
              "timed_thumbnails": 0,
              "captions": 0,
              "descriptions": 0,
              "metadata": 0,
              "dependent": 0,
              "still_image": 0
            },
            "tags": {
              "language": "ger",
              "title": "Stereo"
            }
          },
          "bitrate": 1135
        },
        "custom_sid": null,
        "added": 1677337530,
        "season": 4,
        "direct_source": ""
      },
      {
        "id": 459948,
        "episode_num": 2,
        "title": "DE - jerks. (DE) - S04E02 - Erschütterung",
        "container_extension": "mkv",
        "info": {
          "air_date": "2021-08-26",
          "rating": 8,
          "id": 69931,
          "movie_image": "https://image.tmdb.org/t/p/w185/ud5snte5G9zzqE1Iu3jLs878FYs.jpg",
          "duration_secs": 2024,
          "duration": "00:33:44",
          "video": {
            "index": 0,
            "codec_name": "hevc",
            "codec_long_name": "unknown",
            "profile": 1,
            "codec_type": "video",
            "codec_tag_string": "[0][0][0][0]",
            "codec_tag": "0x0000",
            "width": 1920,
            "height": 1080,
            "coded_width": 1920,
            "coded_height": 1080,
            "closed_captions": 0,
            "film_grain": 0,
            "has_b_frames": 2,
            "sample_aspect_ratio": "1:1",
            "display_aspect_ratio": "16:9",
            "pix_fmt": "yuv420p",
            "level": 120,
            "color_range": "tv",
            "color_space": "bt709",
            "color_transfer": "bt709",
            "color_primaries": "bt709",
            "chroma_location": "left",
            "refs": 1,
            "r_frame_rate": "25/1",
            "avg_frame_rate": "25/1",
            "time_base": "1/1000",
            "start_pts": 5,
            "start_time": 0.005,
            "extradata_size": 2084,
            "disposition": {
              "default": 1,
              "dub": 0,
              "original": 0,
              "comment": 0,
              "lyrics": 0,
              "karaoke": 0,
              "forced": 0,
              "hearing_impaired": 0,
              "visual_impaired": 0,
              "clean_effects": 0,
              "attached_pic": 0,
              "timed_thumbnails": 0,
              "captions": 0,
              "descriptions": 0,
              "metadata": 0,
              "dependent": 0,
              "still_image": 0
            }
          },
          "audio": {
            "index": 1,
            "codec_name": "ac3",
            "codec_long_name": "unknown",
            "codec_type": "audio",
            "codec_tag_string": "[0][0][0][0]",
            "codec_tag": "0x0000",
            "sample_fmt": "fltp",
            "sample_rate": 48000,
            "channels": 2,
            "channel_layout": "stereo",
            "bits_per_sample": 0,
            "r_frame_rate": "0/0",
            "avg_frame_rate": "0/0",
            "time_base": "1/1000",
            "start_pts": 0,
            "start_time": 0,
            "bit_rate": 224000,
            "disposition": {
              "default": 1,
              "dub": 0,
              "original": 0,
              "comment": 0,
              "lyrics": 0,
              "karaoke": 0,
              "forced": 0,
              "hearing_impaired": 0,
              "visual_impaired": 0,
              "clean_effects": 0,
              "attached_pic": 0,
              "timed_thumbnails": 0,
              "captions": 0,
              "descriptions": 0,
              "metadata": 0,
              "dependent": 0,
              "still_image": 0
            },
            "tags": {
              "language": "ger",
              "title": "Stereo"
            }
          },
          "bitrate": 1309
        },
        "custom_sid": null,
        "added": 1677337530,
        "season": 4,
        "direct_source": ""
      },
      {
        "id": 459949,
        "episode_num": 3,
        "title": "DE - jerks. (DE) - S04E03 - Steuern",
        "container_extension": "mkv",
        "info": {
          "air_date": "2021-08-26",
          "rating": 8,
          "id": 69931,
          "movie_image": "https://image.tmdb.org/t/p/w185/kBJLKRfIOybqKMnY7pjCjc7589K.jpg",
          "duration_secs": 1429,
          "duration": "00:23:49",
          "video": {
            "index": 0,
            "codec_name": "hevc",
            "codec_long_name": "unknown",
            "profile": 1,
            "codec_type": "video",
            "codec_tag_string": "[0][0][0][0]",
            "codec_tag": "0x0000",
            "width": 1920,
            "height": 1080,
            "coded_width": 1920,
            "coded_height": 1080,
            "closed_captions": 0,
            "film_grain": 0,
            "has_b_frames": 2,
            "sample_aspect_ratio": "1:1",
            "display_aspect_ratio": "16:9",
            "pix_fmt": "yuv420p",
            "level": 120,
            "color_range": "tv",
            "color_space": "bt709",
            "color_transfer": "bt709",
            "color_primaries": "bt709",
            "chroma_location": "left",
            "refs": 1,
            "r_frame_rate": "25/1",
            "avg_frame_rate": "25/1",
            "time_base": "1/1000",
            "start_pts": 5,
            "start_time": 0.005,
            "extradata_size": 2084,
            "disposition": {
              "default": 1,
              "dub": 0,
              "original": 0,
              "comment": 0,
              "lyrics": 0,
              "karaoke": 0,
              "forced": 0,
              "hearing_impaired": 0,
              "visual_impaired": 0,
              "clean_effects": 0,
              "attached_pic": 0,
              "timed_thumbnails": 0,
              "captions": 0,
              "descriptions": 0,
              "metadata": 0,
              "dependent": 0,
              "still_image": 0
            }
          },
          "audio": {
            "index": 1,
            "codec_name": "ac3",
            "codec_long_name": "unknown",
            "codec_type": "audio",
            "codec_tag_string": "[0][0][0][0]",
            "codec_tag": "0x0000",
            "sample_fmt": "fltp",
            "sample_rate": 48000,
            "channels": 2,
            "channel_layout": "stereo",
            "bits_per_sample": 0,
            "r_frame_rate": "0/0",
            "avg_frame_rate": "0/0",
            "time_base": "1/1000",
            "start_pts": 0,
            "start_time": 0,
            "bit_rate": 224000,
            "disposition": {
              "default": 1,
              "dub": 0,
              "original": 0,
              "comment": 0,
              "lyrics": 0,
              "karaoke": 0,
              "forced": 0,
              "hearing_impaired": 0,
              "visual_impaired": 0,
              "clean_effects": 0,
              "attached_pic": 0,
              "timed_thumbnails": 0,
              "captions": 0,
              "descriptions": 0,
              "metadata": 0,
              "dependent": 0,
              "still_image": 0
            },
            "tags": {
              "language": "ger",
              "title": "Stereo"
            }
          },
          "bitrate": 1502
        },
        "custom_sid": null,
        "added": 1677337531,
        "season": 4,
        "direct_source": ""
      },
      {
        "id": 459950,
        "episode_num": 4,
        "title": "DE - jerks. (DE) - S04E04 - Abid",
        "container_extension": "mkv",
        "info": {
          "air_date": "2021-09-02",
          "rating": 8,
          "id": 69931,
          "movie_image": "https://image.tmdb.org/t/p/w185/nwmFgRVvgD3HU1yXXQFVbSdF5SZ.jpg",
          "duration_secs": 1518,
          "duration": "00:25:18",
          "video": {
            "index": 0,
            "codec_name": "hevc",
            "codec_long_name": "unknown",
            "profile": 1,
            "codec_type": "video",
            "codec_tag_string": "[0][0][0][0]",
            "codec_tag": "0x0000",
            "width": 1920,
            "height": 1080,
            "coded_width": 1920,
            "coded_height": 1080,
            "closed_captions": 0,
            "film_grain": 0,
            "has_b_frames": 2,
            "sample_aspect_ratio": "1:1",
            "display_aspect_ratio": "16:9",
            "pix_fmt": "yuv420p",
            "level": 120,
            "color_range": "tv",
            "color_space": "bt709",
            "color_transfer": "bt709",
            "color_primaries": "bt709",
            "chroma_location": "left",
            "refs": 1,
            "r_frame_rate": "25/1",
            "avg_frame_rate": "25/1",
            "time_base": "1/1000",
            "start_pts": 5,
            "start_time": 0.005,
            "extradata_size": 2084,
            "disposition": {
              "default": 1,
              "dub": 0,
              "original": 0,
              "comment": 0,
              "lyrics": 0,
              "karaoke": 0,
              "forced": 0,
              "hearing_impaired": 0,
              "visual_impaired": 0,
              "clean_effects": 0,
              "attached_pic": 0,
              "timed_thumbnails": 0,
              "captions": 0,
              "descriptions": 0,
              "metadata": 0,
              "dependent": 0,
              "still_image": 0
            }
          },
          "audio": {
            "index": 1,
            "codec_name": "ac3",
            "codec_long_name": "unknown",
            "codec_type": "audio",
            "codec_tag_string": "[0][0][0][0]",
            "codec_tag": "0x0000",
            "sample_fmt": "fltp",
            "sample_rate": 48000,
            "channels": 2,
            "channel_layout": "stereo",
            "bits_per_sample": 0,
            "r_frame_rate": "0/0",
            "avg_frame_rate": "0/0",
            "time_base": "1/1000",
            "start_pts": 0,
            "start_time": 0,
            "bit_rate": 224000,
            "disposition": {
              "default": 1,
              "dub": 0,
              "original": 0,
              "comment": 0,
              "lyrics": 0,
              "karaoke": 0,
              "forced": 0,
              "hearing_impaired": 0,
              "visual_impaired": 0,
              "clean_effects": 0,
              "attached_pic": 0,
              "timed_thumbnails": 0,
              "captions": 0,
              "descriptions": 0,
              "metadata": 0,
              "dependent": 0,
              "still_image": 0
            },
            "tags": {
              "language": "ger",
              "title": "Stereo"
            }
          },
          "bitrate": 1730
        },
        "custom_sid": null,
        "added": 1677337531,
        "season": 4,
        "direct_source": ""
      },
      {
        "id": 459951,
        "episode_num": 5,
        "title": "DE - jerks. (DE) - S04E05 - Emily",
        "container_extension": "mkv",
        "info": {
          "air_date": "2021-09-02",
          "rating": 8,
          "id": 69931,
          "movie_image": "https://image.tmdb.org/t/p/w185/xs64pGmxA96kjHSPE8LvitUpaqz.jpg",
          "duration_secs": 1507,
          "duration": "00:25:07",
          "video": {
            "index": 0,
            "codec_name": "hevc",
            "codec_long_name": "unknown",
            "profile": 1,
            "codec_type": "video",
            "codec_tag_string": "[0][0][0][0]",
            "codec_tag": "0x0000",
            "width": 1920,
            "height": 1080,
            "coded_width": 1920,
            "coded_height": 1080,
            "closed_captions": 0,
            "film_grain": 0,
            "has_b_frames": 2,
            "sample_aspect_ratio": "1:1",
            "display_aspect_ratio": "16:9",
            "pix_fmt": "yuv420p",
            "level": 120,
            "color_range": "tv",
            "color_space": "bt709",
            "color_transfer": "bt709",
            "color_primaries": "bt709",
            "chroma_location": "left",
            "refs": 1,
            "r_frame_rate": "25/1",
            "avg_frame_rate": "25/1",
            "time_base": "1/1000",
            "start_pts": 5,
            "start_time": 0.005,
            "extradata_size": 2084,
            "disposition": {
              "default": 1,
              "dub": 0,
              "original": 0,
              "comment": 0,
              "lyrics": 0,
              "karaoke": 0,
              "forced": 0,
              "hearing_impaired": 0,
              "visual_impaired": 0,
              "clean_effects": 0,
              "attached_pic": 0,
              "timed_thumbnails": 0,
              "captions": 0,
              "descriptions": 0,
              "metadata": 0,
              "dependent": 0,
              "still_image": 0
            }
          },
          "audio": {
            "index": 1,
            "codec_name": "ac3",
            "codec_long_name": "unknown",
            "codec_type": "audio",
            "codec_tag_string": "[0][0][0][0]",
            "codec_tag": "0x0000",
            "sample_fmt": "fltp",
            "sample_rate": 48000,
            "channels": 2,
            "channel_layout": "stereo",
            "bits_per_sample": 0,
            "r_frame_rate": "0/0",
            "avg_frame_rate": "0/0",
            "time_base": "1/1000",
            "start_pts": 0,
            "start_time": 0,
            "bit_rate": 224000,
            "disposition": {
              "default": 1,
              "dub": 0,
              "original": 0,
              "comment": 0,
              "lyrics": 0,
              "karaoke": 0,
              "forced": 0,
              "hearing_impaired": 0,
              "visual_impaired": 0,
              "clean_effects": 0,
              "attached_pic": 0,
              "timed_thumbnails": 0,
              "captions": 0,
              "descriptions": 0,
              "metadata": 0,
              "dependent": 0,
              "still_image": 0
            },
            "tags": {
              "language": "ger",
              "title": "Stereo"
            }
          },
          "bitrate": 1682
        },
        "custom_sid": null,
        "added": 1677337531,
        "season": 4,
        "direct_source": ""
      },
      {
        "id": 459952,
        "episode_num": 6,
        "title": "DE - jerks. (DE) - S04E06 - Gräber",
        "container_extension": "mkv",
        "info": {
          "air_date": "2021-09-09",
          "rating": 0,
          "id": 69931,
          "movie_image": "https://image.tmdb.org/t/p/w185/AmSW2Qnf8ueAGBZdXfty6phyWn1.jpg",
          "duration_secs": 1308,
          "duration": "00:21:48",
          "video": {
            "index": 0,
            "codec_name": "hevc",
            "codec_long_name": "unknown",
            "profile": 1,
            "codec_type": "video",
            "codec_tag_string": "[0][0][0][0]",
            "codec_tag": "0x0000",
            "width": 1920,
            "height": 1080,
            "coded_width": 1920,
            "coded_height": 1080,
            "closed_captions": 0,
            "film_grain": 0,
            "has_b_frames": 2,
            "sample_aspect_ratio": "1:1",
            "display_aspect_ratio": "16:9",
            "pix_fmt": "yuv420p",
            "level": 120,
            "color_range": "tv",
            "color_space": "bt709",
            "color_transfer": "bt709",
            "color_primaries": "bt709",
            "chroma_location": "left",
            "refs": 1,
            "r_frame_rate": "25/1",
            "avg_frame_rate": "25/1",
            "time_base": "1/1000",
            "start_pts": 5,
            "start_time": 0.005,
            "extradata_size": 2084,
            "disposition": {
              "default": 1,
              "dub": 0,
              "original": 0,
              "comment": 0,
              "lyrics": 0,
              "karaoke": 0,
              "forced": 0,
              "hearing_impaired": 0,
              "visual_impaired": 0,
              "clean_effects": 0,
              "attached_pic": 0,
              "timed_thumbnails": 0,
              "captions": 0,
              "descriptions": 0,
              "metadata": 0,
              "dependent": 0,
              "still_image": 0
            }
          },
          "audio": {
            "index": 1,
            "codec_name": "ac3",
            "codec_long_name": "unknown",
            "codec_type": "audio",
            "codec_tag_string": "[0][0][0][0]",
            "codec_tag": "0x0000",
            "sample_fmt": "fltp",
            "sample_rate": 48000,
            "channels": 2,
            "channel_layout": "stereo",
            "bits_per_sample": 0,
            "r_frame_rate": "0/0",
            "avg_frame_rate": "0/0",
            "time_base": "1/1000",
            "start_pts": 0,
            "start_time": 0,
            "bit_rate": 224000,
            "disposition": {
              "default": 1,
              "dub": 0,
              "original": 0,
              "comment": 0,
              "lyrics": 0,
              "karaoke": 0,
              "forced": 0,
              "hearing_impaired": 0,
              "visual_impaired": 0,
              "clean_effects": 0,
              "attached_pic": 0,
              "timed_thumbnails": 0,
              "captions": 0,
              "descriptions": 0,
              "metadata": 0,
              "dependent": 0,
              "still_image": 0
            },
            "tags": {
              "language": "ger",
              "title": "Stereo"
            }
          },
          "bitrate": 1658
        },
        "custom_sid": null,
        "added": 1677337531,
        "season": 4,
        "direct_source": ""
      },
      {
        "id": 459953,
        "episode_num": 7,
        "title": "DE - jerks. (DE) - S04E07 - Disco",
        "container_extension": "mkv",
        "info": {
          "air_date": "2021-09-09",
          "rating": 0,
          "id": 69931,
          "movie_image": "https://image.tmdb.org/t/p/w185/iPVx2kH5zgKGEEiU7aIGqyOm4A.jpg",
          "duration_secs": 1455,
          "duration": "00:24:15",
          "video": {
            "index": 0,
            "codec_name": "hevc",
            "codec_long_name": "unknown",
            "profile": 1,
            "codec_type": "video",
            "codec_tag_string": "[0][0][0][0]",
            "codec_tag": "0x0000",
            "width": 1920,
            "height": 1080,
            "coded_width": 1920,
            "coded_height": 1080,
            "closed_captions": 0,
            "film_grain": 0,
            "has_b_frames": 2,
            "sample_aspect_ratio": "1:1",
            "display_aspect_ratio": "16:9",
            "pix_fmt": "yuv420p",
            "level": 120,
            "color_range": "tv",
            "color_space": "bt709",
            "color_transfer": "bt709",
            "color_primaries": "bt709",
            "chroma_location": "left",
            "refs": 1,
            "r_frame_rate": "25/1",
            "avg_frame_rate": "25/1",
            "time_base": "1/1000",
            "start_pts": 5,
            "start_time": 0.005,
            "extradata_size": 2084,
            "disposition": {
              "default": 1,
              "dub": 0,
              "original": 0,
              "comment": 0,
              "lyrics": 0,
              "karaoke": 0,
              "forced": 0,
              "hearing_impaired": 0,
              "visual_impaired": 0,
              "clean_effects": 0,
              "attached_pic": 0,
              "timed_thumbnails": 0,
              "captions": 0,
              "descriptions": 0,
              "metadata": 0,
              "dependent": 0,
              "still_image": 0
            }
          },
          "audio": {
            "index": 1,
            "codec_name": "ac3",
            "codec_long_name": "unknown",
            "codec_type": "audio",
            "codec_tag_string": "[0][0][0][0]",
            "codec_tag": "0x0000",
            "sample_fmt": "fltp",
            "sample_rate": 48000,
            "channels": 2,
            "channel_layout": "stereo",
            "bits_per_sample": 0,
            "r_frame_rate": "0/0",
            "avg_frame_rate": "0/0",
            "time_base": "1/1000",
            "start_pts": 0,
            "start_time": 0,
            "bit_rate": 224000,
            "disposition": {
              "default": 1,
              "dub": 0,
              "original": 0,
              "comment": 0,
              "lyrics": 0,
              "karaoke": 0,
              "forced": 0,
              "hearing_impaired": 0,
              "visual_impaired": 0,
              "clean_effects": 0,
              "attached_pic": 0,
              "timed_thumbnails": 0,
              "captions": 0,
              "descriptions": 0,
              "metadata": 0,
              "dependent": 0,
              "still_image": 0
            },
            "tags": {
              "language": "ger",
              "title": "Stereo"
            }
          },
          "bitrate": 1541
        },
        "custom_sid": null,
        "added": 1677337532,
        "season": 4,
        "direct_source": ""
      },
      {
        "id": 459954,
        "episode_num": 8,
        "title": "DE - jerks. (DE) - S04E08 - Krallensohn",
        "container_extension": "mkv",
        "info": {
          "air_date": "2021-09-16",
          "rating": 6,
          "id": 69931,
          "movie_image": "https://image.tmdb.org/t/p/w185/q1dI9BagY4W5W51FQop061nSkhv.jpg",
          "duration_secs": 1137,
          "duration": "00:18:57",
          "video": {
            "index": 0,
            "codec_name": "hevc",
            "codec_long_name": "unknown",
            "profile": 1,
            "codec_type": "video",
            "codec_tag_string": "[0][0][0][0]",
            "codec_tag": "0x0000",
            "width": 1920,
            "height": 1080,
            "coded_width": 1920,
            "coded_height": 1080,
            "closed_captions": 0,
            "film_grain": 0,
            "has_b_frames": 2,
            "sample_aspect_ratio": "1:1",
            "display_aspect_ratio": "16:9",
            "pix_fmt": "yuv420p",
            "level": 120,
            "color_range": "tv",
            "color_space": "bt709",
            "color_transfer": "bt709",
            "color_primaries": "bt709",
            "chroma_location": "left",
            "refs": 1,
            "r_frame_rate": "25/1",
            "avg_frame_rate": "25/1",
            "time_base": "1/1000",
            "start_pts": 5,
            "start_time": 0.005,
            "extradata_size": 2084,
            "disposition": {
              "default": 1,
              "dub": 0,
              "original": 0,
              "comment": 0,
              "lyrics": 0,
              "karaoke": 0,
              "forced": 0,
              "hearing_impaired": 0,
              "visual_impaired": 0,
              "clean_effects": 0,
              "attached_pic": 0,
              "timed_thumbnails": 0,
              "captions": 0,
              "descriptions": 0,
              "metadata": 0,
              "dependent": 0,
              "still_image": 0
            }
          },
          "audio": {
            "index": 1,
            "codec_name": "ac3",
            "codec_long_name": "unknown",
            "codec_type": "audio",
            "codec_tag_string": "[0][0][0][0]",
            "codec_tag": "0x0000",
            "sample_fmt": "fltp",
            "sample_rate": 48000,
            "channels": 2,
            "channel_layout": "stereo",
            "bits_per_sample": 0,
            "r_frame_rate": "0/0",
            "avg_frame_rate": "0/0",
            "time_base": "1/1000",
            "start_pts": 0,
            "start_time": 0,
            "bit_rate": 224000,
            "disposition": {
              "default": 1,
              "dub": 0,
              "original": 0,
              "comment": 0,
              "lyrics": 0,
              "karaoke": 0,
              "forced": 0,
              "hearing_impaired": 0,
              "visual_impaired": 0,
              "clean_effects": 0,
              "attached_pic": 0,
              "timed_thumbnails": 0,
              "captions": 0,
              "descriptions": 0,
              "metadata": 0,
              "dependent": 0,
              "still_image": 0
            },
            "tags": {
              "language": "ger",
              "title": "Stereo"
            }
          },
          "bitrate": 1585
        },
        "custom_sid": null,
        "added": 1677337532,
        "season": 4,
        "direct_source": ""
      },
      {
        "id": 459955,
        "episode_num": 9,
        "title": "DE - jerks. (DE) - S04E09 - Emilia & Simon",
        "container_extension": "mkv",
        "info": {
          "air_date": "2021-09-16",
          "rating": 0,
          "id": 69931,
          "movie_image": "https://image.tmdb.org/t/p/w185/898IyUsg5aXstBkBp5jo6ykjYrV.jpg",
          "duration_secs": 1551,
          "duration": "00:25:51",
          "video": {
            "index": 0,
            "codec_name": "hevc",
            "codec_long_name": "unknown",
            "profile": 1,
            "codec_type": "video",
            "codec_tag_string": "[0][0][0][0]",
            "codec_tag": "0x0000",
            "width": 1920,
            "height": 1080,
            "coded_width": 1920,
            "coded_height": 1080,
            "closed_captions": 0,
            "film_grain": 0,
            "has_b_frames": 2,
            "sample_aspect_ratio": "1:1",
            "display_aspect_ratio": "16:9",
            "pix_fmt": "yuv420p",
            "level": 120,
            "color_range": "tv",
            "color_space": "bt709",
            "color_transfer": "bt709",
            "color_primaries": "bt709",
            "chroma_location": "left",
            "refs": 1,
            "r_frame_rate": "25/1",
            "avg_frame_rate": "25/1",
            "time_base": "1/1000",
            "start_pts": 5,
            "start_time": 0.005,
            "extradata_size": 2084,
            "disposition": {
              "default": 1,
              "dub": 0,
              "original": 0,
              "comment": 0,
              "lyrics": 0,
              "karaoke": 0,
              "forced": 0,
              "hearing_impaired": 0,
              "visual_impaired": 0,
              "clean_effects": 0,
              "attached_pic": 0,
              "timed_thumbnails": 0,
              "captions": 0,
              "descriptions": 0,
              "metadata": 0,
              "dependent": 0,
              "still_image": 0
            }
          },
          "audio": {
            "index": 1,
            "codec_name": "ac3",
            "codec_long_name": "unknown",
            "codec_type": "audio",
            "codec_tag_string": "[0][0][0][0]",
            "codec_tag": "0x0000",
            "sample_fmt": "fltp",
            "sample_rate": 48000,
            "channels": 2,
            "channel_layout": "stereo",
            "bits_per_sample": 0,
            "r_frame_rate": "0/0",
            "avg_frame_rate": "0/0",
            "time_base": "1/1000",
            "start_pts": 0,
            "start_time": 0,
            "bit_rate": 224000,
            "disposition": {
              "default": 1,
              "dub": 0,
              "original": 0,
              "comment": 0,
              "lyrics": 0,
              "karaoke": 0,
              "forced": 0,
              "hearing_impaired": 0,
              "visual_impaired": 0,
              "clean_effects": 0,
              "attached_pic": 0,
              "timed_thumbnails": 0,
              "captions": 0,
              "descriptions": 0,
              "metadata": 0,
              "dependent": 0,
              "still_image": 0
            },
            "tags": {
              "language": "ger",
              "title": "Stereo"
            }
          },
          "bitrate": 1637
        },
        "custom_sid": null,
        "added": 1677337532,
        "season": 4,
        "direct_source": ""
      },
      {
        "id": 459956,
        "episode_num": 10,
        "title": "DE - jerks. (DE) - S04E10 - Dichtung & Wahrheit",
        "container_extension": "mkv",
        "info": {
          "air_date": "2021-09-23",
          "rating": 0,
          "id": 69931,
          "movie_image": "https://image.tmdb.org/t/p/w185/vZxx5qcbulRZFs8x6tFx1QmVFF1.jpg",
          "duration_secs": 1542,
          "duration": "00:25:42",
          "video": {
            "index": 0,
            "codec_name": "hevc",
            "codec_long_name": "unknown",
            "profile": 1,
            "codec_type": "video",
            "codec_tag_string": "[0][0][0][0]",
            "codec_tag": "0x0000",
            "width": 1920,
            "height": 1080,
            "coded_width": 1920,
            "coded_height": 1080,
            "closed_captions": 0,
            "film_grain": 0,
            "has_b_frames": 2,
            "sample_aspect_ratio": "1:1",
            "display_aspect_ratio": "16:9",
            "pix_fmt": "yuv420p",
            "level": 120,
            "color_range": "tv",
            "color_space": "bt709",
            "color_transfer": "bt709",
            "color_primaries": "bt709",
            "chroma_location": "left",
            "refs": 1,
            "r_frame_rate": "25/1",
            "avg_frame_rate": "25/1",
            "time_base": "1/1000",
            "start_pts": 5,
            "start_time": 0.005,
            "extradata_size": 2084,
            "disposition": {
              "default": 1,
              "dub": 0,
              "original": 0,
              "comment": 0,
              "lyrics": 0,
              "karaoke": 0,
              "forced": 0,
              "hearing_impaired": 0,
              "visual_impaired": 0,
              "clean_effects": 0,
              "attached_pic": 0,
              "timed_thumbnails": 0,
              "captions": 0,
              "descriptions": 0,
              "metadata": 0,
              "dependent": 0,
              "still_image": 0
            }
          },
          "audio": {
            "index": 1,
            "codec_name": "ac3",
            "codec_long_name": "unknown",
            "codec_type": "audio",
            "codec_tag_string": "[0][0][0][0]",
            "codec_tag": "0x0000",
            "sample_fmt": "fltp",
            "sample_rate": 48000,
            "channels": 2,
            "channel_layout": "stereo",
            "bits_per_sample": 0,
            "r_frame_rate": "0/0",
            "avg_frame_rate": "0/0",
            "time_base": "1/1000",
            "start_pts": 0,
            "start_time": 0,
            "bit_rate": 224000,
            "disposition": {
              "default": 1,
              "dub": 0,
              "original": 0,
              "comment": 0,
              "lyrics": 0,
              "karaoke": 0,
              "forced": 0,
              "hearing_impaired": 0,
              "visual_impaired": 0,
              "clean_effects": 0,
              "attached_pic": 0,
              "timed_thumbnails": 0,
              "captions": 0,
              "descriptions": 0,
              "metadata": 0,
              "dependent": 0,
              "still_image": 0
            },
            "tags": {
              "language": "ger",
              "title": "Stereo"
            }
          },
          "bitrate": 1255
        },
        "custom_sid": null,
        "added": 1677337532,
        "season": 4,
        "direct_source": ""
      },
      {
        "id": 459957,
        "episode_num": 11,
        "title": "DE - jerks. (DE) - S04E11 - Gras",
        "container_extension": "mkv",
        "info": {
          "air_date": "2021-09-23",
          "rating": 9,
          "id": 69931,
          "movie_image": "https://image.tmdb.org/t/p/w185/fb5FmvlR2A20c9jiRntxwvUm2c5.jpg",
          "duration_secs": 1377,
          "duration": "00:22:57",
          "video": {
            "index": 0,
            "codec_name": "hevc",
            "codec_long_name": "unknown",
            "profile": 1,
            "codec_type": "video",
            "codec_tag_string": "[0][0][0][0]",
            "codec_tag": "0x0000",
            "width": 1920,
            "height": 1080,
            "coded_width": 1920,
            "coded_height": 1080,
            "closed_captions": 0,
            "film_grain": 0,
            "has_b_frames": 2,
            "sample_aspect_ratio": "1:1",
            "display_aspect_ratio": "16:9",
            "pix_fmt": "yuv420p",
            "level": 120,
            "color_range": "tv",
            "color_space": "bt709",
            "color_transfer": "bt709",
            "color_primaries": "bt709",
            "chroma_location": "left",
            "refs": 1,
            "r_frame_rate": "25/1",
            "avg_frame_rate": "25/1",
            "time_base": "1/1000",
            "start_pts": 5,
            "start_time": 0.005,
            "extradata_size": 2084,
            "disposition": {
              "default": 1,
              "dub": 0,
              "original": 0,
              "comment": 0,
              "lyrics": 0,
              "karaoke": 0,
              "forced": 0,
              "hearing_impaired": 0,
              "visual_impaired": 0,
              "clean_effects": 0,
              "attached_pic": 0,
              "timed_thumbnails": 0,
              "captions": 0,
              "descriptions": 0,
              "metadata": 0,
              "dependent": 0,
              "still_image": 0
            }
          },
          "audio": {
            "index": 1,
            "codec_name": "ac3",
            "codec_long_name": "unknown",
            "codec_type": "audio",
            "codec_tag_string": "[0][0][0][0]",
            "codec_tag": "0x0000",
            "sample_fmt": "fltp",
            "sample_rate": 48000,
            "channels": 2,
            "channel_layout": "stereo",
            "bits_per_sample": 0,
            "r_frame_rate": "0/0",
            "avg_frame_rate": "0/0",
            "time_base": "1/1000",
            "start_pts": 0,
            "start_time": 0,
            "bit_rate": 224000,
            "disposition": {
              "default": 1,
              "dub": 0,
              "original": 0,
              "comment": 0,
              "lyrics": 0,
              "karaoke": 0,
              "forced": 0,
              "hearing_impaired": 0,
              "visual_impaired": 0,
              "clean_effects": 0,
              "attached_pic": 0,
              "timed_thumbnails": 0,
              "captions": 0,
              "descriptions": 0,
              "metadata": 0,
              "dependent": 0,
              "still_image": 0
            },
            "tags": {
              "language": "ger",
              "title": "Stereo"
            }
          },
          "bitrate": 1718
        },
        "custom_sid": null,
        "added": 1677337533,
        "season": 4,
        "direct_source": ""
      }
    ],
    [
      {
        "id": 459958,
        "episode_num": 1,
        "title": "DE - jerks. (DE) - S05E01 - Klima",
        "container_extension": "mkv",
        "info": {
          "air_date": "2023-02-02",
          "rating": 0,
          "id": 69931,
          "movie_image": "https://image.tmdb.org/t/p/w185/woLJSBdPZoJRVlJDLjT2nHJqhRz.jpg",
          "duration_secs": 1507,
          "duration": "00:25:07",
          "video": {
            "index": 0,
            "codec_name": "h264",
            "codec_long_name": "unknown",
            "profile": 100,
            "codec_type": "video",
            "codec_tag_string": "[0][0][0][0]",
            "codec_tag": "0x0000",
            "width": 1920,
            "height": 1080,
            "coded_width": 1920,
            "coded_height": 1080,
            "closed_captions": 0,
            "film_grain": 0,
            "has_b_frames": 2,
            "sample_aspect_ratio": "1:1",
            "display_aspect_ratio": "16:9",
            "pix_fmt": "yuv420p",
            "level": 40,
            "chroma_location": "left",
            "field_order": "progressive",
            "refs": 1,
            "is_avc": true,
            "nal_length_size": 4,
            "r_frame_rate": "25/1",
            "avg_frame_rate": "25/1",
            "time_base": "1/1000",
            "start_pts": 0,
            "start_time": 0,
            "bits_per_raw_sample": 8,
            "extradata_size": 43,
            "disposition": {
              "default": 1,
              "dub": 0,
              "original": 0,
              "comment": 0,
              "lyrics": 0,
              "karaoke": 0,
              "forced": 0,
              "hearing_impaired": 0,
              "visual_impaired": 0,
              "clean_effects": 0,
              "attached_pic": 0,
              "timed_thumbnails": 0,
              "captions": 0,
              "descriptions": 0,
              "metadata": 0,
              "dependent": 0,
              "still_image": 0
            },
            "tags": {
              "BPS-eng": 3200070,
              "DURATION-eng": "00:25:07.280000000",
              "NUMBER_OF_FRAMES-eng": 37682,
              "NUMBER_OF_BYTES-eng": 602925283,
              "_STATISTICS_WRITING_APP-eng": "mkvmerge v51.0.0 ('I Wish') 64-bit",
              "_STATISTICS_WRITING_DATE_UTC-eng": "2023-02-01 23:05:54",
              "_STATISTICS_TAGS-eng": "BPS DURATION NUMBER_OF_FRAMES NUMBER_OF_BYTES"
            }
          },
          "audio": {
            "index": 1,
            "codec_name": "aac",
            "codec_long_name": "unknown",
            "profile": 1,
            "codec_type": "audio",
            "codec_tag_string": "[0][0][0][0]",
            "codec_tag": "0x0000",
            "sample_fmt": "fltp",
            "sample_rate": 48000,
            "channels": 2,
            "channel_layout": "stereo",
            "bits_per_sample": 0,
            "r_frame_rate": "0/0",
            "avg_frame_rate": "0/0",
            "time_base": "1/1000",
            "start_pts": 0,
            "start_time": 0,
            "extradata_size": 2,
            "disposition": {
              "default": 1,
              "dub": 0,
              "original": 0,
              "comment": 0,
              "lyrics": 0,
              "karaoke": 0,
              "forced": 0,
              "hearing_impaired": 0,
              "visual_impaired": 0,
              "clean_effects": 0,
              "attached_pic": 0,
              "timed_thumbnails": 0,
              "captions": 0,
              "descriptions": 0,
              "metadata": 0,
              "dependent": 0,
              "still_image": 0
            },
            "tags": {
              "language": "ger",
              "BPS-eng": 157375,
              "DURATION-eng": "00:25:07.306000000",
              "NUMBER_OF_FRAMES-eng": 70655,
              "NUMBER_OF_BYTES-eng": 29651549,
              "_STATISTICS_WRITING_APP-eng": "mkvmerge v51.0.0 ('I Wish') 64-bit",
              "_STATISTICS_WRITING_DATE_UTC-eng": "2023-02-01 23:05:54",
              "_STATISTICS_TAGS-eng": "BPS DURATION NUMBER_OF_FRAMES NUMBER_OF_BYTES"
            }
          },
          "bitrate": 3360
        },
        "custom_sid": null,
        "added": 1677337547,
        "season": 5,
        "direct_source": ""
      },
      {
        "id": 459959,
        "episode_num": 2,
        "title": "DE - jerks. (DE) - S05E02 - Wechseljahre",
        "container_extension": "mkv",
        "info": {
          "air_date": "2023-02-02",
          "rating": 0,
          "id": 69931,
          "movie_image": "https://image.tmdb.org/t/p/w185/gzOS4HIhizC9Vf3PPymlDjWrOzr.jpg",
          "duration_secs": 1220,
          "duration": "00:20:20",
          "video": {
            "index": 0,
            "codec_name": "h264",
            "codec_long_name": "unknown",
            "profile": 100,
            "codec_type": "video",
            "codec_tag_string": "[0][0][0][0]",
            "codec_tag": "0x0000",
            "width": 1920,
            "height": 1080,
            "coded_width": 1920,
            "coded_height": 1080,
            "closed_captions": 0,
            "film_grain": 0,
            "has_b_frames": 2,
            "sample_aspect_ratio": "1:1",
            "display_aspect_ratio": "16:9",
            "pix_fmt": "yuv420p",
            "level": 40,
            "chroma_location": "left",
            "field_order": "progressive",
            "refs": 1,
            "is_avc": true,
            "nal_length_size": 4,
            "r_frame_rate": "25/1",
            "avg_frame_rate": "25/1",
            "time_base": "1/1000",
            "start_pts": 0,
            "start_time": 0,
            "bits_per_raw_sample": 8,
            "extradata_size": 43,
            "disposition": {
              "default": 1,
              "dub": 0,
              "original": 0,
              "comment": 0,
              "lyrics": 0,
              "karaoke": 0,
              "forced": 0,
              "hearing_impaired": 0,
              "visual_impaired": 0,
              "clean_effects": 0,
              "attached_pic": 0,
              "timed_thumbnails": 0,
              "captions": 0,
              "descriptions": 0,
              "metadata": 0,
              "dependent": 0,
              "still_image": 0
            },
            "tags": {
              "BPS-eng": 2562730,
              "DURATION-eng": "00:20:20.840000000",
              "NUMBER_OF_FRAMES-eng": 30521,
              "NUMBER_OF_BYTES-eng": 391085520,
              "_STATISTICS_WRITING_APP-eng": "mkvmerge v51.0.0 ('I Wish') 64-bit",
              "_STATISTICS_WRITING_DATE_UTC-eng": "2023-02-01 23:08:57",
              "_STATISTICS_TAGS-eng": "BPS DURATION NUMBER_OF_FRAMES NUMBER_OF_BYTES"
            }
          },
          "audio": {
            "index": 1,
            "codec_name": "aac",
            "codec_long_name": "unknown",
            "profile": 1,
            "codec_type": "audio",
            "codec_tag_string": "[0][0][0][0]",
            "codec_tag": "0x0000",
            "sample_fmt": "fltp",
            "sample_rate": 48000,
            "channels": 2,
            "channel_layout": "stereo",
            "bits_per_sample": 0,
            "r_frame_rate": "0/0",
            "avg_frame_rate": "0/0",
            "time_base": "1/1000",
            "start_pts": 0,
            "start_time": 0,
            "extradata_size": 2,
            "disposition": {
              "default": 1,
              "dub": 0,
              "original": 0,
              "comment": 0,
              "lyrics": 0,
              "karaoke": 0,
              "forced": 0,
              "hearing_impaired": 0,
              "visual_impaired": 0,
              "clean_effects": 0,
              "attached_pic": 0,
              "timed_thumbnails": 0,
              "captions": 0,
              "descriptions": 0,
              "metadata": 0,
              "dependent": 0,
              "still_image": 0
            },
            "tags": {
              "language": "ger",
              "BPS-eng": 157375,
              "DURATION-eng": "00:20:20.864000000",
              "NUMBER_OF_FRAMES-eng": 57228,
              "NUMBER_OF_BYTES-eng": 24016685,
              "_STATISTICS_WRITING_APP-eng": "mkvmerge v51.0.0 ('I Wish') 64-bit",
              "_STATISTICS_WRITING_DATE_UTC-eng": "2023-02-01 23:08:57",
              "_STATISTICS_TAGS-eng": "BPS DURATION NUMBER_OF_FRAMES NUMBER_OF_BYTES"
            }
          },
          "bitrate": 2724
        },
        "custom_sid": null,
        "added": 1677337547,
        "season": 5,
        "direct_source": ""
      },
      {
        "id": 459960,
        "episode_num": 3,
        "title": "DE - jerks. (DE) - S05E03 - Angst",
        "container_extension": "mkv",
        "info": {
          "air_date": "2023-02-09",
          "rating": 0,
          "id": 69931,
          "movie_image": "https://image.tmdb.org/t/p/w185/roT6prJvurgOsqI7CSmQikTo7OE.jpg",
          "duration_secs": 1817,
          "duration": "00:30:17",
          "video": {
            "index": 0,
            "codec_name": "h264",
            "codec_long_name": "unknown",
            "profile": 100,
            "codec_type": "video",
            "codec_tag_string": "[0][0][0][0]",
            "codec_tag": "0x0000",
            "width": 1920,
            "height": 1080,
            "coded_width": 1920,
            "coded_height": 1080,
            "closed_captions": 0,
            "film_grain": 0,
            "has_b_frames": 2,
            "sample_aspect_ratio": "1:1",
            "display_aspect_ratio": "16:9",
            "pix_fmt": "yuv420p",
            "level": 40,
            "chroma_location": "left",
            "field_order": "progressive",
            "refs": 1,
            "is_avc": true,
            "nal_length_size": 4,
            "r_frame_rate": "25/1",
            "avg_frame_rate": "25/1",
            "time_base": "1/1000",
            "start_pts": 0,
            "start_time": 0,
            "bits_per_raw_sample": 8,
            "extradata_size": 43,
            "disposition": {
              "default": 1,
              "dub": 0,
              "original": 0,
              "comment": 0,
              "lyrics": 0,
              "karaoke": 0,
              "forced": 0,
              "hearing_impaired": 0,
              "visual_impaired": 0,
              "clean_effects": 0,
              "attached_pic": 0,
              "timed_thumbnails": 0,
              "captions": 0,
              "descriptions": 0,
              "metadata": 0,
              "dependent": 0,
              "still_image": 0
            },
            "tags": {
              "BPS-eng": 2588103,
              "DURATION-eng": "00:30:17.080000000",
              "NUMBER_OF_FRAMES-eng": 45427,
              "NUMBER_OF_BYTES-eng": 587848943,
              "_STATISTICS_WRITING_APP-eng": "mkvmerge v51.0.0 ('I Wish') 64-bit",
              "_STATISTICS_WRITING_DATE_UTC-eng": "2023-02-09 13:51:45",
              "_STATISTICS_TAGS-eng": "BPS DURATION NUMBER_OF_FRAMES NUMBER_OF_BYTES"
            }
          },
          "audio": {
            "index": 1,
            "codec_name": "aac",
            "codec_long_name": "unknown",
            "profile": 1,
            "codec_type": "audio",
            "codec_tag_string": "[0][0][0][0]",
            "codec_tag": "0x0000",
            "sample_fmt": "fltp",
            "sample_rate": 48000,
            "channels": 2,
            "channel_layout": "stereo",
            "bits_per_sample": 0,
            "r_frame_rate": "0/0",
            "avg_frame_rate": "0/0",
            "time_base": "1/1000",
            "start_pts": 0,
            "start_time": 0,
            "extradata_size": 2,
            "disposition": {
              "default": 1,
              "dub": 0,
              "original": 0,
              "comment": 0,
              "lyrics": 0,
              "karaoke": 0,
              "forced": 0,
              "hearing_impaired": 0,
              "visual_impaired": 0,
              "clean_effects": 0,
              "attached_pic": 0,
              "timed_thumbnails": 0,
              "captions": 0,
              "descriptions": 0,
              "metadata": 0,
              "dependent": 0,
              "still_image": 0
            },
            "tags": {
              "language": "ger",
              "BPS-eng": 157375,
              "DURATION-eng": "00:30:17.109000000",
              "NUMBER_OF_FRAMES-eng": 85177,
              "NUMBER_OF_BYTES-eng": 35745948,
              "_STATISTICS_WRITING_APP-eng": "mkvmerge v51.0.0 ('I Wish') 64-bit",
              "_STATISTICS_WRITING_DATE_UTC-eng": "2023-02-09 13:51:45",
              "_STATISTICS_TAGS-eng": "BPS DURATION NUMBER_OF_FRAMES NUMBER_OF_BYTES"
            }
          },
          "bitrate": 2748
        },
        "custom_sid": null,
        "added": 1677337548,
        "season": 5,
        "direct_source": ""
      },
      {
        "id": 459961,
        "episode_num": 4,
        "title": "DE - jerks. (DE) - S05E04 - Pan",
        "container_extension": "mkv",
        "info": {
          "air_date": "2023-02-16",
          "rating": 0,
          "id": 69931,
          "movie_image": "https://image.tmdb.org/t/p/w185/5EaftV5QxPBMpL84gk8R0xPO5r2.jpg",
          "duration_secs": 1323,
          "duration": "00:22:03",
          "video": {
            "index": 0,
            "codec_name": "h264",
            "codec_long_name": "unknown",
            "profile": 100,
            "codec_type": "video",
            "codec_tag_string": "[0][0][0][0]",
            "codec_tag": "0x0000",
            "width": 1920,
            "height": 1080,
            "coded_width": 1920,
            "coded_height": 1080,
            "closed_captions": 0,
            "film_grain": 0,
            "has_b_frames": 2,
            "sample_aspect_ratio": "1:1",
            "display_aspect_ratio": "16:9",
            "pix_fmt": "yuv420p",
            "level": 40,
            "chroma_location": "left",
            "field_order": "progressive",
            "refs": 1,
            "is_avc": true,
            "nal_length_size": 4,
            "r_frame_rate": "25/1",
            "avg_frame_rate": "25/1",
            "time_base": "1/1000",
            "start_pts": 0,
            "start_time": 0,
            "bits_per_raw_sample": 8,
            "extradata_size": 43,
            "disposition": {
              "default": 1,
              "dub": 0,
              "original": 0,
              "comment": 0,
              "lyrics": 0,
              "karaoke": 0,
              "forced": 0,
              "hearing_impaired": 0,
              "visual_impaired": 0,
              "clean_effects": 0,
              "attached_pic": 0,
              "timed_thumbnails": 0,
              "captions": 0,
              "descriptions": 0,
              "metadata": 0,
              "dependent": 0,
              "still_image": 0
            },
            "tags": {
              "BPS-eng": 2780758,
              "DURATION-eng": "00:22:03.920000000",
              "NUMBER_OF_FRAMES-eng": 33098,
              "NUMBER_OF_BYTES-eng": 460187779,
              "_STATISTICS_WRITING_APP-eng": "mkvmerge v51.0.0 ('I Wish') 64-bit",
              "_STATISTICS_WRITING_DATE_UTC-eng": "2023-02-15 23:41:30",
              "_STATISTICS_TAGS-eng": "BPS DURATION NUMBER_OF_FRAMES NUMBER_OF_BYTES"
            }
          },
          "audio": {
            "index": 1,
            "codec_name": "aac",
            "codec_long_name": "unknown",
            "profile": 1,
            "codec_type": "audio",
            "codec_tag_string": "[0][0][0][0]",
            "codec_tag": "0x0000",
            "sample_fmt": "fltp",
            "sample_rate": 48000,
            "channels": 2,
            "channel_layout": "stereo",
            "bits_per_sample": 0,
            "r_frame_rate": "0/0",
            "avg_frame_rate": "0/0",
            "time_base": "1/1000",
            "start_pts": 0,
            "start_time": 0,
            "extradata_size": 2,
            "disposition": {
              "default": 1,
              "dub": 0,
              "original": 0,
              "comment": 0,
              "lyrics": 0,
              "karaoke": 0,
              "forced": 0,
              "hearing_impaired": 0,
              "visual_impaired": 0,
              "clean_effects": 0,
              "attached_pic": 0,
              "timed_thumbnails": 0,
              "captions": 0,
              "descriptions": 0,
              "metadata": 0,
              "dependent": 0,
              "still_image": 0
            },
            "tags": {
              "language": "ger",
              "BPS-eng": 157375,
              "DURATION-eng": "00:22:03.946000000",
              "NUMBER_OF_FRAMES-eng": 62060,
              "NUMBER_OF_BYTES-eng": 26044514,
              "_STATISTICS_WRITING_APP-eng": "mkvmerge v51.0.0 ('I Wish') 64-bit",
              "_STATISTICS_WRITING_DATE_UTC-eng": "2023-02-15 23:41:30",
              "_STATISTICS_TAGS-eng": "BPS DURATION NUMBER_OF_FRAMES NUMBER_OF_BYTES"
            }
          },
          "bitrate": 2943
        },
        "custom_sid": null,
        "added": 1677337548,
        "season": 5,
        "direct_source": ""
      },
      {
        "id": 459962,
        "episode_num": 5,
        "title": "DE - jerks. (DE) - S05E05 - Stauffenberg",
        "container_extension": "mkv",
        "info": {
          "air_date": "2023-02-23",
          "rating": 0,
          "id": 69931,
          "movie_image": "https://image.tmdb.org/t/p/w185/dH1DpRmSa172u7QETNPzNGGycCT.jpg",
          "duration_secs": 1585,
          "duration": "00:26:25",
          "video": {
            "index": 0,
            "codec_name": "h264",
            "codec_long_name": "unknown",
            "profile": 100,
            "codec_type": "video",
            "codec_tag_string": "[0][0][0][0]",
            "codec_tag": "0x0000",
            "width": 1920,
            "height": 1080,
            "coded_width": 1920,
            "coded_height": 1080,
            "closed_captions": 0,
            "film_grain": 0,
            "has_b_frames": 2,
            "sample_aspect_ratio": "1:1",
            "display_aspect_ratio": "16:9",
            "pix_fmt": "yuv420p",
            "level": 40,
            "chroma_location": "left",
            "field_order": "progressive",
            "refs": 1,
            "is_avc": true,
            "nal_length_size": 4,
            "r_frame_rate": "25/1",
            "avg_frame_rate": "25/1",
            "time_base": "1/1000",
            "start_pts": 0,
            "start_time": 0,
            "bits_per_raw_sample": 8,
            "extradata_size": 43,
            "disposition": {
              "default": 1,
              "dub": 0,
              "original": 0,
              "comment": 0,
              "lyrics": 0,
              "karaoke": 0,
              "forced": 0,
              "hearing_impaired": 0,
              "visual_impaired": 0,
              "clean_effects": 0,
              "attached_pic": 0,
              "timed_thumbnails": 0,
              "captions": 0,
              "descriptions": 0,
              "metadata": 0,
              "dependent": 0,
              "still_image": 0
            },
            "tags": {
              "BPS-eng": 2736354,
              "DURATION-eng": "00:26:25.360000000",
              "NUMBER_OF_FRAMES-eng": 39634,
              "NUMBER_OF_BYTES-eng": 542263402,
              "_STATISTICS_WRITING_APP-eng": "mkvmerge v51.0.0 ('I Wish') 64-bit",
              "_STATISTICS_WRITING_DATE_UTC-eng": "2023-02-23 00:12:18",
              "_STATISTICS_TAGS-eng": "BPS DURATION NUMBER_OF_FRAMES NUMBER_OF_BYTES"
            }
          },
          "audio": {
            "index": 1,
            "codec_name": "aac",
            "codec_long_name": "unknown",
            "profile": 1,
            "codec_type": "audio",
            "codec_tag_string": "[0][0][0][0]",
            "codec_tag": "0x0000",
            "sample_fmt": "fltp",
            "sample_rate": 48000,
            "channels": 2,
            "channel_layout": "stereo",
            "bits_per_sample": 0,
            "r_frame_rate": "0/0",
            "avg_frame_rate": "0/0",
            "time_base": "1/1000",
            "start_pts": 0,
            "start_time": 0,
            "extradata_size": 2,
            "disposition": {
              "default": 1,
              "dub": 0,
              "original": 0,
              "comment": 0,
              "lyrics": 0,
              "karaoke": 0,
              "forced": 0,
              "hearing_impaired": 0,
              "visual_impaired": 0,
              "clean_effects": 0,
              "attached_pic": 0,
              "timed_thumbnails": 0,
              "captions": 0,
              "descriptions": 0,
              "metadata": 0,
              "dependent": 0,
              "still_image": 0
            },
            "tags": {
              "language": "ger",
              "BPS-eng": 157375,
              "DURATION-eng": "00:26:25.386000000",
              "NUMBER_OF_FRAMES-eng": 74315,
              "NUMBER_OF_BYTES-eng": 31187529,
              "_STATISTICS_WRITING_APP-eng": "mkvmerge v51.0.0 ('I Wish') 64-bit",
              "_STATISTICS_WRITING_DATE_UTC-eng": "2023-02-23 00:12:18",
              "_STATISTICS_TAGS-eng": "BPS DURATION NUMBER_OF_FRAMES NUMBER_OF_BYTES"
            }
          },
          "bitrate": 2897
        },
        "custom_sid": null,
        "added": 1677337548,
        "season": 5,
        "direct_source": ""
      },
      {
        "id": 504365,
        "episode_num": 6,
        "title": "DE - jerks. (DE) - S05E06 - Der Anfang",
        "container_extension": "mkv",
        "info": {
          "air_date": "2023-03-02",
          "rating": 0,
          "id": 69931,
          "movie_image": "https://image.tmdb.org/t/p/w185/jwOoUe8c0esCurBYobd0TDEkKHI.jpg",
          "duration_secs": 1270,
          "duration": "00:21:10",
          "video": {
            "index": 0,
            "codec_name": "h264",
            "codec_long_name": "unknown",
            "profile": 77,
            "codec_type": "video",
            "codec_tag_string": "[0][0][0][0]",
            "codec_tag": "0x0000",
            "width": 1920,
            "height": 1080,
            "coded_width": 1920,
            "coded_height": 1080,
            "closed_captions": 0,
            "film_grain": 0,
            "has_b_frames": 2,
            "sample_aspect_ratio": "1:1",
            "display_aspect_ratio": "16:9",
            "pix_fmt": "yuv420p",
            "level": 40,
            "color_range": "tv",
            "color_space": "bt709",
            "color_transfer": "bt709",
            "color_primaries": "bt709",
            "chroma_location": "left",
            "field_order": "progressive",
            "refs": 1,
            "is_avc": true,
            "nal_length_size": 4,
            "r_frame_rate": "25/1",
            "avg_frame_rate": "25/1",
            "time_base": "1/1000",
            "start_pts": 21,
            "start_time": 0.021,
            "bits_per_raw_sample": 8,
            "extradata_size": 46,
            "disposition": {
              "default": 1,
              "dub": 0,
              "original": 0,
              "comment": 0,
              "lyrics": 0,
              "karaoke": 0,
              "forced": 0,
              "hearing_impaired": 0,
              "visual_impaired": 0,
              "clean_effects": 0,
              "attached_pic": 0,
              "timed_thumbnails": 0,
              "captions": 0,
              "descriptions": 0,
              "metadata": 0,
              "dependent": 0,
              "still_image": 0
            },
            "tags": {
              "DURATION": "00:21:10.621000000"
            }
          },
          "audio": {
            "index": 1,
            "codec_name": "aac",
            "codec_long_name": "unknown",
            "profile": 1,
            "codec_type": "audio",
            "codec_tag_string": "[0][0][0][0]",
            "codec_tag": "0x0000",
            "sample_fmt": "fltp",
            "sample_rate": 48000,
            "channels": 2,
            "channel_layout": "stereo",
            "bits_per_sample": 0,
            "r_frame_rate": "0/0",
            "avg_frame_rate": "0/0",
            "time_base": "1/1000",
            "start_pts": 0,
            "start_time": 0,
            "extradata_size": 5,
            "disposition": {
              "default": 1,
              "dub": 0,
              "original": 0,
              "comment": 0,
              "lyrics": 0,
              "karaoke": 0,
              "forced": 0,
              "hearing_impaired": 0,
              "visual_impaired": 0,
              "clean_effects": 0,
              "attached_pic": 0,
              "timed_thumbnails": 0,
              "captions": 0,
              "descriptions": 0,
              "metadata": 0,
              "dependent": 0,
              "still_image": 0
            },
            "tags": {
              "language": "ger",
              "title": "Stereo",
              "DURATION": "00:21:10.655000000"
            }
          },
          "bitrate": 3192
        },
        "custom_sid": null,
        "added": 1689844119,
        "season": 5,
        "direct_source": ""
      },
      {
        "id": 504366,
        "episode_num": 7,
        "title": "DE - jerks. (DE) - S05E07 - Brusternährung",
        "container_extension": "mkv",
        "info": {
          "air_date": "2023-03-09",
          "rating": 0,
          "id": 69931,
          "movie_image": "https://image.tmdb.org/t/p/w185/pGhdizF4OXueXYEIhczIk6ijE4y.jpg",
          "duration_secs": 1813,
          "duration": "00:30:13",
          "video": {
            "index": 0,
            "codec_name": "h264",
            "codec_long_name": "unknown",
            "profile": 77,
            "codec_type": "video",
            "codec_tag_string": "[0][0][0][0]",
            "codec_tag": "0x0000",
            "width": 1920,
            "height": 1080,
            "coded_width": 1920,
            "coded_height": 1080,
            "closed_captions": 0,
            "film_grain": 0,
            "has_b_frames": 2,
            "sample_aspect_ratio": "1:1",
            "display_aspect_ratio": "16:9",
            "pix_fmt": "yuv420p",
            "level": 40,
            "color_range": "tv",
            "color_space": "bt709",
            "color_transfer": "bt709",
            "color_primaries": "bt709",
            "chroma_location": "left",
            "field_order": "progressive",
            "refs": 1,
            "is_avc": true,
            "nal_length_size": 4,
            "r_frame_rate": "25/1",
            "avg_frame_rate": "25/1",
            "time_base": "1/1000",
            "start_pts": 21,
            "start_time": 0.021,
            "bits_per_raw_sample": 8,
            "extradata_size": 46,
            "disposition": {
              "default": 1,
              "dub": 0,
              "original": 0,
              "comment": 0,
              "lyrics": 0,
              "karaoke": 0,
              "forced": 0,
              "hearing_impaired": 0,
              "visual_impaired": 0,
              "clean_effects": 0,
              "attached_pic": 0,
              "timed_thumbnails": 0,
              "captions": 0,
              "descriptions": 0,
              "metadata": 0,
              "dependent": 0,
              "still_image": 0
            },
            "tags": {
              "DURATION": "00:30:13.821000000"
            }
          },
          "audio": {
            "index": 1,
            "codec_name": "aac",
            "codec_long_name": "unknown",
            "profile": 1,
            "codec_type": "audio",
            "codec_tag_string": "[0][0][0][0]",
            "codec_tag": "0x0000",
            "sample_fmt": "fltp",
            "sample_rate": 48000,
            "channels": 2,
            "channel_layout": "stereo",
            "bits_per_sample": 0,
            "r_frame_rate": "0/0",
            "avg_frame_rate": "0/0",
            "time_base": "1/1000",
            "start_pts": 0,
            "start_time": 0,
            "extradata_size": 5,
            "disposition": {
              "default": 1,
              "dub": 0,
              "original": 0,
              "comment": 0,
              "lyrics": 0,
              "karaoke": 0,
              "forced": 0,
              "hearing_impaired": 0,
              "visual_impaired": 0,
              "clean_effects": 0,
              "attached_pic": 0,
              "timed_thumbnails": 0,
              "captions": 0,
              "descriptions": 0,
              "metadata": 0,
              "dependent": 0,
              "still_image": 0
            },
            "tags": {
              "language": "ger",
              "title": "Stereo",
              "DURATION": "00:30:13.845000000"
            }
          },
          "bitrate": 3185
        },
        "custom_sid": null,
        "added": 1689844119,
        "season": 5,
        "direct_source": ""
      },
      {
        "id": 504367,
        "episode_num": 8,
        "title": "DE - jerks. (DE) - S05E08 - Das Erwachen",
        "container_extension": "mkv",
        "info": {
          "air_date": "2023-03-16",
          "rating": 0,
          "id": 69931,
          "movie_image": "https://image.tmdb.org/t/p/w185/lB4L1kSzWzSFb6UGagc5kuhlbjl.jpg",
          "duration_secs": 1551,
          "duration": "00:25:51",
          "video": {
            "index": 0,
            "codec_name": "h264",
            "codec_long_name": "unknown",
            "profile": 77,
            "codec_type": "video",
            "codec_tag_string": "[0][0][0][0]",
            "codec_tag": "0x0000",
            "width": 1920,
            "height": 1080,
            "coded_width": 1920,
            "coded_height": 1080,
            "closed_captions": 0,
            "film_grain": 0,
            "has_b_frames": 2,
            "sample_aspect_ratio": "1:1",
            "display_aspect_ratio": "16:9",
            "pix_fmt": "yuv420p",
            "level": 40,
            "color_range": "tv",
            "color_space": "bt709",
            "color_transfer": "bt709",
            "color_primaries": "bt709",
            "chroma_location": "left",
            "field_order": "progressive",
            "refs": 1,
            "is_avc": true,
            "nal_length_size": 4,
            "r_frame_rate": "25/1",
            "avg_frame_rate": "25/1",
            "time_base": "1/1000",
            "start_pts": 21,
            "start_time": 0.021,
            "bits_per_raw_sample": 8,
            "extradata_size": 46,
            "disposition": {
              "default": 1,
              "dub": 0,
              "original": 0,
              "comment": 0,
              "lyrics": 0,
              "karaoke": 0,
              "forced": 0,
              "hearing_impaired": 0,
              "visual_impaired": 0,
              "clean_effects": 0,
              "attached_pic": 0,
              "timed_thumbnails": 0,
              "captions": 0,
              "descriptions": 0,
              "metadata": 0,
              "dependent": 0,
              "still_image": 0
            },
            "tags": {
              "DURATION": "00:25:51.221000000"
            }
          },
          "audio": {
            "index": 1,
            "codec_name": "aac",
            "codec_long_name": "unknown",
            "profile": 1,
            "codec_type": "audio",
            "codec_tag_string": "[0][0][0][0]",
            "codec_tag": "0x0000",
            "sample_fmt": "fltp",
            "sample_rate": 48000,
            "channels": 2,
            "channel_layout": "stereo",
            "bits_per_sample": 0,
            "r_frame_rate": "0/0",
            "avg_frame_rate": "0/0",
            "time_base": "1/1000",
            "start_pts": 0,
            "start_time": 0,
            "extradata_size": 5,
            "disposition": {
              "default": 1,
              "dub": 0,
              "original": 0,
              "comment": 0,
              "lyrics": 0,
              "karaoke": 0,
              "forced": 0,
              "hearing_impaired": 0,
              "visual_impaired": 0,
              "clean_effects": 0,
              "attached_pic": 0,
              "timed_thumbnails": 0,
              "captions": 0,
              "descriptions": 0,
              "metadata": 0,
              "dependent": 0,
              "still_image": 0
            },
            "tags": {
              "language": "ger",
              "title": "Stereo",
              "DURATION": "00:25:51.253000000"
            }
          },
          "bitrate": 2950
        },
        "custom_sid": null,
        "added": 1689844120,
        "season": 5,
        "direct_source": ""
      },
      {
        "id": 504368,
        "episode_num": 9,
        "title": "DE - jerks. (DE) - S05E09 - Rehabilitation Pt.1",
        "container_extension": "mkv",
        "info": {
          "air_date": "2023-03-23",
          "rating": 0,
          "id": 69931,
          "movie_image": "https://image.tmdb.org/t/p/w185/gYPYFW6QYMUMz3QxUvqHctFn3MI.jpg",
          "duration_secs": 1107,
          "duration": "00:18:27",
          "video": {
            "index": 0,
            "codec_name": "h264",
            "codec_long_name": "unknown",
            "profile": 77,
            "codec_type": "video",
            "codec_tag_string": "[0][0][0][0]",
            "codec_tag": "0x0000",
            "width": 1920,
            "height": 1080,
            "coded_width": 1920,
            "coded_height": 1080,
            "closed_captions": 0,
            "film_grain": 0,
            "has_b_frames": 2,
            "sample_aspect_ratio": "1:1",
            "display_aspect_ratio": "16:9",
            "pix_fmt": "yuv420p",
            "level": 40,
            "color_range": "tv",
            "color_space": "bt709",
            "color_transfer": "bt709",
            "color_primaries": "bt709",
            "chroma_location": "left",
            "field_order": "progressive",
            "refs": 1,
            "is_avc": true,
            "nal_length_size": 4,
            "r_frame_rate": "25/1",
            "avg_frame_rate": "25/1",
            "time_base": "1/1000",
            "start_pts": 21,
            "start_time": 0.021,
            "bits_per_raw_sample": 8,
            "extradata_size": 46,
            "disposition": {
              "default": 1,
              "dub": 0,
              "original": 0,
              "comment": 0,
              "lyrics": 0,
              "karaoke": 0,
              "forced": 0,
              "hearing_impaired": 0,
              "visual_impaired": 0,
              "clean_effects": 0,
              "attached_pic": 0,
              "timed_thumbnails": 0,
              "captions": 0,
              "descriptions": 0,
              "metadata": 0,
              "dependent": 0,
              "still_image": 0
            },
            "tags": {
              "DURATION": "00:18:27.821000000"
            }
          },
          "audio": {
            "index": 1,
            "codec_name": "aac",
            "codec_long_name": "unknown",
            "profile": 1,
            "codec_type": "audio",
            "codec_tag_string": "[0][0][0][0]",
            "codec_tag": "0x0000",
            "sample_fmt": "fltp",
            "sample_rate": 48000,
            "channels": 2,
            "channel_layout": "stereo",
            "bits_per_sample": 0,
            "r_frame_rate": "0/0",
            "avg_frame_rate": "0/0",
            "time_base": "1/1000",
            "start_pts": 0,
            "start_time": 0,
            "extradata_size": 5,
            "disposition": {
              "default": 1,
              "dub": 0,
              "original": 0,
              "comment": 0,
              "lyrics": 0,
              "karaoke": 0,
              "forced": 0,
              "hearing_impaired": 0,
              "visual_impaired": 0,
              "clean_effects": 0,
              "attached_pic": 0,
              "timed_thumbnails": 0,
              "captions": 0,
              "descriptions": 0,
              "metadata": 0,
              "dependent": 0,
              "still_image": 0
            },
            "tags": {
              "language": "ger",
              "title": "Stereo",
              "DURATION": "00:18:27.861000000"
            }
          },
          "bitrate": 3360
        },
        "custom_sid": null,
        "added": 1689844120,
        "season": 5,
        "direct_source": ""
      },
      {
        "id": 504369,
        "episode_num": 10,
        "title": "DE - jerks. (DE) - S05E10 - Rehabilitation Pt.2",
        "container_extension": "mkv",
        "info": {
          "air_date": "2023-03-30",
          "rating": 0,
          "id": 69931,
          "movie_image": "https://image.tmdb.org/t/p/w185/p29L5wdzUeYZgdySoqBOtKuUbQo.jpg",
          "duration_secs": 1173,
          "duration": "00:19:33",
          "video": {
            "index": 0,
            "codec_name": "h264",
            "codec_long_name": "unknown",
            "profile": 77,
            "codec_type": "video",
            "codec_tag_string": "[0][0][0][0]",
            "codec_tag": "0x0000",
            "width": 1920,
            "height": 1080,
            "coded_width": 1920,
            "coded_height": 1080,
            "closed_captions": 0,
            "film_grain": 0,
            "has_b_frames": 2,
            "sample_aspect_ratio": "1:1",
            "display_aspect_ratio": "16:9",
            "pix_fmt": "yuv420p",
            "level": 40,
            "color_range": "tv",
            "color_space": "bt709",
            "color_transfer": "bt709",
            "color_primaries": "bt709",
            "chroma_location": "left",
            "field_order": "progressive",
            "refs": 1,
            "is_avc": true,
            "nal_length_size": 4,
            "r_frame_rate": "25/1",
            "avg_frame_rate": "25/1",
            "time_base": "1/1000",
            "start_pts": 21,
            "start_time": 0.021,
            "bits_per_raw_sample": 8,
            "extradata_size": 46,
            "disposition": {
              "default": 1,
              "dub": 0,
              "original": 0,
              "comment": 0,
              "lyrics": 0,
              "karaoke": 0,
              "forced": 0,
              "hearing_impaired": 0,
              "visual_impaired": 0,
              "clean_effects": 0,
              "attached_pic": 0,
              "timed_thumbnails": 0,
              "captions": 0,
              "descriptions": 0,
              "metadata": 0,
              "dependent": 0,
              "still_image": 0
            },
            "tags": {
              "DURATION": "00:19:33.821000000"
            }
          },
          "audio": {
            "index": 1,
            "codec_name": "aac",
            "codec_long_name": "unknown",
            "profile": 1,
            "codec_type": "audio",
            "codec_tag_string": "[0][0][0][0]",
            "codec_tag": "0x0000",
            "sample_fmt": "fltp",
            "sample_rate": 48000,
            "channels": 2,
            "channel_layout": "stereo",
            "bits_per_sample": 0,
            "r_frame_rate": "0/0",
            "avg_frame_rate": "0/0",
            "time_base": "1/1000",
            "start_pts": 0,
            "start_time": 0,
            "extradata_size": 5,
            "disposition": {
              "default": 1,
              "dub": 0,
              "original": 0,
              "comment": 0,
              "lyrics": 0,
              "karaoke": 0,
              "forced": 0,
              "hearing_impaired": 0,
              "visual_impaired": 0,
              "clean_effects": 0,
              "attached_pic": 0,
              "timed_thumbnails": 0,
              "captions": 0,
              "descriptions": 0,
              "metadata": 0,
              "dependent": 0,
              "still_image": 0
            },
            "tags": {
              "language": "ger",
              "title": "Stereo",
              "DURATION": "00:19:33.845000000"
            }
          },
          "bitrate": 2929
        },
        "custom_sid": null,
        "added": 1689844120,
        "season": 5,
        "direct_source": ""
      }
    ]
  ]
}

Is it possible to remap the data? I think it needs to be reordered in the GetSeriesInfo function, but im not quite familiar with GO . Thanks for your reply.

@Warbs816
Copy link

@jtdevops, works a charm, thanks very much! All that faffing with Nginx and I could have just waited for you.. 😆 I get some warnings Warning: Failed to unmarshal ServerInfo. Using reflective unmarshalling. but I'm assuming that's normal, it's just failing back to the method you implemented? Everything works great

@jtdevops
Copy link

@Warbs816 I am adding the Warning message to indicate that there are issues and that it is falling back to a more field by field reflection process to attempt to collect as much data as possible. If there are additional failures using the fallback method then it will dump the JSON object that it couldn't process, but I haven't see that happen in all of my testing.

@jtdevops
Copy link

@iPhilBln I don't think there is a way to order the data. I will have a look next week using your data you provided and see if I encounter the same error.
What error are you seeing?

I am actually not familiar with GO myself until this week where ChatGPT has helped me make these changes. ;)

@jtdevops
Copy link

@Warbs816 Can you use the logging branch to capture the ServerInfo JSON data and provide that so I can see what was missing or what needs to change.
Thanks.

@dancorrigan1
Copy link
Author

dancorrigan1 commented Oct 19, 2024 via email

@jtdevops
Copy link

@dancorrigan1

I found this. It looks like an authentication issue possibly.

https://www.reddit.com/r/TiviMate/comments/1eiispv/code_513/

@Warbs816
Copy link

@Warbs816 Can you use the logging branch to capture the ServerInfo JSON data and provide that so I can see what was missing or what needs to change. Thanks.

Request 1: /player_api.php?username=username&password=password

{"user_info":{"username":"username","password":"password","message":"Enjoy The Show !!!","auth":1,"status":"Active","exp_date":"1746833038","is_trial":"0","active_cons":"0","created_at":"1715275438","max_connections":"1","allowed_output_formats":["ts"]},"server_info":{"url":"example.com","port":"80","https_port":"","server_protocol":"http","rtmp_port":"8009","timezone":"Europe\/London","timestamp_now":1729335877,"time_now":"2024-10-19 12:04:37","process":true}}

Request 2: /player_api.php?username=username&password=password&action=get_live_categories

[{"category_id":"672","category_name":"24\/7 CineMania","parent_id":0},{"category_id":"260","category_name":"LIVE | PPV Events","parent_id":0},{"category_id":"7028","category_name":"LIVE | Betting","parent_id":0},{"category_id":"7012","category_name":"LIVE | Cricket in 4K","parent_id":0},{"category_id":"1570","category_name":"LIVE |\u00a0Cricket Events","parent_id":0},{"category_id":"1596","category_name":"LIVE | Sports Events","parent_id":0},{"category_id":"1625","category_name":"LIVE | Rugby Events","parent_id":0},{"category_id":"1524","category_name":"LIVE | Football Events","parent_id":0},{"category_id":"1566","category_name":"LIVE | EPL Hub","parent_id":0},{"category_id":"7050","category_name":"LIVE | EPL Events","parent_id":0},{"category_id":"1629","category_name":"LIVE | Star Hub (EPL)","parent_id":0},{"category_id":"7084","category_name":"LIVE | Fubo Sports (EPL)","parent_id":0},{"category_id":"1419","category_name":"LIVE | EFL Hub","parent_id":0},{"category_id":"7075","category_name":"LIVE | EFL Events","parent_id":0},{"category_id":"1577","category_name":"LIVE | SPFL Hub","parent_id":0},{"category_id":"6025","category_name":"LIVE | National League","parent_id":0},{"category_id":"7080","category_name":"LIVE | La Liga Hub","parent_id":0},{"category_id":"7083","category_name":"LIVE | Ligue 1 Pass","parent_id":0},{"category_id":"7021","category_name":"LIVE | MLS Pass","parent_id":0},{"category_id":"6027","category_name":"LIVE | WSL \/ FA Player","parent_id":0},{"category_id":"1622","category_name":"LIVE | UFC \/ Triller TV","parent_id":0},{"category_id":"1597","category_name":"LIVE | F1 \/ MotoGP \/ DIRTVision","parent_id":0},{"category_id":"1627","category_name":"LIVE | Snooker \/ Darts \/ PDC","parent_id":0},{"category_id":"103","category_name":"LIVE | World Sports","parent_id":0},{"category_id":"6026","category_name":"SPORTS | Paramount+","parent_id":0},{"category_id":"4476","category_name":"SPORTS | ESPN+","parent_id":0},{"category_id":"7039","category_name":"SPORTS | LOI \/ GaaGO \/ Clubber","parent_id":0},{"category_id":"7040","category_name":"SPORTS | SuperLeague+ \/ Florugby","parent_id":0},{"category_id":"7024","category_name":"SPORTS | Now HK","parent_id":0},{"category_id":"7023","category_name":"SPORTS | Optus \/ NZ Sky Sports","parent_id":0},{"category_id":"1624","category_name":"SPORTS | True PL Football \/ V Sport PL","parent_id":0},{"category_id":"1626","category_name":"SPORTS | Peacock","parent_id":0},{"category_id":"1630","category_name":"SPORTS | Setanta","parent_id":0},{"category_id":"7086","category_name":"SPORTS | Kayo Sports","parent_id":0},{"category_id":"7026","category_name":"SPORTS | Hub Sports","parent_id":0},{"category_id":"7018","category_name":"SPORTS | DAZN CA\/US\/UK","parent_id":0},{"category_id":"7032","category_name":"SPORTS | Astro Sports","parent_id":0},{"category_id":"1623","category_name":"SPORTS | Stan \/ Mola TV","parent_id":0},{"category_id":"629","category_name":"SPORTS | beIN Media","parent_id":0},{"category_id":"170","category_name":"UK | Sports","parent_id":0},{"category_id":"7077","category_name":"UK | Sky Sports+","parent_id":0},{"category_id":"7051","category_name":"UK | Sports Red Button","parent_id":0},{"category_id":"1578","category_name":"UK | TNT Sports","parent_id":0},{"category_id":"7085","category_name":"UK | Premier Sports GB","parent_id":0},{"category_id":"169","category_name":"UK | Entertainment","parent_id":0},{"category_id":"1522","category_name":"UK | Regional & Red Button","parent_id":0},{"category_id":"171","category_name":"UK | Movies","parent_id":0},{"category_id":"162","category_name":"UK | Kids","parent_id":0},{"category_id":"174","category_name":"UK | Documentaries","parent_id":0},{"category_id":"175","category_name":"UK | News","parent_id":0},{"category_id":"172","category_name":"UK | Music","parent_id":0},{"category_id":"88","category_name":"UK | Religious","parent_id":0},{"category_id":"1523","category_name":"IE | Irish TV","parent_id":0},{"category_id":"85","category_name":"IN\/PK | Sports","parent_id":0},{"category_id":"195","category_name":"PK | Entertainment","parent_id":0},{"category_id":"617","category_name":"PK | News","parent_id":0},{"category_id":"196","category_name":"IN | Entertainment","parent_id":0},{"category_id":"1600","category_name":"IN | Movies","parent_id":0},{"category_id":"1601","category_name":"IN | Music","parent_id":0},{"category_id":"398","category_name":"IN | News","parent_id":0},{"category_id":"7013","category_name":"IN | Documentaries","parent_id":0},{"category_id":"7014","category_name":"IN | Religious","parent_id":0},{"category_id":"133","category_name":"INR | Punjabi","parent_id":0},{"category_id":"75","category_name":"INR | Bangla","parent_id":0},{"category_id":"82","category_name":"INR | Malayalam","parent_id":0},{"category_id":"140","category_name":"INR | Marathi","parent_id":0},{"category_id":"118","category_name":"INR | Gujrati","parent_id":0},{"category_id":"84","category_name":"INR | Telugu","parent_id":0},{"category_id":"83","category_name":"INR | Tamil","parent_id":0},{"category_id":"397","category_name":"INR | Assamese","parent_id":0},{"category_id":"135","category_name":"INR | Kannada","parent_id":0},{"category_id":"136","category_name":"INR | Odia","parent_id":0},{"category_id":"4362","category_name":"US | Entertainment","parent_id":0},{"category_id":"4363","category_name":"US | Spectrum","parent_id":0},{"category_id":"4364","category_name":"US | Sports","parent_id":0},{"category_id":"4365","category_name":"US | Locals","parent_id":0},{"category_id":"4366","category_name":"US | International","parent_id":0},{"category_id":"4367","category_name":"US | General","parent_id":0},{"category_id":"4368","category_name":"US | NBC","parent_id":0},{"category_id":"4371","category_name":"US | Latin","parent_id":0},{"category_id":"4443","category_name":"US | Asian","parent_id":0},{"category_id":"4473","category_name":"US | Arabic","parent_id":0},{"category_id":"4372","category_name":"US | News","parent_id":0},{"category_id":"4382","category_name":"US | Movies","parent_id":0},{"category_id":"4384","category_name":"US | ABC","parent_id":0},{"category_id":"4385","category_name":"US | Fox","parent_id":0},{"category_id":"4386","category_name":"US | Documentaries","parent_id":0},{"category_id":"4387","category_name":"US | Kids","parent_id":0},{"category_id":"4388","category_name":"US | Music","parent_id":0},{"category_id":"4389","category_name":"US | CBS","parent_id":0},{"category_id":"7089","category_name":"US | MLB","parent_id":0},{"category_id":"4391","category_name":"US | MLB Teams","parent_id":0},{"category_id":"4393","category_name":"US | NBA","parent_id":0},{"category_id":"7081","category_name":"US | NBA Teams","parent_id":0},{"category_id":"7082","category_name":"US | WNBA","parent_id":0},{"category_id":"4394","category_name":"US | NFL","parent_id":0},{"category_id":"7079","category_name":"US | NFL (Game Pass)","parent_id":0},{"category_id":"7087","category_name":"US | NFL Teams","parent_id":0},{"category_id":"7088","category_name":"US | NHL","parent_id":0},{"category_id":"7094","category_name":"US | NHL Teams","parent_id":0},{"category_id":"4369","category_name":"CA | Entertainment","parent_id":0},{"category_id":"4370","category_name":"CA | Sports","parent_id":0},{"category_id":"4399","category_name":"CA | French","parent_id":0},{"category_id":"4424","category_name":"CA | Documentary","parent_id":0},{"category_id":"4425","category_name":"CA | News","parent_id":0},{"category_id":"4446","category_name":"CA | General","parent_id":0},{"category_id":"4449","category_name":"CA | Movies","parent_id":0},{"category_id":"4447","category_name":"CA | Kids","parent_id":0},{"category_id":"4448","category_name":"CA | Music","parent_id":0},{"category_id":"4398","category_name":"CA | Canada","parent_id":0},{"category_id":"7030","category_name":"AR | Sports","parent_id":0},{"category_id":"448","category_name":"INT | Afghanistan","parent_id":0},{"category_id":"283","category_name":"INT | Iran","parent_id":0},{"category_id":"284","category_name":"INT | Nepal","parent_id":0},{"category_id":"1413","category_name":"INT | Sri Lanka","parent_id":0},{"category_id":"1580","category_name":"DSTV | Entertainmnet","parent_id":0},{"category_id":"1583","category_name":"DSTV | Sports","parent_id":0},{"category_id":"1579","category_name":"DSTV | Movies","parent_id":0},{"category_id":"1581","category_name":"DSTV | News","parent_id":0},{"category_id":"1582","category_name":"DSTV | Kids","parent_id":0},{"category_id":"1453","category_name":"UNCATEGORIZED**","parent_id":0}]

From the logs:

11:04:37 -> Incoming URL:  /player_api.php?username=username&password=password
11:04:37 Response written to new file: /root/iptv/cache/http%3A%2F%2Fexample.com%3A80%2Fplayer_api.php%3Fusername%3Drealusername%26password%3Drealpassword.json
11:04:37 | 200 |   94.264474ms |  192.168.xx.xx | GET      "/player_api.php?username=username&password=password"
11:04:37 Warning: Failed to unmarshal ServerInfo. Using reflective unmarshalling.
11:04:37 [iptv-proxy] 2024/10/19 - 11:04:37 |  192.168.xx.xx |Action	
11:04:38 -> Incoming URL:  /player_api.php?username=username&password=password&action=get_live_categories
11:04:38 Warning: Failed to unmarshal ServerInfo. Using reflective unmarshalling.
11:04:38 Response written to new file: /root/iptv/cache/http%3A%2F%2Fexample.com%3A80%2Fplayer_api.php%3Fusername%3Drealusername%26password%3Drealpassword%26action%3Dget_live_categories.json
11:04:38 [iptv-proxy] 2024/10/19 - 11:04:38 |  192.168.xx.xx |Action	get_live_categories
11:04:38 | 200 |  296.508396ms |   192.168.xx.xx | GET      "/player_api.php?username=username&password=password&action=get_live_categories"

Thanks again @jtdevops!

@jtdevops
Copy link

@Warbs816 all of the issues that this project has ben facing is related to incoming JSON data fields that are blank/empty.
In your case the issue is with the empty 'https_port' field.
I'll look at trying to patch the remaining pieces so the warnings also disappear. :)

@dancorrigan1
Copy link
Author

dancorrigan1 commented Oct 19, 2024 via email

@Warbs816
Copy link

@Warbs816 all of the issues that this project has ben facing is related to incoming JSON data fields that are blank/empty. In your case the issue is with the empty 'https_port' field. I'll look at trying to patch the remaining pieces so the warnings also disappear. :)

Weirdly though it also complains about a load of other JSON data which doesn't have any empty fields, such as the second example I posted before, get_live_categories. Also, my provider has never had HTTPS so I don't know why it suddenly became an issue - I've been using this app for around 2 years and it only started around August

@knilly
Copy link

knilly commented Oct 19, 2024

@iPhilBln I don't think there is a way to order the data. I will have a look next week using your data you provided and see if I encounter the same error.

What error are you seeing?

I am actually not familiar with GO myself until this week where ChatGPT has helped me make these changes. ;)

The problem is the unmapped series episode array which can'tbe mapped to map[string][][]Series but I think I found a solution. I will test it.

@Juancollado2003
Copy link

The project resurrected, I'm glad to know it

@jtdevops
Copy link

I added some unit test code this morning to the logging branch to help with testing the data structures and their unmarshalling methods.

You can run these yourselves if you want, just go to the vendor/github.com/tellytv/go.xtream-codes folder and run:
go test -v

You can add/update the JSON files in the structs_test_data folder to see how the code handles your captures IPTV provider JSON data.

I will be adding more to this code so we can find all of the unmarshalling issues.

@dancorrigan1
Copy link
Author

dancorrigan1 commented Oct 20, 2024 via email

@Juancollado2003
Copy link

Shameless plug for an Ansible role I created. It was private until just recently. This has all motivated me to make it public. https://github.com/dancorrigan1/role_iptvservice An Ansible role to create a reverse proxy for multiple users against multiple Xtream code IPTV providers using nginx and iptv-proxy. If anyone decides to use it and has any questions, please let me know. Thanks again Pierre and Justin! Cheers, Dan

On Sat, Oct 19, 2024 at 1:08 PM Justin Turner @.> wrote: I added some unit test code this morning to the logging branch to help with testing the data structures and their unmarshalling methods. You can run these yourselves if you want, just go to the vendor/ github.com/tellytv/go.xtream-codes folder and run: go test -v You can add/update the JSON files in the structs_test_data folder to see how the code handles your captures IPTV provider JSON data. I will be adding more to this code so we can find all of the unmarshalling issues. — Reply to this email directly, view it on GitHub <#160 (comment)>, or unsubscribe https://github.com/notifications/unsubscribe-auth/AFC2WXVORG2PDNEBE4KGXT3Z4KN3NAVCNFSM6AAAAAA6N7AE2WVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDIMRUGEYTGMZYGQ . You are receiving this because you were mentioned.Message ID: @.>

What to do to test it out?

@Aeosium
Copy link

Aeosium commented Oct 22, 2024

Amazing community here, dropped a bottle to the sea before going on holidays and almost 30 comments since then!

I rebuilt my docker using @jtdevops logging branch and now it works great! I don't know what was the change that made it to work effectively.

I hope @pierre-emmanuelJ sees all that so that a PR to integrate the fixes, I owe you both a coffee!

@jtdevops
Copy link

Hi,

Last night I added a new update to the 'logging' branch.
Now the 'master' and 'logging' branches behave the same by default, but the logging branch how has 3 new options which can be enabled by setting environment variables.

  • DEBUG_LOGGING - option to turn on debug logging
  • CACHE_FOLDER - option to specify the cache folder for saving IPTV Provider responses, as well as sent responses to client
  • USE_XTREAM_ADVANCED_PARSING - option to use alternate parsing method for some requests to preserve the original response from the IPTV Provider

Example for enabling options in docker-compose.yml:
environment:
DEBUG_LOGGING: true
CACHE_FOLDER: /root/iptv/cache/
USE_XTREAM_ADVANCED_PARSING: true

When you view the logs of your running server you will also see these options and a brief explanation.

Currently the USE_XTREAM_ADVANCED_PARSING option is only configured for the VOD/Movie Info and the Show Info details. If you enable debug logging you can see when this is used.
There is a very noticeable performance gain with these changes. I am also looking to use another JSON parsing module to make it even faster.

Give it a go, and let know if you encounter any issues.

Thanks.

@jimmisavage
Copy link

logging

Justin, you are a god among men! I've been trying to fix this my end for a couple of weeks and I've just stumbled across this thread and BOOM, I'm back in business! Thank you so much for your time

@jtdevops
Copy link

jtdevops commented Nov 1, 2024

Hi @jimmisavage, @Aeosium, @iPhilBln, @Warbs816, @dancorrigan1, @coniman and others,

I have updated the 'logging' branch with new changes, and I was hoping a few of you might be willing to test these changes using your IPTV Provider and let me know if you encounter any issues/errors.

As mentioned above there are 3 environment variables that provide additional logging and functionality:

  • DEBUG_LOGGING - option to turn on debug logging
  • CACHE_FOLDER - option to specify the cache folder for saving IPTV Provider responses, as well as sent requests to client
  • USE_XTREAM_ADVANCED_PARSING - option to use alternate parsing method for most requests to preserve the original response from the IPTV Provider

If you could enable 'DEBUG_LOGGING' as well as testing with and without enabling the 'USE_XTREAM_ADVANCED_PARSING' environment variable, that would be great.

Not setting 'USE_XTREAM_ADVANCED_PARSING' will use the original projects parsing mechanism which used to cause a lot of unmarshalling errors. I believe I have fixed these issues.

When setting 'USE_XTREAM_ADVANCED_PARSING=true' this will use the new advanced parsing mechanism, which stop the needless processing and uses the original unaltered data and all fields sent from your IPTV provider. Since there is no additional overhead I have seen at least a 2x performance increase.

This new advanced parsing has not been added to the login or the EPG flows, which I feel isn't needed unless users are encounter issues, then I may revisit this.

If I get confirmation that the changes are working for everyone, then I will merge these changes into the 'master' branch and will enable the advanced parsing mechanism by default, while also providing an option to fallback to the original processing method.

Thank you for your help with these changes.
Looking forward to your feedback.

@jimmisavage
Copy link

Hi @jimmisavage, @Aeosium, @iPhilBln, @Warbs816, @dancorrigan1, @coniman and others,

I have updated the 'logging' branch with new changes, and I was hoping a few of you might be willing to test these changes using your IPTV Provider and let me know if you encounter any issues/errors.

As mentioned above there are 3 environment variables that provide additional logging and functionality:

  • DEBUG_LOGGING - option to turn on debug logging
  • CACHE_FOLDER - option to specify the cache folder for saving IPTV Provider responses, as well as sent requests to client
  • USE_XTREAM_ADVANCED_PARSING - option to use alternate parsing method for most requests to preserve the original response from the IPTV Provider

If you could enable 'DEBUG_LOGGING' as well as testing with and without enabling the 'USE_XTREAM_ADVANCED_PARSING' environment variable, that would be great.

Not setting 'USE_XTREAM_ADVANCED_PARSING' will use the original projects parsing mechanism which used to cause a lot of unmarshalling errors. I believe I have fixed these issues.

When setting 'USE_XTREAM_ADVANCED_PARSING=true' this will use the new advanced parsing mechanism, which stop the needless processing and uses the original unaltered data and all fields sent from your IPTV provider. Since there is no additional overhead I have seen at least a 2x performance increase.

This new advanced parsing has not been added to the login or the EPG flows, which I feel isn't needed unless users are encounter issues, then I may revisit this.

If I get confirmation that the changes are working for everyone, then I will merge these changes into the 'master' branch and will enable the advanced parsing mechanism by default, while also providing an option to fallback to the original processing method.

Thank you for your help with these changes.
Looking forward to your feedback.

Absolutely happy to test but I'm away this weekend so will switch it on Monday. I'll report back later in the week 👍

@knilly
Copy link

knilly commented Nov 1, 2024

Hi @jimmisavage, @Aeosium, @iPhilBln, @Warbs816, @dancorrigan1, @coniman and others,

I have updated the 'logging' branch with new changes, and I was hoping a few of you might be willing to test these changes using your IPTV Provider and let me know if you encounter any issues/errors.

As mentioned above there are 3 environment variables that provide additional logging and functionality:

  • DEBUG_LOGGING - option to turn on debug logging
  • CACHE_FOLDER - option to specify the cache folder for saving IPTV Provider responses, as well as sent requests to client
  • USE_XTREAM_ADVANCED_PARSING - option to use alternate parsing method for most requests to preserve the original response from the IPTV Provider

If you could enable 'DEBUG_LOGGING' as well as testing with and without enabling the 'USE_XTREAM_ADVANCED_PARSING' environment variable, that would be great.

Not setting 'USE_XTREAM_ADVANCED_PARSING' will use the original projects parsing mechanism which used to cause a lot of unmarshalling errors. I believe I have fixed these issues.

When setting 'USE_XTREAM_ADVANCED_PARSING=true' this will use the new advanced parsing mechanism, which stop the needless processing and uses the original unaltered data and all fields sent from your IPTV provider. Since there is no additional overhead I have seen at least a 2x performance increase.

This new advanced parsing has not been added to the login or the EPG flows, which I feel isn't needed unless users are encounter issues, then I may revisit this.

If I get confirmation that the changes are working for everyone, then I will merge these changes into the 'master' branch and will enable the advanced parsing mechanism by default, while also providing an option to fallback to the original processing method.

Thank you for your help with these changes. Looking forward to your feedback.

I will also do some tests next week. Currently I am using the commit 14ad405 of your logging branche witch USE_XTREAM_ADVANCED_PARSING on and everything is running fine. I did not get any marshalJSON errors and the original error with the mapping comes from my provider.

@jimmisavage
Copy link

Hi @jimmisavage, @Aeosium, @iPhilBln, @Warbs816, @dancorrigan1, @coniman and others,

I have updated the 'logging' branch with new changes, and I was hoping a few of you might be willing to test these changes using your IPTV Provider and let me know if you encounter any issues/errors.

As mentioned above there are 3 environment variables that provide additional logging and functionality:

  • DEBUG_LOGGING - option to turn on debug logging
  • CACHE_FOLDER - option to specify the cache folder for saving IPTV Provider responses, as well as sent requests to client
  • USE_XTREAM_ADVANCED_PARSING - option to use alternate parsing method for most requests to preserve the original response from the IPTV Provider

If you could enable 'DEBUG_LOGGING' as well as testing with and without enabling the 'USE_XTREAM_ADVANCED_PARSING' environment variable, that would be great.

Not setting 'USE_XTREAM_ADVANCED_PARSING' will use the original projects parsing mechanism which used to cause a lot of unmarshalling errors. I believe I have fixed these issues.

When setting 'USE_XTREAM_ADVANCED_PARSING=true' this will use the new advanced parsing mechanism, which stop the needless processing and uses the original unaltered data and all fields sent from your IPTV provider. Since there is no additional overhead I have seen at least a 2x performance increase.

This new advanced parsing has not been added to the login or the EPG flows, which I feel isn't needed unless users are encounter issues, then I may revisit this.

If I get confirmation that the changes are working for everyone, then I will merge these changes into the 'master' branch and will enable the advanced parsing mechanism by default, while also providing an option to fallback to the original processing method.

Thank you for your help with these changes. Looking forward to your feedback.

Hi Justin,
I've been using this pretty extensively for the last week (it's my main TV) and I have to say it's been fantastic. Errors and buffering have been eliminated with the new settings. I even changed back to default on Saturday and my wife nearly had a meltdown because it immediately went back to errors and buffering. Turned logging back on and we're back to being a happily married couple again.

VOD and series are working perfectly as well, which is an added bonus. We never really used it because it was so hit and miss (and I PLEX) but now it's a great addition to my setup.

Honestly, I couldn't thank you enough!

@jtdevops
Copy link

Thanks @jimmisavage for your testing details.
I appreciate you taking the time to go through this. ;), and you're welcome. It has been an experience giving back to the community.

@Aeosium, @iPhilBln, @Warbs816, @dancorrigan1, @coniman,
It would be great if I could have 1 more tester going through this testing only on the 'logging' branch, with and without the 'USE_XTREAM_ADVANCED_PARSING=true' option specified.
This will test the new processing and the legacy processing flows.

Looking forward to your testing results.

King regards,
Justin.

@knilly
Copy link

knilly commented Nov 15, 2024

Thanks @jimmisavage for your testing details. I appreciate you taking the time to go through this. ;), and you're welcome. It has been an experience giving back to the community.

@Aeosium, @iPhilBln, @Warbs816, @dancorrigan1, @coniman, It would be great if I could have 1 more tester going through this testing only on the 'logging' branch, with and without the 'USE_XTREAM_ADVANCED_PARSING=true' option specified. This will test the new processing and the legacy processing flows.

Looking forward to your testing results.

King regards, Justin.

At the moment I get no marshal errors or any other error messages and everthing works like a charm most of the time. But I noticed some weird things that some content are not displayed at the iptvx app. The weird thing is if I parse the raw data to my local pc I see alot more content in the files. Maybe it results with the amount of content but i can't veryfi at the moment. I will add some regex filter and do some more tests.

@Aeosium
Copy link

Aeosium commented Nov 16, 2024

Hi Justin,

Just tested as well with and without the USE_XTREAM_ADVANCED_PARSING=true with a fresh docker image based on your logging branch.

Either way work fine on my side! The TV and VOD both work, as well as the EPG on the client I use on my PC. On my samsung TV the channels and VOD work but not the EPG. With the debug logging I see marshal warnings but I suspect the crapware that I use a client to be the issue... I didn't notice any missing content for the time being but I'll keep browsing through and see, no news = good news.

Thanks again for the great support (and saving another marriage as I had to start justifying wasting so much time on that media server project at home :p )

@Warbs816
Copy link

Hi @jtdevops and thanks again for continuing to make improvements!

I've tested both with and without USE_XTREAM_ADVANCED_PARSING and haven't noticed a difference - logs also seem to be identical. (Am I still supposed to get reflective unmarshalling errors?) Let me know if you want me to share any.

The playlist does seem to update a little quicker when using it, but not sure if that's the placebo effect! If it is indeed quicker, would enabling it for EPG also speed that up? I know the EPG is a hefty request, but at the moment it's the only thing that takes over 30 seconds (about 2 mins).

Apologies for not getting back sooner!

@jtdevops
Copy link

Thanks @iPhilBln, @Aeosium & @Warbs816 for your testing and comments.

@Warbs816 the hope was for there not to be a difference with or without having the USE_XTREAM_ADVANCED_PARSING option enabled regarding errors in the logs. My hope is that no errors are happening.
If you have it enabled then you will hopefully see a speed increase as there is less unmarshalling/marshalling needed and all of the data fields from the IPTV provider are provided as-is, with no additional fields being added or excluded.

Since my changes target the the real-time fetching and processing of show, VOD and live TV metadata, this was where the majority of the errors have been occurring. Fetching the EPG is a one-off action, and can be done on a scheduled interval depending on your IPTV client.
If people feel differently then this could be something to look at in the future.

However, my first priority is getting these changes moved into the master/main branch, and then potentially a pull request into the original project.

I am glad these changes have worked for everyone.

@saulchristie
Copy link

saulchristie commented Nov 30, 2024

@jtdevops : Do you have any plans to open up issues on your fork? Yours is pretty much now the de facto iptv-proxy imo and be nice to have a place for bug reports / enhancement requests etc that moves away from this thread.

@jtdevops
Copy link

jtdevops commented Dec 2, 2024

@saulchristie, I have no plans to address other non xtream code related issues on the original project. This was just a way to fix the main issue I was having, but I am glad that it has also helped others.
I do plan on creating a pull request to contribute back to the original project, at some point.
If there are other xtream code related issues, I could also look at those.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests