- Update version number - Refactor cookie check to raise error when no cookies are found (required)
		
			
				
	
	
		
			60 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			60 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
import base64
 | 
						|
import hashlib
 | 
						|
import json
 | 
						|
import re
 | 
						|
from codecs import Codec
 | 
						|
from collections.abc import Generator
 | 
						|
from datetime import datetime, timedelta
 | 
						|
from http.cookiejar import CookieJar
 | 
						|
from typing import Optional, Union
 | 
						|
import click
 | 
						|
from langcodes import Language
 | 
						|
from unshackle.core.console import console
 | 
						|
from unshackle.core.constants import AnyTrack
 | 
						|
from unshackle.core.credential import Credential
 | 
						|
from unshackle.core.manifests import DASH
 | 
						|
from unshackle.core.search_result import SearchResult
 | 
						|
from unshackle.core.service import Service
 | 
						|
from unshackle.core.session import session
 | 
						|
from unshackle.core.titles import Episode, Movie, Movies, Series, Title_T, Titles_T
 | 
						|
from unshackle.core.tracks import Chapter, Subtitle, Tracks, Video, Chapters
 | 
						|
 | 
						|
class HMAX(Service):
 | 
						|
 | 
						|
    """
 | 
						|
    Service code for HBO Max
 | 
						|
    Author: TPD94
 | 
						|
    Version: 1.0.0
 | 
						|
    Authorization:
 | 
						|
    Security:
 | 
						|
    Use Series ID/URL (for example - ).
 | 
						|
    """
 | 
						|
 | 
						|
    @staticmethod
 | 
						|
    @click.command(name="HMAX", short_help="https://hbomax.com/",
 | 
						|
                   help="""
 | 
						|
                       Service code for HBO Max\n
 | 
						|
                       Author: TPD94\n
 | 
						|
                       Version: 1.0.0\n
 | 
						|
                       Authorization:\n
 | 
						|
                       Security:\n
 | 
						|
                       Use full URL (for example - ).
 | 
						|
                       """
 | 
						|
                   )
 | 
						|
    @click.argument("title", type=str)
 | 
						|
    @click.pass_context
 | 
						|
 | 
						|
    def cli(ctx, **kwargs):
 | 
						|
        return HMAX(ctx, **kwargs)
 | 
						|
 | 
						|
    def __init__(self, ctx, title):
 | 
						|
        super().__init__(ctx)
 | 
						|
 | 
						|
    def get_session(self):
 | 
						|
 | 
						|
        # Create a session using curl_cffi as it can impersonate browsers and avoid bot detection by HBO Max
 | 
						|
        return session("chrome124")
 | 
						|
 | 
						|
    def authenticate(self, cookies: Optional[CookieJar] = None, credential: Optional[Credential] = None) -> None:
 | 
						|
        super().authenticate(cookies, credential)
 |