
    i{              	       N   d dl Z d dlmZ d dlmZ d dlmZmZmZm	Z	 d dl
mZmZ d dlmZ d dlmZmZ d dlmZ d d	lmZ d
dlmZ  e       Z e       Zej4                  j7                  dd      Zej:                  j7                  dd      dk7  ZdedefdZ d Z!ddedededdfdZ"y)    N)Console)Prompt)
os_managerconfig_managertmdb_clientstart_message)site_constants	MediaItem)map_episode_title)process_season_selectionprocess_episode_download)HLS_Downloader)VideoSource   )GetSerieInfoM3U8_CONVERSION	extensionTMDBapi_key select_titlereturnc                 
   t                t        j                  dt        j                   d| j
                   d       d}t        rpt        j                  | j                  | j                  d| j                        }|r8|j                  d      r'|j                  d      dk(  rd|j                  d      i}t        t        j                   d| j                   d	| j                  |
      }||j!                  | j                         |j#                          |j%                         }|(t        j                  dt        j                   d       yt'        j(                  | j
                  | j                         dt*         }t,        j.                  j1                  t        j2                  |j5                  dt*         d            }t7        |t,        j.                  j1                  ||            j9                         S )zD
    Downloads a film using the provided MediaItem information.
    
[yellow]Download: [red]    → [cyan]z 
Nmovieidtype/F)	tmdb_dataz[red]Site: z!, error: No master playlist found.r   m3u8_urloutput_path)r   consoleprintr	   	SITE_NAMEnameuse_other_apir   get_type_and_id_by_slug_yearslugyearprovider_languagegetr   FULL_URLr   
get_iframeget_contentget_playlistr   get_sanitize_fileextension_outputospathjoinMOVIE_FOLDERreplacer   start)r   r    resultvideo_sourcemaster_playlistmp4_namemp4_paths          n/home/nidran/Documenti/script/streaming-community/StreamingCommunity/services/streamingcommunity/downloader.pydownload_filmrA   %   s    OMM-n.F.F-G{S_SdSdReehij I99,:K:K\M^M^`giu  jH  jH  Ifjj&6::f+=+Hvzz$/0I ."9"9!:!L<Z<Z;[\^ceqetet  AJ  KL 0"//1ON$<$<#==^_` ..|/@/@,BSBSTUUVWgVhiHww||N779I9IAN^M_J`bd9efH  GGLL84 eg    c                 T   t                t        j                  dt        j                   d|j
                   d| j                   d| d| d       t        |j
                  ||| j                         dt         }t        j                  j                  t        j                  |j
                  d|       }t        r|j
                  j                         j                  d	d
      j                  dd      }t!        j"                  t%        |      t'        |j(                        d|j*                        }|rL|j-                  d      r;|j-                  d      dk(  r'|j-                  d      }	|	|_        ||_        ||_        nLt        j                  d       |j5                  | j6                         n|j5                  | j6                         |j9                          |j;                         }
t=        |
t        j                  j                  ||            j?                         S )zA
    Downloads a specific episode from the specified season.
    r   r   z [white]\ [magenta]z	 ([cyan]SEz) 
r!   S -'r   tvr   r   zK[yellow]TMDB ID not found or not a TV show, falling back to original methodr"   ) r   r%   r&   r	   r'   series_namer(   r   r4   r5   r6   r7   SERIES_FOLDERr)   lowerr9   r   r*   strintr,   r-   r.   tmdb_idseason_numberepisode_numberr0   r   r1   r2   r   r:   )obj_episodeindex_season_selectedindex_episode_selectedscrape_serier<   r>   r?   series_slugr;   rO   r=   s              r@   download_episoderW   M   s$    OMM-n.F.F-G{S_SkSkRl  mA  BM  BR  BR  AS  S\  ]r  \s  st  uK  tL  LP  Q  R $L$<$<>SUkmxm}m}~  @A  BR  AS  THww||N88,:R:RVWXmWnTopH"..446>>sCHPPQTVXY99#k:JCP\PaPaLbdhjv  kI  kI  Jfjj&6::f+=+Ejj&G#*L )>L&*@L' MMgh##KNN3 	/"//1O  GGLL84 egrB   select_seasonseason_selectionepisode_selectionc                    t                t        t        j                   d| j                   d| j
                        t        t        j                   d| j                   | j
                  | j                  | j                  | j                        j                          t        j                        }d	dt        dt        dt        ffd}t        ||||       y)
aK  
    Handle downloading a complete series.

    Parameters:
        - select_season (MediaItem): Series metadata from search
        - season_selection (str, optional): Pre-defined season selection that bypasses manual input
        - episode_selection (str, optional): Pre-defined episode selection that bypasses manual input
    r   TNrP   download_allrZ   c                 2    fd}t        | |||       y)z:Callback to handle episode downloads for a specific seasonc                 "    t        | ||      S N)rW   )rR   
season_idxepisode_idxrU   r<   s      r@   download_video_callbackzSdownload_series.<locals>.download_episode_callback.<locals>.download_video_callback   s    #K[,XdeerB   )rS   rU   rb   r\   rZ   N)r   )rP   r\   rZ   rb   rU   r<   s       r@   download_episode_callbackz2download_series.<locals>.download_episode_callback   s"    	f 	!"/%$;%/	
rB   )rU   seasons_countrY   rZ   rc   r_   )r   r   r	   r/   r-   r   r   r+   r,   getNumberSeasonlenseasons_managerrN   boolrM   r   )rX   rY   rZ   rd   rc   rU   r<   s        @@r@   download_seriesri   t   s     O."9"9!:!M<[<[;\]_cereueuvL>#:#:";1]=\=\<] ^`m`p`pr  sE  sE  GT  GY  GY  [h  [z  [z  {L  "445M
 
D 
]` 
" !#)+";rB   )NN)#r5   rich.consoler   rich.promptr   StreamingCommunity.utilsr   r   r   r   !StreamingCommunity.services._baser	   r
   4StreamingCommunity.services._base.tv_display_managerr   5StreamingCommunity.services._base.tv_download_managerr   r   "StreamingCommunity.core.downloaderr   "StreamingCommunity.player.vixcloudr   scrapperr   r%   msgconfigr.   r4   loginr)   rM   rA   rW   ri    rB   r@   <module>rw      s    
 !  \ [ G R t > ; # )h!((,,->L $$((;rA%	 %c %P$N(9 ( (_b (nr (rB   