Aktuelles
Digital Eliteboard - Das Digitale Technik Forum

Registriere dich noch heute kostenlos, um Mitglied zu werden! Sobald du angemeldet bist, kannst du auf unserer Seite aktiv teilnehmen, indem du deine eigenen Themen und Beiträge erstellst und dich über deinen eigenen Posteingang mit anderen Mitgliedern unterhalten kannst! Zudem bekommst du Zutritt zu Bereichen, welche für Gäste verwehrt bleiben

Registriere dich noch heute kostenlos, um Mitglied zu werden! Sobald du angemeldet bist, kannst du auf unserer Seite aktiv teilnehmen, indem du deine eigenen Themen und Beiträge erstellst und dich über deinen eigenen Posteingang mit anderen Mitgliedern unterhalten kannst! Zudem bekommst du Zutritt zu Bereichen, welche für Gäste verwehrt bleiben

Laberthread - Autoscript Vavoo auf e2 oder TvHeadend

Wie laufen bei euch die Einzeiler

  • Stream + Picon + EPG funktioniert

    Stimmen: 36 45,6%
  • Stream + EPG funktioniert

    Stimmen: 12 15,2%
  • Stream + Picon funktioniert

    Stimmen: 3 3,8%
  • Nur Stream funktioniert

    Stimmen: 21 26,6%
  • Streams gehen garnicht

    Stimmen: 7 8,9%

  • Umfrageteilnehmer
    79
  • Umfrage geschlossen .
Bei mir funktioniert es, aber schlecht, darf ich auch mal pissig werden und andere beleidigen :unsure: ;) :ROFLMAO: :ROFLMAO: :ROFLMAO:

jungs, kommt mal runter, es ist Freitag, mal einfach SKY und andere vergesen, es gibt auch ein Leben ohne werbung ;):ROFLMAO::ROFLMAO:

genist das Leben, anstad euch wegen ein ilegalen iptv zugang zu streiten
 
So. Hier noch mit Movies (dauert aber ewig die zu builden, deshalb hab ich auch nicht wirklich getestet ob die m3u auch geht)
kann oben im Script ausgeschaltet werden.




..aber echt die letzte Aktion für Vavoo.


Edit:

hab movies wieder rausgeworfen, da Vavoo sowieso keine eigenen Quellen hat und ich keinen Bock hab auch noch Resolver für den Mist zu schreiben.
 
Zuletzt bearbeitet:
Ich will mal nicht so sein.
Hier ein Python Proxy für lokal.
Starten.
Laufen lassen.
M3U nutzen. (wird im Scriptverzeichnis gespeichert)
Ich geb da keinen Support und werde das auch nicht weiter ausbauen. (ich brauche den Kram nicht)
Das ist euer Part. ;)

Python:
###############################################################
PORT = 4323

LANGUAGE = "de"
REGION = "DE"

###############################################################

import json
import gzip
import requests
from io import BytesIO
import uuid
from flask import Flask, request, Response, abort
import time
import os
import socket

GEOIP_URL = "https://www.vavoo.tv/geoip"
PING_URL = "https://www.vavoo.tv/api/app/ping"
CATALOG_URL = "https://vavoo.to/mediahubmx-catalog.json"
RESOLVE_URL = "https://vavoo.to/mediahubmx-resolve.json"

HEADERS = {
    "accept": "*/*",
    "user-agent": "electron-fetch/1.0 electron (+https://github.com/arantes555/electron-fetch)",
    "Accept-Language": LANGUAGE,
    "Accept-Encoding": "gzip, deflate",
    "Connection": "close",
}

def decode_response(resp):
    if resp.content[:2] == b'\x1f\x8b':
        return json.loads(gzip.decompress(resp.content))
    else:
        return resp.json()

session = requests.Session()
session.headers.update(HEADERS)

r_geo = session.get(GEOIP_URL)
r_geo.raise_for_status()
geo_data = decode_response(r_geo)

unique_id = str(uuid.uuid4())

current_timestamp = int(time.time() * 1000)

initial_payload = {
    "reason": "app-focus",
    "locale": LANGUAGE,
    "theme": "dark",
    "metadata": {
        "device": {"type": "desktop", "uniqueId": unique_id},
        "os": {"name": "win32", "version": "Windows 10 Pro", "abis": ["x64"], "host": "Lenovo"},
        "app": {"platform": "electron"},
        "version": {"package": "tv.vavoo.app", "binary": "3.1.8", "js": "3.1.8"},
    },
    "appFocusTime": 0,
    "playerActive": False,
    "playDuration": 0,
    "devMode": False,
    "hasAddon": True,
    "castConnected": False,
    "package": "tv.vavoo.app",
    "version": "3.1.8",
    "process": "app",
    "firstAppStart": current_timestamp,
    "lastAppStart": current_timestamp,
    "ipLocation": None,
    "adblockEnabled": True,
    "proxy": {"supported": ["ss"], "engine": "Mu", "enabled": False, "autoServer": True},
    "iap": {"supported": False},
}

r1 = session.post(PING_URL, json=initial_payload)
r1.raise_for_status()
data1 = decode_response(r1)

initial_token = data1.get("token")
initial_addon_sig = data1.get("addonSig")

#print(f"[+] Initial token received: {initial_token}")
#print(f"[+] Initial addonSig received: {initial_addon_sig}")

catalog_headers = {
    "content-type": "application/json; charset=utf-8",
    "mediahubmx-signature": initial_addon_sig,
    "user-agent": "MediaHubMX/2",
    "accept": "*/*",
    "Accept-Language": LANGUAGE,
    "Accept-Encoding": "gzip, deflate",
    "Connection": "close",
}

all_filtered_items = []
cursor = None
while True:
    catalog_payload = {
        "language": LANGUAGE,
        "region": REGION,
        "catalogId": "iptv",
        "id": "iptv",
        "adult": False,
        "search": "",
        "sort": "",
        "filter": {},
        "cursor": cursor,
        "clientVersion": "3.0.2"
    }
 
    r_catalog = session.post(CATALOG_URL, json=catalog_payload, headers=catalog_headers)
    r_catalog.raise_for_status()
    catalog_data = decode_response(r_catalog)
 
    for item in catalog_data.get("items", []):
        if item.get("type") == "iptv":
            filtered_item = {
                "id": item["ids"]["id"],
                "url": item["url"],
                "name": item["name"],
                "group": item["group"],
                "logo": item["logo"]
            }
            all_filtered_items.append(filtered_item)
 
    cursor = catalog_data.get("nextCursor")
    if cursor is None:
        break

def save_m3u_file():
    hostname = socket.gethostname()
    local_ip = socket.gethostbyname(hostname)
    if local_ip.startswith("127."):
        s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
        try:
            s.connect(("8.8.8.8", 80))
            local_ip = s.getsockname()[0]
        except Exception:
            local_ip = "127.0.0.1"
        finally:
            s.close()
 
    m3u_content = "#EXTM3U\n"
    for item in all_filtered_items:
        m3u_content += f'#EXTINF:-1 tvg-id="{item["id"]}" tvg-name="{item["name"]}" tvg-logo="{item["logo"]}" group-title="{item["group"]}",{item["name"]}\n'
        m3u_content += f'http://{local_ip}:{PORT}/vavoo?channel={item["id"]}\n'
 
    with open("vavoo_playlist.m3u", "w", encoding="utf-8") as f:
        f.write(m3u_content)
 
    print("[✓] Local M3U playlist saved to vavoo_playlist.m3u")

save_m3u_file()

app = Flask(__name__)

@app.route('/vavoo')
def stream_proxy():
    channel_id = request.args.get('channel')
    if not channel_id:
        abort(400)
 
    channel = next((item for item in all_filtered_items if item["id"] == channel_id), None)
    if not channel:
        abort(404)
 
    resolve_headers = {
        "content-type": "application/json; charset=utf-8",
        "mediahubmx-signature": initial_addon_sig,
        "user-agent": "MediaHubMX/2",
        "accept": "*/*",
        "Accept-Language": LANGUAGE,
        "Accept-Encoding": "gzip, deflate",
        "Connection": "close",
    }
 
    resolve_payload = {
        "language": LANGUAGE,
        "region": REGION,
        "url": channel["url"],
        "clientVersion": "3.0.2"
    }
 
    r_resolve = session.post(RESOLVE_URL, json=resolve_payload, headers=resolve_headers)
    r_resolve.raise_for_status()
    resolve_result = decode_response(r_resolve)
 
    if resolve_result and len(resolve_result) > 0:
        stream_url = resolve_result[0]["url"]
        return Response(status=302, headers={"Location": stream_url})
    else:
        abort(404)

@app.route('/playlist.m3u')
def playlist():
    hostname = socket.gethostname()
    local_ip = socket.gethostbyname(hostname)
    if local_ip.startswith("127."):
        s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
        try:
            s.connect(("8.8.8.8", 80))
            local_ip = s.getsockname()[0]
        except Exception:
            local_ip = "127.0.0.1"
        finally:
            s.close()
 
    m3u_content = "#EXTM3U\n"
    for item in all_filtered_items:
        m3u_content += f'#EXTINF:-1 tvg-id="{item["id"]}" tvg-name="{item["name"]}" tvg-logo="{item["logo"]}" group-title="{item["group"]}",{item["name"]}\n'
        m3u_content += f'http://{local_ip}:{PORT}/vavoo?channel={item["id"]}\n'
 
    return Response(m3u_content, mimetype='application/x-mpegURL')

if __name__ == '__main__':
    app.run(host='0.0.0.0', port=PORT)

requests==2.31.0
flask==2.3.3

Für eure E2 Kisten müsst ihr das halt umbauen.
Zur Info:
Über Tivimate und Konsorten wird das nicht funktionieren.
Die brauchen absolute Pfade in der index.m3u8
VLC etc. ist da "unproblematischer".
Der Proxy patched das NICHT.
Wenn ich Lust und Zeit habe, implementiere ich das vielleicht noch.
 
Zuletzt bearbeitet:
Über Tivimate und Konsorten
Moin,
getestet habe ich über das iPhone mit Cloud Stream und Smarter IPTV und damit läuft das sehr gut und stabil. Greife über Wireguard auf die vom script erstellte vavoo_playlist.m3u zu. Wenn ich die nächsten Tage Zeit habe probiere die m3u mit bouquetmakerxtream auf e2 zu erstellen.
 

Anhänge

Du musst angemeldet sein, um die Anhangsliste zu sehen.
Grundsätzlich sollte es auf allen Playern laufen, denen die relativen Pfade in der m3u8 egal sind und die nicht der Request URL (die URL vom Proxy Script) für die ts Segmente folgen sondern der real gesendeten URL.
Da Tivimate immer zuerst der url aus der m3u folgt, landet er wieder beim Proxy und der sendet halt keine Segmente zurück.
 
Zuletzt bearbeitet:
Ich musste in deinem Script nur eine Zeile ändern damit es läuft
von
Code:
hostname = socket.gethostname()
local_ip = socket.gethostbyname(hostname)
auf meine VPN Subip

Code:
hostname = socket.gethostname()
local_ip = "10.213.86.1"
 
Hab hier etwas für E2 erstellt mit dem script vom @salidos und das m3u2e2.sh von @clever999 mit ein paar Anpassungen.
install_vavoo.sh
Code:
opkg update
opkg install python3 python3-trio python3-xmlrpc python3-isodate python3-pycountry python3-pycryptodomex
wget https://bootstrap.pypa.io/get-pip.py -O /tmp/get-pip.py
python3 /tmp/get-pip.py
wait
pip3 install --upgrade pip
pip3 install requests==2.31.0 flask==2.3.3
cd /home
wget https://instinto.mooo.com/tv/vavoo_E2.py
wget https://instinto.mooo.com/osprey/m3u2e2.sh
chmod 755 m3u2e2.sh
nohup python3 vavoo_E2.py > /home/vavoo_E2.log 2>&1 &
sleep 5
./m3u2e2.sh vavoo_playlist.m3u vavoo-de
exit 0

Hier auch als Einzeiler
Code:
wget -O - -q https://neutrinobox.de/install-vavoo-e2.sh | bash

Bei einem reboot, müsst ihr es neu starten oder ein cronjob einbauen
Code:
cd /home && nohup python3 vavoo_E2.py > /home/vavoo_E2.log 2>&1 &

Edit:
Hab noch ein sleep 5 eingestellt vom erstellen der m3u zum e2 Bouquet da es sonst die m3u nicht findet.
Danke für die Info.
 

Anhänge

Du musst angemeldet sein, um die Anhangsliste zu sehen.
Zuletzt bearbeitet:
Zurück
Oben