Skip to content

Commit

Permalink
Simple API Guest Auth
Browse files Browse the repository at this point in the history
Example Script with API usage:

#start.py
import apis.onlyfans.onlyfans as OnlyFans
api = OnlyFans.start()
authed = api.add_auth()
authed.login(guest=True)

model = authed.get_user("onlyfans")

print(model)
  • Loading branch information
UltimaHoarder committed May 16, 2021
1 parent aa8e7cf commit 7276b1e
Show file tree
Hide file tree
Showing 4 changed files with 26 additions and 14 deletions.
11 changes: 7 additions & 4 deletions apis/api_helper.py
Original file line number Diff line number Diff line change
Expand Up @@ -47,8 +47,8 @@ def multiprocessing(max_threads=None):


class session_manager():
def __init__(self, original_sessions=[], headers: dict = {}, session_rules=None, session_retry_rules=None,max_threads=-1) -> None:
self.sessions = self.copy_sessions(original_sessions)
def __init__(self, original_sessions=[], headers: dict = {}, session_rules=None, session_retry_rules=None, max_threads=-1) -> None:
self.sessions = self.add_sessions(original_sessions)
self.pool = multiprocessing(max_threads)
self.max_threads = max_threads
self.kill = False
Expand All @@ -59,8 +59,11 @@ def __init__(self, original_sessions=[], headers: dict = {}, session_rules=None,
dynamic_rules = requests.get(dr_link).json()
self.dynamic_rules = dynamic_rules

def copy_sessions(self, original_sessions):
sessions = []
def add_sessions(self, original_sessions: list, overwrite_old_sessions=True):
if overwrite_old_sessions:
sessions = []
else:
sessions = self.sessions
for original_session in original_sessions:
cloned_session = copy.deepcopy(original_session)
ip = getattr(original_session, "ip", "")
Expand Down
21 changes: 15 additions & 6 deletions apis/onlyfans/onlyfans.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import time
import base64
from typing import Optional, Union
from typing import List, Optional, Union
from urllib.parse import urlparse
from urllib import parse
import hashlib
Expand Down Expand Up @@ -474,7 +474,7 @@ def set_scraped(self, name, scraped: media_types):


class start():
def __init__(self, custom_request=callable, max_threads=-1) -> None:
def __init__(self, custom_request=callable, max_threads=-1, original_sessions: List[requests.Session] = []) -> None:
self.auths: list[create_auth] = []
self.subscriptions: list[create_subscription] = []
self.custom_request = custom_request
Expand All @@ -483,10 +483,10 @@ def __init__(self, custom_request=callable, max_threads=-1) -> None:
self.links = links
self.pool = api_helper.multiprocessing()
self.session_manager = api_helper.session_manager(
session_rules=session_rules, session_retry_rules=session_retry_rules, max_threads=max_threads)
session_rules=session_rules, session_retry_rules=session_retry_rules, max_threads=max_threads, original_sessions=original_sessions)
self.settings = {}

def set_auth_details(self, option={}, only_active=False):
def add_auth(self, option={}, only_active=False):
if only_active and not option.get("active"):
return
auth = create_auth(session_manager2=self.session_manager,
Expand All @@ -503,10 +503,11 @@ def close_pools(self):
class create_auth():
def __init__(self, session_manager2: api_helper.session_manager, option={}, init=False, pool=None, ) -> None:
self.id = option.get("id")
self.username = option.get("username")
self.username: str = option.get("username")
if not self.username:
self.username = f"u{self.id}"
self.name = option.get("name")
self.email: str = option.get("email")
self.lists = {}
self.links = content_types()
self.isPerformer: bool = option.get("isPerformer")
Expand All @@ -516,7 +517,7 @@ def __init__(self, session_manager2: api_helper.session_manager, option={}, init
self.chats = None
self.archived_stories = {}
self.mass_messages = []
self.paid_content = {}
self.paid_content = []
session_manager2 = copy.copy(session_manager2)
self.session_manager = session_manager2
self.pool = pool
Expand Down Expand Up @@ -575,6 +576,8 @@ def login(self, full=False, max_attempts=10, guest=False):
dynamic_rules = self.session_manager.dynamic_rules
a = [dynamic_rules, auth_id, user_agent, x_bc, auth_items.sess, link]
self.session_manager.headers = create_headers(*a)
if not self.session_manager.sessions:
self.session_manager.add_sessions([requests.Session()])
if guest:
print("Guest Authentication")
return self
Expand Down Expand Up @@ -875,3 +878,9 @@ def get_paid_content(self, check: bool = False, refresh: bool = True, limit: int
results.extend(results2)
self.paid_content = results
return results

def buy_subscription(self, user: dict):
user_id = user.get("id")
amount = user.get("amount")
x = {"paymentType": "subscribe", "userId": user_id, "subscribeSource": "profile",
"amount": amount, "token": "", "unavailablePaymentGates": []}
4 changes: 2 additions & 2 deletions apis/starsavn/starsavn.py
Original file line number Diff line number Diff line change
Expand Up @@ -452,7 +452,7 @@ def set_scraped(self, name, scraped: media_types):

class start():
def __init__(self, sessions=[], custom_request=callable) -> None:
sessions = api_helper.copy_sessions(sessions)
sessions = api_helper.add_sessions(sessions)
self.sessions = sessions
self.auth = create_auth(init=True)
self.custom_request = custom_request
Expand Down Expand Up @@ -480,7 +480,7 @@ def __init__(self, sessions=[], custom_request=callable) -> None:
# print("Could not authenticate")
# return result

def set_auth_details(self, option):
def add_auth(self, option):
if not option["active"]:
return
self.auth.auth_details.username = option["username"]
Expand Down
4 changes: 2 additions & 2 deletions helpers/main_helper.py
Original file line number Diff line number Diff line change
Expand Up @@ -603,9 +603,9 @@ def process_profiles(json_settings, original_sessions, site_name, api: Union[Onl
if not json_auth.get("active", None):
continue
json_auth["username"] = user
auth = api.set_auth_details(
auth = api.add_auth(
json_auth)
auth.session_manager.copy_sessions(original_sessions)
auth.session_manager.add_sessions(original_sessions)
auth.profile_directory = user_profile
datas["auth"] = auth.auth_details.__dict__
if datas:
Expand Down

0 comments on commit 7276b1e

Please sign in to comment.