Skip to content

Commit

Permalink
Add PSS
Browse files Browse the repository at this point in the history
Add PSS support
  • Loading branch information
edge20200 committed Oct 4, 2024
1 parent 38645f5 commit f85b52e
Show file tree
Hide file tree
Showing 4 changed files with 179 additions and 5 deletions.
4 changes: 2 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# Only-Uploader

Forked from L4G Upload Assistant, thanks for all the work L4G on this tool and all the forks and updates.
Forked from L4G Upload Assistant, thanks for all the work L4G on this tool and all the forks and updates. Shoutout Audionut and Uploarr

This fork is being maintained by OE.

Expand All @@ -17,7 +17,7 @@ A simple tool to take the work out of uploading.
- Can re-use existing torrents instead of hashing new
- Generates proper name for your upload using Mediainfo/BDInfo and TMDb/IMDb conforming to site rules
- Checks for existing releases already on site
- Uploads to OE/PTP/BLU/BHD/Aither/THR/STC/R4E(limited)/HP/ACM/LCD/LST/NBL/ANT/FL/HUNO/RF/SN/RTF/OTW/FNP/CBR/UTP/AL/ULCX/HDB
- Uploads to OE/PTP/BLU/BHD/Aither/THR/STC/R4E(limited)/HP/ACM/LCD/LST/NBL/ANT/FL/HUNO/RF/SN/RTF/OTW/FNP/CBR/UTP/AL/ULCX/HDB/PSS
- Adds to your client with fast resume, seeding instantly (rtorrent/qbittorrent/deluge/watch folder)
- ALL WITH MINIMAL INPUT!
- Currently works with .mkv/.mp4/Blu-ray/DVD/HD-DVDs
Expand Down
7 changes: 6 additions & 1 deletion data/example-config.py
Original file line number Diff line number Diff line change
Expand Up @@ -160,7 +160,7 @@
"img_rehost": False,
"username": "",
"password": "",
"ptgen_api" "",
"ptgen_api": "",
"anon": True,
},
"TL": {
Expand Down Expand Up @@ -208,6 +208,11 @@
"announce_url": "https://upload.cx/announce/customannounceurl",
# "anon" : False
},
"PSS": {
"api_key": "PSS api key",
"announce_url": "https://privatesilverscreen.cc/announce/customannounceurl",
# "anon" : False
},
"UTP": {
"api_key": "UTP api key",
"announce_url": "https://UTP/announce/customannounceurl",
Expand Down
168 changes: 168 additions & 0 deletions src/trackers/PSS.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,168 @@
# -*- coding: utf-8 -*-
# import discord
import asyncio
import requests
from str2bool import str2bool
import platform

from src.trackers.COMMON import COMMON
from src.console import console


class PSS():
"""
Edit for Tracker:
Edit BASE.torrent with announce and source
Check for duplicates
Set type/category IDs
Upload
"""

def __init__(self, config):
self.config = config
self.tracker = 'PSS'
self.source_flag = 'PSS'
self.upload_url = 'https://privatesilverscreen.cc/api/torrents/upload'
self.search_url = 'https://privatesilverscreen.cc/api/torrents/filter'
self.signature = f"\n[center][url=https://github.com/edge20200/Only-Uploader]Powered by Only-Uploader[/url][/center]"
self.banned_groups = [""]
pass

async def get_cat_id(self, category_name):
category_id = {
'MOVIE': '1',
'TV': '2',
}.get(category_name, '0')
return category_id

async def get_type_id(self, type):
type_id = {
'DISC': '1',
'REMUX': '2',
'WEBDL': '4',
'WEBRIP': '5',
'HDTV': '6',
'ENCODE': '3'
}.get(type, '0')
return type_id

async def get_res_id(self, resolution):
resolution_id = {
'8640p': '10',
'4320p': '1',
'2160p': '2',
'1440p': '3',
'1080p': '3',
'1080i': '4',
'720p': '5',
'576p': '6',
'576i': '7',
'480p': '8',
'480i': '9'
}.get(resolution, '10')
return resolution_id

async def upload(self, meta):
common = COMMON(config=self.config)
await common.edit_torrent(meta, self.tracker, self.source_flag)
cat_id = await self.get_cat_id(meta['category'])
type_id = await self.get_type_id(meta['type'])
resolution_id = await self.get_res_id(meta['resolution'])
await common.unit3d_edit_desc(meta, self.tracker, self.signature)
region_id = await common.unit3d_region_ids(meta.get('region'))
distributor_id = await common.unit3d_distributor_ids(meta.get('distributor'))
if meta['anon'] == 0 and bool(str2bool(str(self.config['TRACKERS'][self.tracker].get('anon', "False")))) is False:
anon = 0
else:
anon = 1

if meta['bdinfo'] is not None:
mi_dump = None
bd_dump = open(f"{meta['base_dir']}/tmp/{meta['uuid']}/BD_SUMMARY_00.txt", 'r', encoding='utf-8').read()
else:
mi_dump = open(f"{meta['base_dir']}/tmp/{meta['uuid']}/MEDIAINFO.txt", 'r', encoding='utf-8').read()
bd_dump = None
desc = open(f"{meta['base_dir']}/tmp/{meta['uuid']}/[{self.tracker}]DESCRIPTION.txt", 'r').read()
open_torrent = open(f"{meta['base_dir']}/tmp/{meta['uuid']}/[{self.tracker}]{meta['clean_name']}.torrent", 'rb')
files = {'torrent': open_torrent}
data = {
'name': meta['name'],
'description': desc,
'mediainfo': mi_dump,
'bdinfo': bd_dump,
'category_id': cat_id,
'type_id': type_id,
'resolution_id': resolution_id,
'tmdb': meta['tmdb'],
'imdb': meta['imdb_id'].replace('tt', ''),
'tvdb': meta['tvdb_id'],
'mal': meta['mal_id'],
'igdb': 0,
'anonymous': anon,
'stream': meta['stream'],
'sd': meta['sd'],
'keywords': meta['keywords'],
'personal_release': int(meta.get('personalrelease', False)),
'internal': 0,
'featured': 0,
'free': 0,
'doubleup': 0,
'sticky': 0,
}
# Internal
if self.config['TRACKERS'][self.tracker].get('internal', False) is True:
if meta['tag'] != "" and (meta['tag'][1:] in self.config['TRACKERS'][self.tracker].get('internal_groups', [])):
data['internal'] = 1

if region_id != 0:
data['region_id'] = region_id
if distributor_id != 0:
data['distributor_id'] = distributor_id
if meta.get('category') == "TV":
data['season_number'] = meta.get('season_int', '0')
data['episode_number'] = meta.get('episode_int', '0')
headers = {
'User-Agent': f'Upload Assistant/2.1 ({platform.system()} {platform.release()})'
}
params = {
'api_token': self.config['TRACKERS'][self.tracker]['api_key'].strip()
}

if meta['debug'] is False:
response = requests.post(url=self.upload_url, files=files, data=data, headers=headers, params=params)
try:
console.print(response.json())
except Exception:
console.print("It may have uploaded, go check")
return
else:
console.print("[cyan]Request Data:")
console.print(data)
open_torrent.close()

async def search_existing(self, meta):
dupes = []
console.print("[yellow]Searching for existing torrents on site...")
params = {
'api_token': self.config['TRACKERS'][self.tracker]['api_key'].strip(),
'tmdbId': meta['tmdb'],
'categories[]': await self.get_cat_id(meta['category']),
'types[]': await self.get_type_id(meta['type']),
'resolutions[]': await self.get_res_id(meta['resolution']),
'name': ""
}
if meta.get('edition', "") != "":
params['name'] = params['name'] + f" {meta['edition']}"
try:
response = requests.get(url=self.search_url, params=params)
response = response.json()
for each in response['data']:
result = [each][0]['attributes']['name']
# difference = SequenceMatcher(None, meta['clean_name'], result).ratio()
# if difference >= 0.05:
dupes.append(result)
except Exception:
console.print('[bold red]Unable to search for existing torrents on site. Either the site is down or your API key is incorrect')
await asyncio.sleep(5)

return dupes
5 changes: 3 additions & 2 deletions upload.py
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,7 @@
from src.trackers.UTP import UTP
from src.trackers.ULCX import ULCX
from src.trackers.AL import AL
from src.trackers.PSS import PSS
import json
from pathlib import Path
import asyncio
Expand Down Expand Up @@ -243,13 +244,13 @@ async def do_the_thing(base_dir):

# Upload to Trackers
common = COMMON(config=config)
api_trackers = ['BLU', 'AITHER', 'STC', 'R4E', 'RF', 'ACM', 'LCD', 'LST', 'HUNO', 'SN', 'LT', 'NBL', 'ANT', 'JPTV', 'OE', 'BHDTV', 'RTF', 'OTW', 'FNP', 'CBR', 'UTP', 'ULCX', 'AL', 'HDB']
api_trackers = ['BLU', 'AITHER', 'STC', 'R4E', 'RF', 'ACM', 'LCD', 'LST', 'HUNO', 'SN', 'LT', 'NBL', 'ANT', 'JPTV', 'OE', 'BHDTV', 'RTF', 'OTW', 'FNP', 'CBR', 'UTP', 'ULCX', 'AL', 'HDB', 'PSS']
http_trackers = ['TTG', 'FL', 'PTER', 'HDT', 'MTV']
tracker_class_map = {
'BLU' : BLU, 'BHD': BHD, 'AITHER' : AITHER, 'STC' : STC, 'R4E' : R4E, 'THR' : THR, 'HP' : HP, 'PTP' : PTP, 'RF' : RF,
'SN' : SN, 'ACM' : ACM, 'HDB' : HDB, 'LCD': LCD, 'TTG' : TTG, 'LST' : LST, 'HUNO': HUNO, 'FL' : FL, 'LT' : LT, 'NBL' : NBL,
'ANT' : ANT, 'PTER': PTER, 'JPTV' : JPTV, 'TL' : TL, 'HDT' : HDT, 'MTV': MTV, 'OE': OE, 'BHDTV': BHDTV, 'RTF': RTF,
'OTW': OTW, 'FNP': FNP, 'CBR': CBR, 'UTP': UTP, 'ULCX': ULCX, 'AL':AL}
'OTW': OTW, 'FNP': FNP, 'CBR': CBR, 'UTP': UTP, 'ULCX': ULCX, 'PSS':PSS, 'AL':AL}

for tracker in trackers:
if meta['name'].endswith('DUPE?'):
Expand Down

0 comments on commit f85b52e

Please sign in to comment.