1
0
Fork 0
mirror of https://github.com/fastogt/fastocloud_admin.git synced 2025-03-09 23:38:52 +00:00
fastocloud_admin/scripts/import_streams_from_xtream.py
2019-09-21 08:06:30 -04:00

78 lines
2.4 KiB
Python
Executable file

#!/usr/bin/env python3
import argparse
import os
import sys
from datetime import datetime
from mongoengine import connect
import mysql.connector
sys.path.append(os.path.join(os.path.dirname(__file__), '..'))
from app.common.stream.entry import ProxyStream
from app.service.service import ServiceSettings
from app.common.utils.utils import is_valid_http_url
import app.common.constants as constants
PROJECT_NAME = 'import_streams_from_xtream'
if __name__ == '__main__':
parser = argparse.ArgumentParser(prog=PROJECT_NAME, usage='%(prog)s [options]')
parser.add_argument('--mongo_uri', help='MongoDB credentials', default='mongodb://localhost:27017/iptv')
parser.add_argument('--mysql_host', help='MySQL host', default='localhost')
parser.add_argument('--mysql_user', help='MySQL username', default='root')
parser.add_argument('--mysql_password', help='MySQL password', default='')
parser.add_argument('--mysql_port', help='MySQL port', default=3306)
parser.add_argument('--server_id', help='Server ID', default='')
argv = parser.parse_args()
mysql_host = argv.mysql_host
mysql_user = argv.mysql_user
mysql_password = argv.mysql_password
mysql_port = argv.mysql_port
server_id = argv.server_id
mongo = connect(host=argv.mongo_uri)
if not mongo:
sys.exit(1)
server = ServiceSettings.objects(id=server_id).first()
if not server:
sys.exit(1)
db = mysql.connector.connect(
host=mysql_host,
port=mysql_port,
user=mysql_user,
passwd=mysql_password,
database='xtream_iptvpro'
)
cursor = db.cursor(dictionary=True)
sql = 'SELECT stream_source, stream_display_name, stream_icon, channel_id from streams'
cursor.execute(sql)
sql_streams = cursor.fetchall()
streams = []
for sql_entry in sql_streams:
stream = ProxyStream.make_stream(server)
stream.output.urls[0].uri = sql_entry['stream_source']
stream.name = sql_entry['stream_display_name']
tvg_logo = sql_entry['stream_icon']
if len(tvg_logo) < constants.MAX_URL_LENGTH:
if is_valid_http_url(tvg_logo, timeout=0.1):
stream.tvg_logo = tvg_logo
epg_id = sql_entry['channel_id']
if epg_id:
stream.tvg_id = epg_id
stream.save()
streams.append(stream)
server.streams.append(streams)
server.save()
cursor.close()
db.close()