Merge pull request 'Extract API domain registry' (#7) from DAP-86-hinzuf-gen-weiterer-streaming-domains into main
Reviewed-on: #7
This commit was merged in pull request #7.
This commit is contained in:
1
plugin.video.xstream/resources/lib/data/__init__.py
Normal file
1
plugin.video.xstream/resources/lib/data/__init__.py
Normal file
@@ -0,0 +1 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
122
plugin.video.xstream/resources/lib/data/api_all_domains.py
Normal file
122
plugin.video.xstream/resources/lib/data/api_all_domains.py
Normal file
@@ -0,0 +1,122 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
# Python 3
|
||||
|
||||
API_ALL_DOMAINS = (
|
||||
{
|
||||
'label': 'BS.to',
|
||||
'domain': 'bs.to',
|
||||
'url': 'https://bs.to/',
|
||||
},
|
||||
{
|
||||
'label': 'Cine.to',
|
||||
'domain': 'cine.to',
|
||||
'url': 'https://cine.to/',
|
||||
},
|
||||
{
|
||||
'label': 'Filmpalast.to',
|
||||
'domain': 'filmpalast.to',
|
||||
'url': 'http://filmpalast.to/',
|
||||
},
|
||||
{
|
||||
'label': 'HDFilme.tv',
|
||||
'domain': 'hdfilme.tv',
|
||||
'url': 'http://hdfilme.tv/',
|
||||
},
|
||||
{
|
||||
'label': 'HDFilme',
|
||||
'domain': 'hdfilme.me',
|
||||
'url': 'https://hdfilme.me/',
|
||||
},
|
||||
{
|
||||
'label': 'KinoDogs.to',
|
||||
'domain': 'kinodogs.to',
|
||||
'url': 'https://kinodogs.to/',
|
||||
},
|
||||
{
|
||||
'label': 'Kinokiste',
|
||||
'domain': 'kinokiste.eu',
|
||||
'url': 'https://kinokiste.eu/',
|
||||
},
|
||||
{
|
||||
'label': 'Kinoz',
|
||||
'domain': 'kinoz.org',
|
||||
'url': 'https://kinoz.org/',
|
||||
},
|
||||
{
|
||||
'label': 'KinoGer.com',
|
||||
'domain': 'kinoger.com',
|
||||
'url': 'https://kinoger.com/',
|
||||
},
|
||||
{
|
||||
'label': 'KinoX.to',
|
||||
'domain': 'kinox.to',
|
||||
'url': 'https://kinox.to/',
|
||||
},
|
||||
{
|
||||
'label': 'KKiste',
|
||||
'domain': 'kkiste.eu',
|
||||
'url': 'https://kkiste.eu/',
|
||||
},
|
||||
{
|
||||
'label': 'KKiste.ag',
|
||||
'domain': 'kkiste.ag',
|
||||
'url': 'http://www.kkiste.ag/',
|
||||
},
|
||||
{
|
||||
'label': 'Movie2k',
|
||||
'domain': 'movie2k.ch',
|
||||
'url': 'https://movie2k.ch/',
|
||||
},
|
||||
{
|
||||
'label': 'Movie4k',
|
||||
'domain': 'movie4k.sx',
|
||||
'url': 'https://movie4k.sx/',
|
||||
},
|
||||
{
|
||||
'label': 'Movie4k.org',
|
||||
'domain': 'movie4k.org',
|
||||
'url': 'http://movie4k.org/',
|
||||
},
|
||||
{
|
||||
'label': 'MovieTown.org',
|
||||
'domain': 'movietown.org',
|
||||
'url': 'https://movietown.org/',
|
||||
},
|
||||
{
|
||||
'label': 'MovieDream.co',
|
||||
'domain': 'moviedream.co',
|
||||
'url': 'https://moviedream.co/',
|
||||
},
|
||||
{
|
||||
'label': 'S.to',
|
||||
'domain': 's.to',
|
||||
'url': 'https://s.to/',
|
||||
},
|
||||
{
|
||||
'label': 'Stream.to',
|
||||
'domain': 'stream.to',
|
||||
'url': 'https://stream.to/de',
|
||||
},
|
||||
{
|
||||
'label': 'StreamWorld.to',
|
||||
'domain': 'streamworld.to',
|
||||
'url': 'http://streamworld.to/',
|
||||
},
|
||||
{
|
||||
'label': 'Streamcloud',
|
||||
'domain': 'streamcloud.sx',
|
||||
'url': 'https://streamcloud.sx/',
|
||||
},
|
||||
{
|
||||
'label': 'StreamKiste',
|
||||
'domain': 'streamkiste.sx',
|
||||
'url': 'https://streamkiste.sx/',
|
||||
},
|
||||
{
|
||||
'label': 'XCine',
|
||||
'domain': 'xcine.io',
|
||||
'url': 'https://xcine.io/',
|
||||
},
|
||||
)
|
||||
|
||||
API_ALL_DEFAULT_DOMAIN = 'kinokiste.eu'
|
||||
@@ -8,6 +8,8 @@
|
||||
|
||||
import re
|
||||
import xbmcgui
|
||||
from urllib.parse import urlparse
|
||||
|
||||
from resources.lib.handler.ParameterHandler import ParameterHandler
|
||||
from resources.lib.handler.requestHandler import cRequestHandler
|
||||
from resources.lib.tools import logger, cParser, cUtil
|
||||
@@ -16,17 +18,53 @@ from resources.lib.config import cConfig
|
||||
from resources.lib.gui.gui import cGui
|
||||
from json import loads
|
||||
from datetime import datetime
|
||||
from resources.lib.data.api_all_domains import API_ALL_DOMAINS, API_ALL_DEFAULT_DOMAIN
|
||||
|
||||
# Globale Variable für die JSON-Daten
|
||||
apiJson = None
|
||||
|
||||
# Domain Abfrage ###
|
||||
|
||||
def _normalize_domain(value):
|
||||
if not value:
|
||||
return ''
|
||||
|
||||
parsed = urlparse(value)
|
||||
if parsed.hostname:
|
||||
return parsed.hostname.lower()
|
||||
|
||||
return value.strip().lower()
|
||||
|
||||
|
||||
def _get_default_domain():
|
||||
registry = _get_domain_registry()
|
||||
if API_ALL_DEFAULT_DOMAIN in registry:
|
||||
return API_ALL_DEFAULT_DOMAIN
|
||||
if API_ALL_DOMAINS:
|
||||
return API_ALL_DOMAINS[0]['domain']
|
||||
return API_ALL_DEFAULT_DOMAIN
|
||||
|
||||
|
||||
def _get_domain_registry():
|
||||
return {entry['domain']: entry for entry in API_ALL_DOMAINS}
|
||||
|
||||
|
||||
def _get_configured_domain():
|
||||
registry = _get_domain_registry()
|
||||
configured = _normalize_domain(
|
||||
cConfig().getSetting('plugin_' + SITE_IDENTIFIER + '.domain', _get_default_domain())
|
||||
)
|
||||
|
||||
if configured in registry:
|
||||
return configured
|
||||
|
||||
return _get_default_domain()
|
||||
|
||||
SITE_NAME = 'API Suchmaschine'
|
||||
SITE_ICON = 'api.png'
|
||||
SITE_IDENTIFIER = 'api_all'
|
||||
|
||||
DOMAIN = cConfig().getSetting('plugin_' + SITE_IDENTIFIER + '.domain', 'movie4k.sx')
|
||||
DOMAIN = _get_configured_domain()
|
||||
STATUS = cConfig().getSetting('plugin_' + SITE_IDENTIFIER + '_status') # Status Code Abfrage der Domain
|
||||
ACTIVE = cConfig().getSetting('plugin_' + SITE_IDENTIFIER) # Ob Plugin aktiviert ist oder nicht
|
||||
ORIGIN = 'https://' + DOMAIN + '/'
|
||||
@@ -367,7 +405,7 @@ def showEntries(entryUrl=False, sGui=False, sSearchText=False):
|
||||
oGuiElement.setLanguage('EN')
|
||||
oGuiElement.setMediaType('tvshow' if isTvshow else 'movie')
|
||||
if 'runtime' in movie:
|
||||
isMatch, sRuntime = cParser.parseSingleResult(movie['runtime'], '\d+')
|
||||
isMatch, sRuntime = cParser.parseSingleResult(movie['runtime'], r'\d+')
|
||||
if isMatch:
|
||||
oGuiElement.addItemValue('duration', sRuntime)
|
||||
params.setParam('entryUrl', URL_WATCH % str(movie['_id']))
|
||||
@@ -564,7 +602,7 @@ def SSsearch(sGui=False, sSearchText=False):
|
||||
oGuiElement.setLanguage('EN')
|
||||
oGuiElement.setMediaType('tvshow' if isTvshow else 'movie')
|
||||
if 'runtime' in movie:
|
||||
isMatch, sRuntime = cParser.parseSingleResult(movie['runtime'], '\d+')
|
||||
isMatch, sRuntime = cParser.parseSingleResult(movie['runtime'], r'\d+')
|
||||
if isMatch:
|
||||
oGuiElement.addItemValue('duration', sRuntime)
|
||||
params.setParam('entryUrl', URL_WATCH % str(movie['_id']))
|
||||
@@ -598,4 +636,4 @@ def loadMoviesData():
|
||||
|
||||
|
||||
# Daten werden lazy beim ersten Zugriff geladen (siehe SSsearch)
|
||||
# loadMoviesData() - entfernt: beschleunigt den Import/Start erheblich
|
||||
# loadMoviesData() - entfernt: beschleunigt den Import/Start erheblich
|
||||
|
||||
Reference in New Issue
Block a user