
    cf,                         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
 dZdZdZdZd	Zd
ZdZdZdZdZdZdZddZd Zd Zd ZdS )    N)urlparse   )corea<
  <!DOCTYPE html>
<html>
<head>
<meta charset="utf-8"/>
<title>%s</title>
<style type="text/css">
body {
        font-family: sans-serif;
        background: #191b22;
        font-size: 14px;
        line-height: 18px;
        font-weight: 400;
        color: #fff;
        text-rendering: optimizelegibility;
        -webkit-font-feature-settings: "kern";
        font-feature-settings: "kern";
        -webkit-text-size-adjust: none;
        -moz-text-size-adjust: none;
        -ms-text-size-adjust: none;
        text-size-adjust: none;
        -webkit-tap-highlight-color: transparent;
}
.column {
        background: #282c37;
        padding: 10px;
        margin: auto;
        max-width: 80ex;
}
h1 {
        color: #fff;
        font-size: 20px;
        line-height: 27px;
        font-weight: 500;
        overflow: hidden;
        text-overflow: ellipsis;
        text-align: center;
}
.account {
        text-align: center;
}
.account .nick {
        color: #2b90d9;
        margin-bottom: 10px;
}
.account .bio, .bio a, .bio a:visited {
        color: #d9e1e8;
}
.meta {
        color: #606984;
        font-size: 15px;
}
.meta strong {
        font-weight: 500;
}
a {
        text-decoration: none;
}
a:hover {
        text-decoration: underline;
}
.wrapper {
        padding-top: 10px;
        border-top: 1px solid #393f4f;
}
.boosted a {
        color: #606984;
}
.boosted a:visited {
        color: #606984;
}
.boosted {
        padding-bottom: 10px;
}
.meta a {
        color: #fff;
}
.meta a:visited {
        color: #fff;
}
.meta a.time {
        color: inherit;
}
.meta a.time:visited {
        color: inherit;
}
.meta .time {
        display: block;
        float: right;
}
.media {
        margin-top: 8px;
        margin-bottom: 8px;
        overflow: hidden;
}
.media a {
        display: block;
        float: left;
        position: relative;
        border: 1px solid #282c37;
        box-sizing: border-box;
        overflow: hidden;
}
.more a {
        max-width: 50%%;
        max-height: 50%%;
        display: block;
}
.media video, .media img {
        max-width: 100%%;
        height: auto;
}
nav a, .content a {
        color: #d9e1e8;
}
nav a:visited, .content a:visited {
        color: #d9e1e8;
}
nav {
        padding: 10px 0;
        border-top: 1px solid #393f4f;
        height: 1em;
}
footer nav {
        padding-bottom: 0;
        border-top: 1px solid #393f4f;
}
.invisible {
        display: none;
}
</style>
</head>
<body>
<div class="column">
<header>
<h1 class="name">%s</h1>
<div class="account">
<p class="nick">@%s</p>
<div class="bio">
%s
</div>
</div>
</header>
%sz+<footer>
%s<footer>
</div>
</body>
</html>
z<nav>
%s%s</nav>
z(<a class="previous" href="%s">Later</a>
z;<a class="next" style="float:right;" href="%s">Earlier</a>
zF<div class="boosted">
<a class="name" href="%s">%s</a> boosted
</div>
z<div class="status">
<div class="meta">
<strong class="name"><a href="%s">%s</a></strong>
<span class="nick">@%s</span>
<a class="time" href="%s">%s</a>
</div>
<div class="content">
%s
</div>
</div>
z<div class="media %s">
%s</div>z0<a href="%s"><img loading="lazy" src="%s"/></a>
zU<video controls preload="metadata" src="%s"><a href="%s"><img src="%s"/></a></video>
z]<video controls preload="none" src="%s" poster="%s"><a href="%s"><img src="%s"/></a></video>
z$<div class="wrapper">
%s%s%s
</div>
Tc                     |;t          |          j        }t          j                            | |z             r| |z   S |rdS d S )Na  data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADIAAAAyCAYAAAAeP4ixAAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH4QsUETQjvc7YnAAAACZpVFh0Q29tbWVudAAAAAAAQ3JlYXRlZCB3aXRoIEdJTVAgb24gYSBNYWOV5F9bAAADfElEQVRo3u1ZTUhUURg997sPy9TnDxk4IeqkmKghCKLBLNq2MCXQTXsXomFMIdK0EIoIskWLcNVKaFEulBIzxEgQLBRFXZmiaIOkboSe2Lv3tsg3+Hr96Mx7OhNzl/PuvHfPPd/5zvfdy5719Cj8B4Pwn4wkkCSQRAGilIIQ4q9zpJSQUrr6Xc2tF0kpQURgjGF2fh4zc3P4vLyMza0t27xzubkoKy1FoLYW532+yP/iBohhGHjR349P09M/qSaCUs7M/nVzE1vb23g/Po6zOTkItrcjPS0NnPOYvs9i9RGlFJ739eHj1BSI6EghY81va2nBxZKSmJiJidPvpon+wUHMzs1FwgsAGGN/3rkDz6z5T3t7sR4O/1NbnoUWA3AqJQXm/gKsHS7Iz0egrg7lZWXI1PUI6PmFBbwcGMDW9rbjXQ8eP8aznp4T1AhjICIIIVBVWYkbzc1IPX0apmnaQkXjHJXl5ai6dAmvBgbwbmzMwdSHiQlcrqmJSi+uiD0jPR3BtjZkZ2VFwkXTNMdCrQVer6/H6toaFpeWbJqamJxEoK7u+DVCRKiqqMD9UCgSQocRrJQSTQ0NNhBKKSyvrJyM2IkIvry8QwM4yM55ny++nD2alPm3rHbihnjUKiC8seEAl52VlVhFIxFhcGjIxiZjDDXV1VF7ybEz8t008SUcxsy+iR5k6drVq78ta+KOEdM0sbe3h4dPnjieNTU2QggRtX6OjREhBKSUCN69C8ZYZOeJCBeKinAlEIh/sVs7fbOz0waCc46c7Gzcam2N/w7RAtF2546ttOecI1PX0d3VFbUujg2IlBKcc7QGg7Zql3MOPSMD90MhKKVc8RVPgRARbodC4JzbQJxJTcWDe/dcA+GpRqSUeD08jG+GYauphBB41N3tWovrOSNEhDcjI46OsbOjw1Hixy0jUkqsh8OOEkTXdRTk5yfOuZZSCqtraw4gZSUliXVAp5TCzs6Oo5bK1PWY+vIT0Yhpmo6MpGmaK54RN9Vv4gPxoKHyViMAjN1dmx6EEDAMA17dKrHkjVWcDU9LlF9dnYhcd3TPnX1xacl2AEdEKPb7Uez3ewLGUyBvR0cj58La/imjv7AwcYBYYEwhbJlLKpUUezJrudGPaAeuBzTOQR46u+YViGK/39anW78lVPq1Fu0vLExsH/F60cmslQSSBHL08QPK53LVsfanXQAAAABJRU5ErkJggg==)r   pathosisfile)	media_dirurlunknown_image_urlr   s       c/home/feoh/.local/pipx/venvs/mastodon-archive/lib/python3.11/site-packages/mastodon_archive/html.pyfile_urlr      s\    
}}!7>>)d*++ 	$t## l l  ll l    c                    d}|d         (|d         }t           |d         |d         fz  }|d         }|d         }t          |d         |d         |d         |d         t          j                            |d                                       d          |d	         fz  }d}|d
         }t          |          dk    rcg }|D ])}	t          ||	d         d          }
|	d         dk    r|
rt          ||	d         d          }|
r|r|
|k    s|s5|                    t          |
t          ||	d                   |fz             |                    t          |
|t          ||	d                   |fz             |	d         dk    r4|                    t          |
t          ||	d                   fz             |                    t          |
t          ||	d                   fz             +t          t          |          dk    rdndd                    |          fz  }t          |||fz  }|                     |           d S )N reblogaccountr   display_nameusername
created_atz%Y-%m-%d %H:%Mcontentmedia_attachmentsr   Ftypevideopreview_url
remote_urlimager   moreone)boost_templatestatus_templatedateutilparserparsestrftimelenr   appendvideo_templatevideo_with_poster_templateimage_templatemedia_templatejoinwrapper_templatewrite)fpr
   statusboostuserinfomediaattachmentspreviews
attachmentsrcpreviewhtmls                r   write_statusr;      s   Eh#i K "" " !)DU^Zu< 	" 	""*( #" #"y D E,-K
;!% 	E 	EJ9j&7??C&!W,,, #9j.GOO 
"7 
"sg~~W~OON J|,DEE6! %! " " " "
 OO$> J|,DEE	B! %! " " " "
 F#w..Y
=(ABB2D !D E E E E
 Y
=(ABB2D !D E E E E k**Q..E!!"# # udE22DHHTNNNNNr   c                 J    | dz   |z   dz   |z   dz   t          |          z   dz   S )N.user..z.html)str)domainr   
collectionpages       r   	html_filerC   3  s?    X(3.!$T+-45 6r   c                 &   | j         }| j        }| j        }| j                            d          \  }}|dz   |z   dz   }|dz   |z   }d|z   }t          j        |d|| j                  }	|	d         }
|	|         }t          |          dk    rt          t          |          |          \  }}d}||k    r\|dk    rd	}nX|dk    rd	}nt          t          ||||d
z
            z  }||k     rt          t          ||||d
z             z  }nd	}t          ||fz  }t          ||||          }t          |dd          5 }| j        st          d|z             t           |
d         |
d         |
d         |
d         |fz  }|                    |           |t%          d||d
z
  z  |z             ||z  |z            D ]}t'          |||           |                    t(          |z             |d
z  }|}ddd           n# 1 swxY w Y   ||k    XdS dS dS )z6
    Convert toots and media files to static HTML
    @r=   z.jsonzhttps://T)requiredcombinequietr   r   r   r   wzutf-8)modeencodingz
Writing %sr   r   noteN)tootsrA   rG   r2   splitr   loadrH   r&   divmodprevious_templaterC   next_templatenav_templateopenprintheader_templater.   maxr;   footer_template)argstoots_per_pagerA   rG   r   r@   status_filer
   base_urldatar2   statusespagesoffsetrB   nav_htmlprevious_html	next_html	file_namer/   r:   r0   rM   s                          r   r:   r:   7  s   
 ZNJlG--Xv8#h.8K!H,IF"H9[4:' ' 'D	?DJH
8}}q X??u}}zzAII$&MM$5!&(JqII%KM 5LL -!&(JqII!KII !#I'=)*DD!&(JEEIi@@@ 'Bz 4,2333&(($L*   'A~:VCDD(4/&89: 8 8F !Y777783444	&7' ' ' ' ' ' ' ' ' ' ' ' ' ' '+ u}}}} 
 }s   :B5G;;G?G?)T)sysos.pathr   	html2textdatetimedateutil.parserr"   urllib.parser   r   r   rV   rX   rS   rQ   rR   r    r!   r+   r*   r(   r)   r-   r   r;   rC   r:    r   r   <module>rl      s  " 


           ! ! ! ! ! !      Pd 
  l l l l< < <|6 6 6H' H' H' H' H'r   