
    iq                     4   d dl Z d dlZd dlZd dlZd dlZd dlmZ ddlm	Z
mZmZ d dlmZ d dlmZ d dlmZ d dlmZ  e       r'e j*                  j-                  ej.                  d	      Zne j*                  j3                  e      Z e       Zd
 Zd Zd Zd Zy)    N)Console   )__version__
__author__	__title__)config_manager)get_userAgent)get_is_binary_installation)binary_pathsStreamingCommunityc                      t        j                  dt         dt         ddt	               it
        j                  j                  dd      d      } | j                         S )	z*Fetch releases data from GitHub API (sync)zhttps://api.github.com/repos//z	/releases
user-agentREQUESTStimeoutTheadersr   follow_redirects)	httpxgetr   r   r	   r   configget_intjson)responses    U/home/nidran/Documenti/script/streaming-community/StreamingCommunity/upload/update.pyfetch_github_releasesr      sS    yy
'
|1YKyI}/%%--j)D	H ==?    c                      t               ry	 t        j                  j                  t              } t        d | D              ry	 y# t        j                  j                  $ r Y yw xY w)z)Get the execution mode of the application	installerc              3   6   K   | ]  }d t        |      v   yw)zsite-packagesN)str).0paths     r   	<genexpr>z%get_execution_mode.<locals>.<genexpr>0   s     I#d)+Is   pipsource_code)r
   	importlibmetadatafilesr   anyPackageNotFoundError)package_locations    r   get_execution_moder-   )   sg    !#$--33I>I8HII J
  22 s   5A A%$A%c                     t               st        j                  d       y	 t        j                  d       t               } | d   }|j	                  dd      j                  dd      j                  dd      }	 t        j                  j                  t              }t        |      j                  dd      j                  dd      }||k(  rt        j                  d	|        yt        j                  d
| d|j	                  d              t        j                         }dddd}|j	                  |d      }d}|j	                  dg       D ]  }	||	d   j                         v s|	} n t        j                  d|d    d       t!        j                  |d   dt#               idd      }
|
j$                  dk7  rt        j                  d       yt&        j(                  }|dz   }t+        |d      5 }|j-                  |
j.                         ddd       t        j                  d       |dk(  r|dz   }t+        |d       5 }|j-                  d!       |j-                  d"       |j-                  d#| d$| d%       |j-                  d&| d%       |j-                  d'       ddd       t1        j2                  |       nt1        j4                  |t6        j8                  t6        j:                  z  t6        j<                  z         |d(z   }t+        |d       5 }|j-                  d)       |j-                  d*       |j-                  d+| d$| d%       |j-                  d,| d%       |j-                  d-| d.       |j-                  d/| d%       ddd       t1        j4                  |t6        j8                         t1        j>                  d0| d1       t        j                  d2       t'        j@                  d       y# t        $ r
 t        }Y {w xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# t        $ r"}t        j                  d3|        Y d}~yd}~ww xY w)4z1Automatically update the binary to latest versionz4[red]Auto-update works only for binary installationsFz[cyan]Checking for updates...r   name v.z"[green]Already on latest version: z[yellow]Current: u    → Latest: z.exelinuxmacos)windowsr3   darwinNassetsz[cyan]Downloading z...browser_download_urlr   i,  Tr      z[red]Download failedz.newwbz[green]Download completed!r5   z.batwz
@echo off
ztimeout /t 2 /nobreak >nul
z	move /y "z" "z"
z
start "" "zdel "%~f0"
z.shz#!/bin/bash
zsleep 2
zmv "z
chmod +x ""z" &
zrm "znohup "z" &z[cyan]Restarting...z[red]Update failed: )!r
   consoleprintr   r   replacer'   r(   versionr   	Exceptionsource_code_versionr!   r   _detect_systemlowerr   r	   status_codesys
executableopenwritecontentos	startfilechmodstatS_IRWXUS_IRGRPS_IXGRPsystemexit)releaseslatestlatest_versioncurrentcurrent_versionrR   patternspatternassetar   current_exenew_exefscriptes                   r   auto_updaterb   8   s   %'LMM56(*!FB/77R@HHbQ	*((00;G g,..sB7??RH n,MM>wiHI)'-

6@R?STU ,,.%7K,,vr*Hb) 	A!F)//++	 	*5=/=> 99U#9:\S`SbDcmp  DH  I3&MM01 nn&'4  	&AGGH$$%	&23 Y 6)Ffc" (a&67)G9C}C@A*[M56'( LL  HHWdllT\\9DLLHI 5(Ffc" ,a($$wis;-s;<*[M56!K=./$vhc*+, HHVT\\*IIxs+,+,A  	*)G	*@	& 	&( (, ,  ,QC01s   AQ 9#P AQ %BQ (A+Q !Q 5P3Q A!P(%A6Q A:P5A/Q PQ PQ P% Q (P2-Q 5P>:Q 	Q,
Q''Q,c                  ~   	 t               } t	        d | D              }| r| d   j                  dd      }nd}	 t        j                  j                  t              }t        j                  dt         d| d	t                d
t        j                          d| d       t        |      j!                         j#                  dd      j#                  dd      t        |      j!                         j#                  dd      j#                  dd      k7  rTt        j                  d|        t        j                  d|        t               dk(  rt        j                  d       yyy# t        $ r"}t        j                  d|        Y d}~yd}~ww xY w# t        j                  j                  $ r
 t        }Y _w xY w)z=Check for updates on GitHub and display relevant information.z![red]Error accessing GitHub API: Nc              3   T   K   | ]   }|j                  d g       D ]	  }|d     " yw)r7   download_countN)r   )r"   releaser[   s      r   r$   zupdate.<locals>.<genexpr>   s>      [[2.  	s   &(r   r/   Unknownz
[red]z has been downloaded: [yellow]z	
[yellow]z [white]- [red]z4 [white]- [green]Current installed version: [yellow]a   
  [cyan]Help the repository grow today by leaving a [yellow]star [cyan]and [yellow]sharing [cyan]it with others online!
      [magenta]If you'd like to support development and keep the program updated, consider leaving a [yellow]donation[magenta]. Thank you!zv.r0   r1   z%
[red]New version available: [yellow]z][green]Download it from: [yellow]https://github.com/Arrowar/StreamingCommunity/releases/tag/vr   z/[cyan]Run with [yellow]-UP [cyan]to auto-update)r   rA   r=   r>   sumr   r'   r(   r@   r   r+   rB   r-   r   rC   r!   rD   r?   )response_releasesra   total_download_countlast_versionrX   s        r   updaterl      s   13  (  (+//	B .#,,44Y? MM
):;O:P
')*/,:U:U:W9X  YM  N]  M^ ^0	1 ?!!#++D"5==c2F#lJ[JaJaJcJkJklprtJuJ}J}  B  DF  KG  G>|nMNu  wC  vD  E  	F;.MMKL /	 GC  9!=>( 22 .-.s(   
E' #F '	F0FF#F<;F<) rK   rF   rN   importlib.metadatar'   r   rich.consoler   r@   r   rB   r   r   StreamingCommunity.utilsr   $StreamingCommunity.utils.http_clientr	   StreamingCommunity.setupr
   %StreamingCommunity.setup.binary_pathsr   r#   join_MEIPASS	base_pathdirname__file__r=   r   r-   rb   rl    r   r   <module>ry      s    
 
      O N 3 > ? > S\\+?@I)I
)Sl*Mr   