Spaces:
Paused
Paused
File size: 8,573 Bytes
1f9aed5 4aa133b 1f9aed5 0d18203 1f9aed5 4aa133b 1f9aed5 7f2b288 1f9aed5 db53419 6270c4d db53419 6270c4d 388f2ec 3cb0665 333933b 09a0c7c f16e37f 1bf7bcf bc31582 1bf7bcf 09a0c7c 433f04c 4e8927a 018718b 433f04c bc31582 433f04c db53419 f07d5fb 0d18203 db53419 1f9aed5 db53419 8017fbe db53419 c6d4821 db53419 489ae08 db53419 1f9aed5 3754d20 1f9aed5 ddeaa60 1f9aed5 aaece51 db53419 0d18203 4c5f24b db53419 1f9aed5 f2df960 1f9aed5 f2df960 4aa133b 1f9aed5 4aa133b f6820e5 1f9aed5 0d18203 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 |
from flask import Flask, jsonify, abort
from filmpertutti import filmpertutti
from streamingcommunity import streaming_community
from tantifilm import tantifilm
from lordchannel import lordchannel
from streamingwatch import streamingwatch
import json
import config
import logging
from okru import okru_get_url
# Configure logging
FILMPERTUTTI = config.FILMPERTUTTI
STREAMINGCOMMUNITY = config.STREAMINGCOMMUNITY
MYSTERIUS = config.MYSTERIUS
TUTTIFILM = config.TUTTIFILM
TF_DOMAIN = config.TF_DOMAIN
LORDCHANNEL = config.LORDCHANNEL
STREAMINGWATCH= config.STREAMINGWATCH
HOST = config.HOST
PORT = int(config.PORT)
HF = config.HF
if HF == "1":
HF = "🤗️"
#Cool code to set the hugging face if the service is hosted there.
else:
HF = ""
if MYSTERIUS == "1":
from cool import cool
app = Flask(__name__)
MANIFEST = {
"id": "org.stremio.mammamia",
"version": "1.0.0",
"catalogs": [
{"type": "tv", "id": "tv_channels", "name": "TV Channels"}
],
"resources": ["stream", "catalog","meta"],
"types": ["movie", "series", "tv"],
"name": "Mamma Mia",
"description": "Addon providing HTTPS Stream for Italian Movies/Series",
"logo": "https://creazilla-store.fra1.digitaloceanspaces.com/emojis/49647/pizza-emoji-clipart-md.png"
}
STREAM = {
"channels": [
{
"id": "la7",
"title": "LA7",
"url": "https://d3749synfikwkv.cloudfront.net/v1/master/3722c60a815c199d9c0ef36c5b73da68a62b09d1/cc-74ylxpgd78bpb/Live.m3u8"
},
{
"id": "rai1",
"title": "Rai 1",
"url": "https://m3u.iranvids.com/rai01/output.m3u8",
"behaviorHints": {
"notWebReady": True,
"proxyHeaders": {
"request": {
"User-Agent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/126.0.0.0 Safari/537.36"
}
}
}
},
{
"id": "rai2",
"title": "Rai 2",
"url": "https://ddy6.mizhls.ru/ddy6/premium851/playlist.m3u8",
"behaviorHints": {
"notWebReady": True,
"proxyHeaders": {
"request": {
"Referer": "https://1qwebplay.xyz/",
"Origin": "https://1qwebplay.xyz",
"User-Agent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/126.0.0.0 Safari/537.36"
}
}
}
},
{
"id": "sky24",
"title": "Sky News 24",
"url": "https://08-24.mizhls.ru/fls/cdn/calcioXskysport24/playlist.m3u8",
"behaviorHints": {
"notWebReady": True,
"proxyHeaders": {
"request": {
"Referer":'https://ilovetoplay.xyz/',
"Origin": "https://ilovetoplay.xyz",
"User-Agent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/126.0.0.0 Safari/537.36"
}
}
}
}
]
}
okru = {
"rai1": "https://ok.ru/videoembed/7703488765552?nochat=1",
"rai2": "https://ok.ru/videoembed/7805618364016?nochat=1"
}
MANIFEST["catalogs"].append({"type": "tv", "id": "channels", "name": "Channels"})
def respond_with(data):
resp = jsonify(data)
resp.headers['Access-Control-Allow-Origin'] = '*'
resp.headers['Access-Control-Allow-Headers'] = '*'
return resp
@app.route('/manifest.json')
def addon_manifest():
return respond_with(MANIFEST)
@app.route('/')
def root():
return "Hello, this is a Stremio Addon providing HTTPS Stream for Italian Movies/Series, to install it add /manifest.json to the url and then add it into the Stremio search bar"
@app.route('/catalog/<type>/<id>.json')
def addon_catalog(type, id):
if type != "tv":
abort(404)
catalogs = {"metas": []}
for channel in STREAM["channels"]:
catalogs["metas"].append({
"id": channel["id"],
"type": "tv",
"name": channel["title"],
"poster": "", # Add poster URL if available
"description": f"Watch {channel['title']}"
})
return respond_with(catalogs)
@app.route('/meta/<type>/<id>.json')
def addon_meta(type, id):
if type != "tv":
abort(404)
for channel in STREAM["channels"]:
if channel["id"] == id:
meta = {
"id": id,
"type": "tv",
"name": channel["title"],
"poster": "", # Add poster URL if available
"description": f"Watch {channel['title']}",
"background": "", # Add background image URL if available
"logo": "", # Add logo URL if available
"videos": [{
"id": id,
"title": channel["title"],
"streams": [{
"title": channel["title"],
"url": channel["url"]
}]
}]
}
return respond_with({"meta": meta})
abort(404)
@app.route('/stream/<type>/<id>.json')
def addon_stream(type, id):
if type not in MANIFEST['types']:
abort(404)
streams = {'streams': []}
if type == "tv":
for channel in STREAM["channels"]:
if channel["id"] == id:
if id in okru:
channel_url = okru_get_url(id)
streams['streams'].append({
'title': "okru"+channel['title'],
'url': channel_url
})
streams['streams'].append({
'title': channel['title'],
'url': channel['url']
})
if not streams['streams']:
abort(404)
return respond_with(streams)
else:
logging.debug(f"Handling movie or series: {id}")
if MYSTERIUS == "1":
results = cool(id)
if results:
for resolution, link in results.items():
streams['streams'].append({'title': f'{HF}Mysterious {resolution}', 'url': link})
if STREAMINGCOMMUNITY == "1":
url_streaming_community,url_720_streaming_community,quality_sc = streaming_community(id)
if url_streaming_community is not None:
if quality_sc == "1080":
streams['streams'].append({'title': f'{HF}StreamingCommunity 1080p Max', 'url': url_streaming_community})
streams['streams'].append({'title': f'{HF}StreamingCommunity 720p Max', 'url': url_720_streaming_community})
else:
streams['streams'].append({'title': f'{HF}StreamingCommunity 720p Max', 'url': url_streaming_community})
if LORDCHANNEL == "1":
url_lordchannel,quality_lordchannel =lordchannel(id)
if quality_lordchannel == "FULL HD" and url_lordchannel != None:
streams['streams'].append({'title': f'{HF}LordChannel 1080p', 'url': url_lordchannel})
elif url_lordchannel != None:
streams['streams'].append({'title': f'{HF}LordChannel 720p', 'url': url_lordchannel})
if FILMPERTUTTI == "1":
url_filmpertutti = filmpertutti(id)
if url_filmpertutti is not None:
streams['streams'].append({'title': 'Filmpertutti', 'url': url_filmpertutti})
if TUTTIFILM == "1":
url_tuttifilm = tantifilm(id)
if url_tuttifilm:
if not isinstance(url_tuttifilm, str):
for title, url in url_tuttifilm.items():
streams['streams'].append({'title': f'{HF}Tantifilm {title}', 'url': url, 'behaviorHints': {'proxyHeaders': {"request": {"Referer": "https://d000d.com/"}}, 'notWebReady': True}})
if STREAMINGWATCH == "1":
url_streamingwatch = streamingwatch(id)
if url_streamingwatch:
streams['streams'].append({'title': '{HF}StreamingWatch 720p', 'url': url_streamingwatch})
if not streams['streams']:
abort(404)
return respond_with(streams)
return respond_with({"meta": meta})
if __name__ == '__main__':
app.run(host=HOST, port=PORT) |