Witaj, Gość
Musisz się zarejestrować przed napisaniem posta.

Użytkownik
  

Hasło
  





Szukaj na forum

(Zaawansowane szukanie)

Statystyki
» Użytkownicy: 53,936
» Najnowszy użytkownik: posymag
» Wątków na forum: 5,501
» Postów na forum: 54,239

Pełne statystyki

Użytkownicy online
Aktualnie jest 301 użytkowników online.
» 3 Użytkownik(ów) | 291 Gość(i)
Applebot, Baidu, Bing, DuckDuckGo, Facebook, Google, Yandex, jurek5540, pcela, r_w@interia.pl

Ostatnie wątki
FanFilm – oficjalny wątek
Forum: Zmodyfikowałem wtyczkę
Ostatni post: Tomek
2 godzin(y) temu
» Odpowiedzi: 1,243
» Wyświetleń: 216,043
Nowy tx box
Forum: Dyskusja ogólna
Ostatni post: pawel_p5
8 godzin(y) temu
» Odpowiedzi: 0
» Wyświetleń: 40
[oddzielony] Aktualizacje...
Forum: Oprogramowanie / Firmware
Ostatni post: bigdamian
Wczoraj, 08:48 PM
» Odpowiedzi: 92
» Wyświetleń: 30,006
Jest ból
Forum: Główny dział z EPG
Ostatni post: sky02
Wczoraj, 07:39 PM
» Odpowiedzi: 55
» Wyświetleń: 3,615
Arctic: Zephyr 2 - Resurr...
Forum: Skórki
Ostatni post: DenDy
Wczoraj, 12:25 PM
» Odpowiedzi: 645
» Wyświetleń: 136,966
Świat seriali (pozaNetfli...
Forum: Seriale
Ostatni post: redhunter
Wczoraj, 08:10 AM
» Odpowiedzi: 242
» Wyświetleń: 119,126
Co teraz słuchasz?
Forum: Off topic
Ostatni post: redhunter
12-11-2026, 09:48 PM
» Odpowiedzi: 329
» Wyświetleń: 123,036
Najlepsze bezpłatne przeg...
Forum: Aplikacje
Ostatni post: arkady1964
12-11-2026, 06:45 PM
» Odpowiedzi: 135
» Wyświetleń: 100,841
Epg dla brakujących kanał...
Forum: Główny dział z EPG
Ostatni post: azman
11-11-2026, 12:12 PM
» Odpowiedzi: 185
» Wyświetleń: 80,507
Optymalna konfiguracja In...
Forum: Problemy z wtyczkami
Ostatni post: mirekc
11-11-2026, 07:59 AM
» Odpowiedzi: 0
» Wyświetleń: 97

 
  Nowy tx box
Napisane przez: pawel_p5 - 8 godzin(y) temu - Forum: Dyskusja ogólna - Brak odpowiedzi

Moj mecool m8s pro plus juz nie daje rady. Mam na nim coreeleca i to mu zywot przedluza. Kupowal moze ktos jakis sprzet ostatnio i jest zadowolony ? Najlepiej z dolnej polki . Byleby dzialal youtube , vlc, kodi

Wydrukuj tę wiadomość

  Optymalna konfiguracja Input Stream Adaptive
Napisane przez: mirekc - 11-11-2026, 07:59 AM - Forum: Problemy z wtyczkami - Brak odpowiedzi

Chciałbym uzyskać taki efekt:
- po uruchomieniu odtwarzania rozdzielczość wideo ustawia się jak najszybciej na maksymalną 720p (lub startuje od razu 720p)
- w przypadku problemów z przepustowością sieci rozdzielczość zostaje automatycznie obniżona (aby uniknąć zacięć), ale nie bardziej niż do 540p.

Kombinuję i kombinuję, ale albo odtwarzanie startuje z rozdzielczością 480p (za mało) i nie może dojść do 720p (może po wielu godzinach), albo przy ograniczonej przepustowości sieci nie ma skalowania rozdzielczości w dół, pomimo ewidentnych zacięć obrazu. Mogę oczywiście ustawić na stałe 720p i w normalnych warunkach wszystko działa jak trzeba, ale wtedy przy problemach z Internetem muszę wchodzić w ustawienia i obniżać rozdzielczość ręcznie, a to jest niewygodne.

Ktoś mi pomoże to ogarnąć?

Wydrukuj tę wiadomość

  [Problem] Błąd logowania tb7 / Kodi 21.2 (2026.10.03)
Napisane przez: Flower - 08-11-2026, 04:56 PM - Forum: Problemy z wtyczkami - Odpowiedzi (2)

Po zaktualizowaniu do wersji 2026.10.03.1 gdzie naprawiono scrapery tb7 , przy poszukiwaniu źródeł , pojawia się błąd logowania. Zmieniłem hasło na stronie i w Kodi ,bez rezultatu . Ktoś ma pomysł  co się stało?[Obrazek: ZzyXgKW.jpeg] ?

Wydrukuj tę wiadomość

  Wersja PLTV
Napisane przez: FCBeny - 05-11-2026, 09:59 AM - Forum: Problemy - Odpowiedzi (16)

Zauważyłem, że w wersji pltv do wszystkich tytułów dopisywana jest na końcu kropka. Czy to błąd czy planowane działanie?
Przykład:

<programme start="20261104044500 +0100" stop="20261104045500 +0100" channel="TVP 1">
    <title lang="pl">Zakończenie programu. </title>
    <desc></desc>
    <icon src="https://ptv-prod.wphcdn.cloud/media/akpa4419675.jpg" />
  </programme>

Wydrukuj tę wiadomość

  parser EPG Telewizja Biznesowa
Napisane przez: memek86 - 21-10-2026, 09:21 PM - Forum: Główny dział z EPG - Odpowiedzi (5)

Witam,

zrobiłem przy pomocy AI parser do Telewizja Biznesowa, edytowałem i dodałem jeszcze opis i grafikę.

#!/usr/bin/env python3
# -*- coding: utf-8 -*-

"""
Telewizja Biznesowa (tbpl) -> XMLTV EPG

Pobiera harmonogram z API MediaTool i zapisuje program w formacie XMLTV.
Domyślnie zapisuje dzisiejszy dzień oraz dwa kolejne dni.

Wymagania:
    python3 -m pip install requests

Uruchomienie:
    python3 telewizjabiznesowa_epg.py

Opcje:
    python3 telewizjabiznesowa_epg.py --days 2
    python3 telewizjabiznesowa_epg.py -o /ścieżka/telewizjabiznesowa.xml
    python3 telewizjabiznesowa_epg.py --channel-id telewizjabiznesowa.pl

Uwaga:
- Parametr --days oznacza liczbę dni naprzód oprócz dzisiejszego dnia.
  --days 2 obejmuje dziś, jutro i pojutrze.
- Ustaw CHANNEL_TOKEN 
"""

import argparse
import html
import logging
import os
import sys
import time
import xml.etree.ElementTree as ET
from datetime import datetime, timedelta, time as dt_time, timezone
from pathlib import Path
from zoneinfo import ZoneInfo

import requests


API_URL = "https://app.mediatool.tv/api/epg-api/information/channel/tbpl/weeks/1"
TIMEZONE =  ZoneInfo("Europe/Warsaw") #timezone.utc
DEFAULT_OUTPUT = "telewizjabiznesowa.xml"
#USER_AGENT = "Mozilla/5.0 (compatible; XMLTV-EPG/1.0)"
USER_AGENT = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/155.0.0.0 Safari/537.36"
CHANNEL_TOKEN='86e89a49-9e7c-48da-8c29-7db6807e8f8b'

def parse_datetime(value):
    """Zachowuje godzinę z API i interpretuje ją jako czas polski."""
    if not value:
        return None

    try:
        parsed = datetime.fromisoformat(str(value).replace("Z", "+00:00"))

        # Usuwamy źródłową strefę bez przeliczania godziny.
        # Następnie przypisujemy strefę docelową.
        parsed = parsed.replace(tzinfo=None)
        return parsed.replace(tzinfo=TIMEZONE)

    except (ValueError, TypeError):
        logging.warning("Nie można odczytać daty: %r", value)
        return None

def localized_text(value, language="AB"):
    """Wydobywa tekst z pola, które może być zwykłym stringiem lub mapą języków."""
    if isinstance(value, dict):
        text = value.get(language)
        if text is None:
            # Awaryjnie wybierz pierwszą niepustą wartość tekstową.
            text = next((v for v in value.values() if isinstance(v, str) and v.strip()), "")
        return str(text).strip() if text is not None else ""
    if isinstance(value, str):
        return value.strip()
    return ""


def add_text(parent, tag, value, **attrs):
    node = ET.SubElement(parent, tag, attrs)
    node.text = value
    return node


def xmltv_timestamp(value):
    """XMLTV zapisuje czas lokalny wraz z przesunięciem względem UTC."""
#    value = value.astimezone(timezone.utc)
    return value.strftime("%Y%m%d%H%M%S %z")

#def xmltv_timestamp(value):
#    """Zapisuje czas w UTC w formacie XMLTV."""
#    value = value.astimezone(timezone.utc)
#    return value.strftime("%Y%m%d%H%M%S +0000")


def fetch_schedule(token, timeout):
    url = API_URL
    started = time.monotonic()
    try:
        response = requests.get(
            url,
            params={"token": token},
            headers={"User-Agent": USER_AGENT, "Accept": "application/json"},
            timeout=(15, timeout),
        )
        elapsed = time.monotonic() - started
        response.raise_for_status()
        try:
            data = response.json()
        except requests.exceptions.JSONDecodeError as exc:
            raise RuntimeError("API nie zwróciło poprawnego JSON-a.") from exc
        logging.info(
            "Pobrano odpowiedź HTTP %s w %.2f s (%s bajtów).",
            response.status_code, elapsed, len(response.content)
        )
    except requests.RequestException as exc:
        raise RuntimeError(f"Błąd pobierania danych z API: {exc}") from exc

    if not isinstance(data, dict):
        raise RuntimeError("Nieoczekiwany format odpowiedzi API: oczekiwano obiektu JSON.")
    schedule = data.get("schedule")
    if not isinstance(schedule, list):
        keys = ", ".join(data.keys())
        raise RuntimeError(f"Brak listy 'schedule' w odpowiedzi API. Dostępne pola: {keys}")
    return schedule


def programme_bounds(now, days_ahead):
    start = now.replace(hour=0, minute=0, second=0, microsecond=0)
    # Koniec jest wyłączny: przy --days 2 obejmujemy dziś, jutro i pojutrze.
    end_date = start.date() + timedelta(days=days_ahead + 1)
    end = datetime.combine(end_date, dt_time.min, tzinfo=TIMEZONE)
    return start, end


def build_xml(schedule, output, days_ahead, channel_id, channel_name):
    now = datetime.now(TIMEZONE)
    start_bound, end_bound = programme_bounds(now, days_ahead)

    root = ET.Element("tv", {"source-info-name": "MediaTool", "generator-info-name": "telewizjabiznesowa_epg.py"})
    channel = ET.SubElement(root, "channel", {"id": channel_id})
    add_text(channel, "display-name", channel_name, lang="pl")

    programmes = []
    skipped = 0
    for item in schedule:
        if not isinstance(item, dict):
            skipped += 1
            continue

        start = parse_datetime(item.get("startTime"))
        end = parse_datetime(item.get("endTime"))
        if not start or not end or end <= start:
            skipped += 1
            continue

        # Zachowujemy audycje przecinające wybrany zakres.
        if end <= start_bound or start >= end_bound:
            continue

        title = localized_text(item.get("title"))
        episode_title = localized_text(item.get("episodeTitle"))
        if not title:
            title = episode_title or "Program"

        programme = ET.Element(
            "programme",
            {
                "start": xmltv_timestamp(start),
                "stop": xmltv_timestamp(end),
                "channel": channel_id,
            },
        )
        add_text(programme, "title", title, lang="pl")
        if episode_title and episode_title.casefold() != title.casefold():
            add_text(programme, "sub-title", episode_title, lang="pl")

        # Dodatkowe pola dodajemy tylko wtedy, gdy faktycznie są obecne w JSON-ie.
   # Pełny opis audycji: synopsis.PL.longSynopsis
        synopsis = item.get("synopsis")
        description = ""

        if isinstance(synopsis, dict):
            synopsis_pl = synopsis.get("PL")
            if isinstance(synopsis_pl, dict):
                long_synopsis = synopsis_pl.get("longSynopsis")
                if isinstance(long_synopsis, str):
                    description = long_synopsis.strip()

        # Awaryjnie wykorzystaj dotychczasowe pole description.
        if not description:
            description = localized_text(item.get("description"))

        if description:
            add_text(programme, "desc", description, lang="pl")

        # Obraz audycji: images.stillScene
        images = item.get("images")
        if isinstance(images, dict):
            image_url = images.get("stillScene")
            if isinstance(image_url, str) and image_url.strip():
                ET.SubElement(
                    programme,
                    "icon",
                    {"src": image_url.strip()}
                )

        # Data produkcji: productionDate, np. 2024-12-05.
        production_date = item.get("productionDate")
        if isinstance(production_date, str) and production_date.strip():
            try:
                date_value = datetime.strptime(
                    production_date.strip()[:10], "%Y-%m-%d"
                ).strftime("%Y%m%d")
                add_text(programme, "date", date_value)
            except ValueError:
                logging.warning(
                    "Nieprawidłowa data produkcji: %r", production_date
                )

        # Kategoria, jeśli występuje w odpowiedzi API.
        category = localized_text(item.get("category"))
        if category:
            add_text(programme, "category", category, lang="pl")

        programmes.append((start, programme))

    programmes.sort(key=lambda pair: pair[0])
    for _, programme in programmes:
        root.append(programme)

    tree = ET.ElementTree(root)
    try:
        ET.indent(tree, space="  ")
    except AttributeError:
        pass

    output_path = Path(output).expanduser()
    output_path.parent.mkdir(parents=True, exist_ok=True)
    tree.write(output_path, encoding="utf-8", xml_declaration=True)

    return output_path, len(programmes), skipped, start_bound, end_bound


def main():
    parser = argparse.ArgumentParser(description="Pobiera EPG Telewizji Biznesowej z MediaTool i zapisuje XMLTV.")
    parser.add_argument("-o", "--output", default=DEFAULT_OUTPUT, help=f"Plik wyjściowy (domyślnie: {DEFAULT_OUTPUT})")
    parser.add_argument("--days", type=int, default=2, help="Ile dni naprzód poza dzisiejszym dniem; domyślnie 2")
    parser.add_argument("--channel-id", default="Telewizja Biznesowa", help="Identyfikator kanału XMLTV")
    parser.add_argument("--channel-name", default="Telewizja Biznesowa", help="Nazwa kanału XMLTV")
    parser.add_argument("--timeout", type=int, default=120, help="Limit czasu odpowiedzi API w sekundach")
    parser.add_argument("-v", "--verbose", action="store_true", help="Więcej informacji diagnostycznych")
    args = parser.parse_args()

    logging.basicConfig(
        level=logging.DEBUG if args.verbose else logging.INFO,
        format="%(asctime)s %(levelname)s: %(message)s",
    )

    if args.days < 0 or args.days > 6:
        parser.error("--days musi być w zakresie 0–6.")

    token = CHANNEL_TOKEN
    if not token:
        logging.error("Brak tokenu. Ustaw zmienną środowiskową CHANNEL_TOKEN.")
        logging.error("Przykład: export CHANNEL_TOKEN='TWÓJ_TOKEN'")
        return 2

    try:
        schedule = fetch_schedule(token, args.timeout)
        output, count, skipped, start, end = build_xml(
            schedule, args.output, args.days, args.channel_id, args.channel_name
        )
    except (RuntimeError, OSError) as exc:
        logging.error("%s", exc)
        return 1

    logging.info("Zakres EPG: %s – %s (koniec wyłączny).", start.isoformat(), end.isoformat())
    logging.info("Zapisano %d audycji do: %s", count, output.resolve())
    if skipped:
        logging.warning("Pominięto %d nieprawidłowych rekordów.", skipped)
    if count == 0:
        logging.warning("Nie znaleziono audycji w wybranym zakresie. Sprawdź zakres API i format dat.")
    return 0


if __name__ == "__main__":
    sys.exit(main())

Wydrukuj tę wiadomość

  Jaki TV Stick wybrać?
Napisane przez: steve4 - 21-10-2026, 06:43 PM - Forum: Dyskusja ogólna - Odpowiedzi (4)

Nie mam doświadczenia w tego typu sprzętach a chciałem zakupić dla córki, do starszego TV, pod wej. HDMI - TV Stick'a. Chodzi o to, że starszy TV (smart) Samsung córki przestał obsługiwać apkę "Polsat Box Go", która była córce potrzebna. Ponadto chciałem też docelowo zainstalować: Disney +; HBO MAX a także w przyszłości - KODI.
Trochę czytałem na temat TV Box-ów, które są chyba bardziej popularne do tych tematów, ale córka chciała żeby to "coś" było małe i najlepiej niewidoczne i stąd pomysł na TV Stick-a. Córka podsunęła mi coś takiego:

1. Odtwarzacz multimedialny 4K XIAOMI MI Stick TV Czarny:
By zobaczyć linki musisz się zalogować lub zarejestrować.

lub

2. Odtwarzacz multimedialny 4K XIAOMI Mi TV Stick 2nd Gen Czarny:
By zobaczyć linki musisz się zalogować lub zarejestrować.

Ten drugi ma na pokładzie system Google TV a chyba lepiej żeby był z Androidem no i 8 GB pamięci wbudowanej to chyba trochę mało...?
Proszę o pomoc - co myślicie o tych sprzętach? A może macie inne, lepsze propozycje?
Dziękuję i pozdrawiam.

Wydrukuj tę wiadomość

  Aeon Tajo - spolszczenie interfejsu i ustawień
Napisane przez: arkady1964 - 11-10-2026, 08:08 AM - Forum: Skórki - Brak odpowiedzi

Znana skórka z oficjalnego repozytorium Kodi. 

Niedawno, nareszcie otrzymała interfejs, w tym opis ustawień spolonizowany. Niestety, ale w bardzo wielu skórkach polonizacja interfejsu i opisu ustawień jest tylko częściowa, tak do niedawna było w Aeon Tajo. Dla osób ze słabszą znajomością języka angielskiego ułatwia to znacznie obsługę tej ciekawej skórki.

Aeon Tajo

Autor: manfeed
Github: 
By zobaczyć linki musisz się zalogować lub zarejestrować.
Oficjalny wątek: 
wersja 20  By zobaczyć linki musisz się zalogować lub zarejestrować.
wersja 21  By zobaczyć linki musisz się zalogować lub zarejestrować.
Repozytorium Kodi  v20, v21, v22
Instalacja skóry:
System > Interfejs > Wygląd i działanie/Skóra > Pobierz więcej...  > Aeon Tajo

Skórka jest dość lekka i szybka. Ma Bardzo czytelny interfejs, wygodny do obsługi pilotem od Android TV oraz pilotem od Air Mouse (jest duży i szeroki pasek postępu filmu, co ułatwia bardzo przewijanie pilotem Air Mouse).
Skórka ma schludny wygląd, bez nadmiaru elementów, które mogą utrudniać obsługę. Do tego czarne tło skórki ułatwia obsługę w nocy, czcionka jest duża dająca dobry odczyt tekstu. Aeon Tajo dobrze działa na Android TV i jest cały czas rozwijana przez aktualizacje.

Uwaga.  Zaznaczam, że jest jedna nietypowa sprawa w skórce Aeon Tajo tj. umiejscowienie zakładki  Dodatki .  Nie znajduje się ona w Ustawieniach lecz w Programach:
Programy > Dodatki

Z ustawień dla ułatwienia przeglądu info o filmie, można załączyć automatyczne przewijanie opisu i recenzji filmu:
SYSTEM > Opcje skórki > Widoki > Przewijaj opis i recenzję (załączone - zielona kropka w okręgu)  Kolor zielony w tym ustawieniu oznacza bardzo mały wpływ na wydajność, pomarańczowy zaś umiarkowany.

Jest jeszcze sporo innych ustawień w  skórce Aeon Tajo, ale te zależą od indywidualnych preferencji użytkownika skórki Aeon Tajo.

Pozdrawiam

Wydrukuj tę wiadomość

  Komputronik zapowiedział nowego PC Level
Napisane przez: stannasia - 07-10-2026, 06:58 PM - Forum: Off topic - Brak odpowiedzi

Ktoś może być zainteresowany — Komputronik zapowiedział nowego PC Level. 

Informacja pojawiła się na ich kanale nadawczym.

Jeśli ktoś rozgląda się za gotowym komputerem, można zapisać się do newslettera, żeby nie przegapić premiery:
By zobaczyć linki musisz się zalogować lub zarejestrować.

[Obrazek: Jw02gjrl.jpeg]

Wydrukuj tę wiadomość

  Vantage TV, Show TV, Red Carpet
Napisane przez: memek86 - 05-10-2026, 07:50 PM - Forum: Aktualizacje i zmiany - Odpowiedzi (1)

Witam,

proszę o integrację Vantage TV By zobaczyć linki musisz się zalogować lub zarejestrować.  By zobaczyć linki musisz się zalogować lub zarejestrować. lub By zobaczyć linki musisz się zalogować lub zarejestrować. By zobaczyć linki musisz się zalogować lub zarejestrować. By zobaczyć linki musisz się zalogować lub zarejestrować. By zobaczyć linki musisz się zalogować lub zarejestrować.

Ponadto EPG dla "Show TV" jest takie samo jak dla "Red Carpet". Show TV wydaje się być prawidłowe, a błędne Red Carpet International.
Nie znalazłem źródła EPG dla Red Carpet.

Pozdrawiam

Wydrukuj tę wiadomość

Information Poobi, może ciekawa apka?
Napisane przez: arkady1964 - 04-10-2026, 11:44 AM - Forum: Aplikacje - Odpowiedzi (2)

Wszystkie przeglądarki dedykowane na Android TV, nawet te najlepsze pod względem blokowania reklam i tak ustępują pod względem blokowania reklam oraz wyskakujących okienek kilku przeglądarkom zrobionych na tzw. "zwykłego" Androida.
Przeglądarek dedykowanych na Android TV jest niedużo, zaś tych. które jako tako blokują reklam reklamy jest niewiele.

Przez weekend ponownie przetestowałem dosłownie wszystkie przeglądarki internetowe dedykowane na Android TV (obecnie jest ich trochę dostępnych).

Wydaje mi się, że pomimo ograniczeń najlepiej sprawują się ZEUS TV Browser i BrowseHere. Jest jeszcze kilka w miarę dobrych, jak na Android TV.
Jednak jak wspomniałem wcześniej niektóre przeglądarki ze "zwykłego" Androida mają lepsze blokowanie reklam. Co prawda można je z pliku APK zainstalować na Android TV, ale do sterowania wymagają pilota Air Mouse lub myszki komputerowej na USB.

W Internecie na Githubie znalazłem aplikację Poobi, która według zapewnień autora ma przeglądarkę świetnie blokującą reklamy na sprzęcie z Android TV/Google TV. Poobi dla swojego silnika używa bardzo skutecznego blokera z Brave tj. Adblock Rust, w nim korzysta z list Easylist, Easyprivacy i uBO do blokowania reklam.
Niestety, nie udało mi się jej zainstalować na moim box-e z Android TV, ponieważ wyskoczył błąd w trakcie instalacji (może to wina mojego sprzętu).

Gwoli informacji podaję źródło z Githuba, gdzie jest ona opublikowana:
Główna strona wydania Poobi:
By zobaczyć linki musisz się zalogować lub zarejestrować.
Strona z wersjami Poobi na różne architektury procesora:
By zobaczyć linki musisz się zalogować lub zarejestrować.

Według zapewnień jej autora, Poobi: 
"Poobi to szybka, nowoczesna i wysoce zoptymalizowana przeglądarka internetowa i streamer multimediów, zaprojektowana specjalnie dla telewizorów z systemem Android TV, Google TV i dekoderów z systemem Android."

Pozdrawiam

Wydrukuj tę wiadomość