mirror of
https://github.com/knightcrawler-stremio/knightcrawler.git
synced 2024-12-20 03:29:51 +00:00
First self-hosted release
This commit is contained in:
73
addon/hosted/shared.py
Normal file
73
addon/hosted/shared.py
Normal file
@@ -0,0 +1,73 @@
|
||||
import sqlite3
|
||||
import re
|
||||
import os
|
||||
import json
|
||||
from imdb import Cinemagoer
|
||||
|
||||
SQLITE_PATH = "/sqlite/torrentio.sqlite"
|
||||
|
||||
ia = Cinemagoer()
|
||||
CONFIG = "config.json"
|
||||
|
||||
def read_config(provider, key):
|
||||
if os.path.isfile(CONFIG):
|
||||
f = open(CONFIG, "r")
|
||||
cfg = json.load(f)
|
||||
return cfg[provider][key]
|
||||
|
||||
def filter_file(file):
|
||||
allowed_ext = ['.mp4', '.mkv', '.avi', '.mpeg', '.mpg', '.mpv', '.mov']
|
||||
if os.path.splitext(file)[1] in allowed_ext:
|
||||
return True
|
||||
return False
|
||||
|
||||
def create_connection(db_file):
|
||||
conn = None
|
||||
try:
|
||||
conn = sqlite3.connect(db_file, check_same_thread=False)
|
||||
except Exception as e:
|
||||
print(e)
|
||||
exit(1)
|
||||
return conn
|
||||
|
||||
sqlite = create_connection(SQLITE_PATH)
|
||||
|
||||
def build_and_write(torrent):
|
||||
try:
|
||||
print(f"Recording {torrent['title']} in the database")
|
||||
q = f"INSERT OR REPLACE INTO torrents (infoHash, provider, title, size, type, uploadDate, seeders, trackers) VALUES (?,?,?,?,?,?,?,?)"
|
||||
p = (torrent['infoHash'],'1337x',torrent['title'],torrent['size'],'movie','1/1/2024',torrent['seeders'],','.join(torrent['trackers']))
|
||||
cursor = sqlite.cursor()
|
||||
cursor.execute(q,p)
|
||||
for file in torrent['files']:
|
||||
if filter_file(file):
|
||||
q = f"INSERT OR REPLACE INTO files (infoHash, fileIndex, title, size, imdbId) VALUES (?,?,?,?,?)"
|
||||
p = (torrent['infoHash'], torrent['files'].index(file), file, torrent['size'], torrent['imdbid'])
|
||||
cursor.execute(q,p)
|
||||
sqlite.commit()
|
||||
cursor.close()
|
||||
except sqlite3.Error as error:
|
||||
print(error)
|
||||
|
||||
def imdb_find(name):
|
||||
movie = ia.search_movie(name)
|
||||
if len(movie) >= 1:
|
||||
return movie[0].movieID
|
||||
return None
|
||||
|
||||
def extract_title(filename):
|
||||
try:
|
||||
filename.strip()
|
||||
filename = filename.replace('.', ' ')
|
||||
res = re.search('([^\\\]+)\.(avi|mkv|mpeg|mpg|mov|mp4)$', filename)
|
||||
if res:
|
||||
filename = res.group(1)
|
||||
res = re.search('(.*?)(dvdrip|xvid| cd[0-9]|dvdscr|brrip|divx|[\{\(\[]?[0-9]{4}).*', filename)
|
||||
if res:
|
||||
filename = res.group(1)
|
||||
res = re.search('(.*?)\(.*\)(.*)', filename)
|
||||
if res:
|
||||
filename = res.group(1)
|
||||
return filename
|
||||
except:
|
||||
return ""
|
||||
Reference in New Issue
Block a user