epstein-files 1.2.5__py3-none-any.whl → 1.4.1__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,11 +1,12 @@
1
1
  import json
2
2
  from os import unlink
3
+ from subprocess import CalledProcessError, check_output
3
4
  from typing import cast
4
5
 
5
6
  from rich.padding import Padding
6
7
 
7
8
  from epstein_files.documents.document import Document
8
- from epstein_files.documents.email import INTERESTING_TRUNCATION_LENGTHS, Email
9
+ from epstein_files.documents.email import Email
9
10
  from epstein_files.documents.messenger_log import MessengerLog
10
11
  from epstein_files.documents.other_file import FIRST_FEW_LINES, OtherFile
11
12
  from epstein_files.epstein_files import EpsteinFiles, count_by_month
@@ -42,7 +43,6 @@ DEFAULT_EMAILERS = [
42
43
  EHUD_BARAK,
43
44
  STEVE_BANNON,
44
45
  TYLER_SHEARS,
45
- JIDE_ZEITLIN,
46
46
  CHRISTINA_GALBRAITH,
47
47
  MOHAMED_WAHEED_HASSAN,
48
48
  JENNIFER_JACQUET,
@@ -53,31 +53,6 @@ DEFAULT_EMAILERS = [
53
53
  JEFFREY_EPSTEIN,
54
54
  ]
55
55
 
56
- INTERESTING_EMAIL_IDS = [
57
- '032229', # Michael Wolff on strategy
58
- '028784', # seminars: Money / Power
59
- '030630', # 'What happens with zubair's project?'
60
- '033178', # 'How is it going with Zubair?'
61
- '022396', # Ukraine friend
62
- '026505', # I know how dirty trump is
63
- '029679', # Trump's driver was the bag man
64
- '026258', '026260', # Bannon cripto coin issues
65
- '032359', # Jabor e-currency
66
- '031451', '031596', # "would you like photso of donald and girls in bikinis in my kitchen."
67
- '031601', # Old gf i gave to donald
68
- '030727', # David Stern "Death of chinese shareholder quite an issue. What can we do with Qataris here?"
69
- '030725', # David Stern in Moscow
70
- '029098', # Nowak, "her Skype contact is in moscow."
71
- '030714', # Bannon, Russian Dugan shout out
72
- '031659', # "i have met some very bad people „ none as bad as trump"
73
- ]
74
-
75
- for id in INTERESTING_TRUNCATION_LENGTHS:
76
- if id not in INTERESTING_EMAIL_IDS:
77
- logger.debug(f"Adding INTERESTING_TRUNCATION_LENGTHS ID {id} to INTERESTING_EMAIL_IDS")
78
- INTERESTING_EMAIL_IDS.append(id)
79
-
80
-
81
56
  INTERESTING_TEXT_IDS = [
82
57
  '027275', # "Crypto- Kerry- Qatar -sessions"
83
58
  '027165', # melaniee walker crypto health
@@ -111,8 +86,17 @@ def print_emailers_info(epstein_files: EpsteinFiles) -> None:
111
86
  svg_path = f"{EMAILERS_TABLE_PNG_PATH}.svg"
112
87
  console.save_svg(svg_path, theme=HTML_TERMINAL_THEME, title="Epstein Emailers")
113
88
  log_file_write(svg_path)
114
- import cairosvg
115
- cairosvg.svg2png(url=svg_path, write_to=str(EMAILERS_TABLE_PNG_PATH))
89
+
90
+ try:
91
+ # Inkscape is better at converting svg to png
92
+ inkscape_cmd_args = ['inkscape', f'--export-filename={EMAILERS_TABLE_PNG_PATH}', svg_path]
93
+ logger.warning(f"Running inkscape cmd: {' '.join(inkscape_cmd_args)}")
94
+ check_output(inkscape_cmd_args)
95
+ except (CalledProcessError, FileNotFoundError) as e:
96
+ logger.error(f"Failed to convert svg to png with inkscape, falling back to cairosvg: {e}")
97
+ import cairosvg
98
+ cairosvg.svg2png(url=svg_path, write_to=str(EMAILERS_TABLE_PNG_PATH))
99
+
116
100
  log_file_write(EMAILERS_TABLE_PNG_PATH)
117
101
  unlink(svg_path)
118
102
 
@@ -121,6 +105,7 @@ def print_emails_section(epstein_files: EpsteinFiles) -> list[Email]:
121
105
  """Returns emails that were printed (may contain dupes if printed for both author and recipient)."""
122
106
  print_section_header(('Selections from ' if not args.all_emails else '') + 'His Emails')
123
107
  all_emailers = sorted(epstein_files.emailers(), key=lambda person: person.earliest_email_at())
108
+ all_emails = Person.emails_from_people(all_emailers)
124
109
  num_emails_printed_since_last_color_key = 0
125
110
  printed_emails: list[Email] = []
126
111
  people_to_print: list[Person]
@@ -157,7 +142,8 @@ def print_emails_section(epstein_files: EpsteinFiles) -> list[Email]:
157
142
 
158
143
  # Print other interesting emails
159
144
  printed_email_ids = [email.file_id for email in printed_emails]
160
- extra_emails = [e for e in epstein_files.for_ids(INTERESTING_EMAIL_IDS) if e.file_id not in printed_email_ids]
145
+ extra_emails = [e for e in all_emails if e.is_interesting() and e.file_id not in printed_email_ids]
146
+ logger.warning(f"Found {len(extra_emails)} extra_emails...")
161
147
 
162
148
  if len(extra_emails) > 0:
163
149
  print_subtitle_panel(OTHER_INTERESTING_EMAILS_SUBTITLE)
@@ -308,7 +294,7 @@ def _verify_all_emails_were_printed(epstein_files: EpsteinFiles, already_printed
308
294
 
309
295
  for email in epstein_files.non_duplicate_emails():
310
296
  if email.file_id not in email_ids_that_were_printed:
311
- logger.warning(f"Failed to print {email.summary()}")
297
+ logger.error(f"Failed to print {email.summary()}")
312
298
  missed_an_email = True
313
299
 
314
300
  if not missed_an_email:
@@ -26,7 +26,7 @@ from epstein_files.util.logging import logger
26
26
 
27
27
  TITLE_WIDTH = 50
28
28
  SUBTITLE_WIDTH = 110
29
- NUM_COLOR_KEY_COLS = 4
29
+ NUM_COLOR_KEY_COLS = 6
30
30
  NA_TXT = Text(NA, style='dim')
31
31
  SUBTITLE_PADDING = (2, 0, 1, 0)
32
32
  GREY_NUMBERS = [58, 39, 39, 35, 30, 27, 23, 23, 19, 19, 15, 15, 15]
@@ -179,6 +179,7 @@ def print_title_page_header() -> None:
179
179
  site_type = EMAIL if (args.all_emails or args.email_timeline) else TEXT_MESSAGE
180
180
  title = f"This is the " + ('chronological ' if args.email_timeline else '') + f"Epstein {site_type.title()}s Page"
181
181
  print_starred_header(title, num_spaces=9 if args.all_emails else 6, num_stars=14)
182
+ #print_centered(f"This page contains all of the text messages and a curated selection of emails and other files.", style='gray74')
182
183
  print_centered(f"These documents come from the Nov. 2025 House Oversight Committee release.\n", style='gray74')
183
184
  other_site_msg = "another page with" + (' all of' if other_site_type() == EMAIL else '')
184
185
  other_site_msg += f" Epstein's {other_site_type()}s also generated by this code"
@@ -197,7 +197,7 @@ def write_word_counts_html() -> None:
197
197
  email_subjects: set[str] = set()
198
198
  word_count = WordCount()
199
199
  # Remove dupes, junk mail, and fwded articles from emails
200
- emails = [e for e in epstein_files.non_duplicate_emails() if not (e.is_mailing_list() or e.is_fwded_article())]
200
+ emails = [e for e in epstein_files.non_duplicate_emails() if e.is_word_count_worthy()]
201
201
 
202
202
  for email in emails:
203
203
  if args.names and email.author not in args.names:
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: epstein-files
3
- Version: 1.2.5
3
+ Version: 1.4.1
4
4
  Summary: Tools for working with the Jeffrey Epstein documents released in November 2025.
5
5
  Home-page: https://michelcrypt4d4mus.github.io/epstein_text_messages/
6
6
  License: GPL-3.0-or-later
@@ -63,9 +63,9 @@ All the tools that come with the package require `EPSTEIN_DOCS_DIR` to be set. T
63
63
  epstein_generate
64
64
 
65
65
  # Search for a string:
66
- epstein_search Bannon
66
+ epstein_grep Bannon
67
67
  # Or a regex:
68
- epstein_search '\bSteve\s*Bannon|Jeffrey\s*Epstein\b'
68
+ epstein_grep '\bSteve\s*Bannon|Jeffrey\s*Epstein\b'
69
69
 
70
70
  # Show a file with color highlighting of keywords:
71
71
  epstein_show 030999
@@ -0,0 +1,34 @@
1
+ epstein_files/__init__.py,sha256=VQnLS19hL3v9MON6S_09pD2aGIygGDjjVntUUVqjaNU,6836
2
+ epstein_files/documents/communication.py,sha256=QiCZ35R2ttlqcdovm5LBdGqgoj4xCcpl9ANqwlA9XGU,1752
3
+ epstein_files/documents/document.py,sha256=HR9B5cVZgevnZwEwCcLsIqKPq0_A1LgtL_bELAeF5jU,19938
4
+ epstein_files/documents/email.py,sha256=oyialVOKemU5SDVdoW740pAaMHCAbgBmGI_fZKxL60U,48365
5
+ epstein_files/documents/emails/email_header.py,sha256=1msEma11rAmqCIoAZvSNstdRPvhT0c-I422x44gnGpg,8153
6
+ epstein_files/documents/imessage/text_message.py,sha256=IexwwVeF14FZqD7IuK47bIHYam07ZcD3rxheVNULNkc,3394
7
+ epstein_files/documents/json_file.py,sha256=WcZW5NNqA67rHTdopbOGtup00muNaLlvrNgKb-K4zO8,1504
8
+ epstein_files/documents/messenger_log.py,sha256=1bv62WoQMKR3gYDrK9W3Xm7cqLbKrkRBV7NTFL2cexE,7349
9
+ epstein_files/documents/other_file.py,sha256=0abFRkwT-gcL90n8yvFwcP6Bt8ZrvHkXXWx6L0q7soU,9586
10
+ epstein_files/epstein_files.py,sha256=YLz0hIlbuFZcB0rgAJ5dfR7cAESMcYKFfncGp7fuF6A,14699
11
+ epstein_files/person.py,sha256=ag6J52UJgKSsKLev2aV-0TF2MpRoE-NvOIrBHUGHHCE,15819
12
+ epstein_files/util/constant/common_words.py,sha256=C1JERPnOGHV2UMC71aEue1i9QTQog-RfT3IzdcYQOYQ,3702
13
+ epstein_files/util/constant/html.py,sha256=MFooFV8KfFBCm9hL1u6A3hi_u37i7lL6UKAYoKQj3PI,1505
14
+ epstein_files/util/constant/names.py,sha256=YCyPiBGnwp9q7VGJUBnceROwZ-OhHtIOvHZN3q3bKp0,11582
15
+ epstein_files/util/constant/output_files.py,sha256=vxof85L-1GqSwss8XvLS3HZGguyWSzJkoJm1PrYYJ7g,2123
16
+ epstein_files/util/constant/strings.py,sha256=mjRMvUcBt4rJ18kauJ3PAe7fTmqhnfIWlrtcgDVShYw,2069
17
+ epstein_files/util/constant/urls.py,sha256=rFVU7824M1gAsmWLnAr-BBVOstlVwIsgyOlUWd1cdDk,6181
18
+ epstein_files/util/constants.py,sha256=MAs4dx4q29AYR0EocnQ_mbFpwt6oAqLgKiSmqHagFDE,137197
19
+ epstein_files/util/data.py,sha256=oZSrjzQSnXHtOlqxisodpH65cTGe57TfA3sZyQQzT7Q,3051
20
+ epstein_files/util/doc_cfg.py,sha256=d1qA4KzirY4hm89B-nMnTyupoZM_cy6pZmqFyLEv_t8,9370
21
+ epstein_files/util/env.py,sha256=A6LkZoMN-ocA89fjr53jKW4vT3jPdh4xmRY6ARoFWSk,7448
22
+ epstein_files/util/file_helper.py,sha256=icU2i2j547p2a8bdv1VaECX6ie-xUjZpoT0LAXwmnJQ,3140
23
+ epstein_files/util/highlighted_group.py,sha256=g9tiKnB31lQSoTVomh1QpYO71SFRr3wxmBSLnzt7TNc,63994
24
+ epstein_files/util/logging.py,sha256=pSLHGrUnPQGFMGYNIOTbZbCyy5dDOCbNrbNz22wIcZI,2099
25
+ epstein_files/util/output.py,sha256=JMBi3MxiwmbW0qvEqA2OGt3jkw1-O3QTIiinHs3twls,12666
26
+ epstein_files/util/rich.py,sha256=-0TfLLboj_3EQx2UEsah8pjcA2c5KYHxteyzzRwW1Xc,13874
27
+ epstein_files/util/search_result.py,sha256=1fxe0KPBQXBk4dLfu6m0QXIzYfZCzvaSkWqvghJGzxY,567
28
+ epstein_files/util/timer.py,sha256=GZHefXiPA-prK-1szC1cebl44Y-i4Wd3K8zedFpcggg,1373
29
+ epstein_files/util/word_count.py,sha256=VNEVVAV1UYZTMPX55p5IaXICV6PWv7bll_Fn9SUU4is,9201
30
+ epstein_files-1.4.1.dist-info/LICENSE,sha256=OXLcl0T2SZ8Pmy2_dmlvKuetivmyPd5m1q-Gyd-zaYY,35149
31
+ epstein_files-1.4.1.dist-info/METADATA,sha256=6r5ANKvheFwjyGLWYJ1HTe0RIZxJ6MDjkIO5gqmql80,6218
32
+ epstein_files-1.4.1.dist-info/WHEEL,sha256=d2fvjOD7sXsVzChCqf0Ty0JbHKBaLYwDbGQDwQTnJ50,88
33
+ epstein_files-1.4.1.dist-info/entry_points.txt,sha256=hyNFwhAw8zyGlBOxFu9beFGqfK3l8hOJvCK1DjUw1rA,236
34
+ epstein_files-1.4.1.dist-info/RECORD,,
@@ -1,7 +1,7 @@
1
1
  [console_scripts]
2
2
  epstein_diff=epstein_files:epstein_diff
3
3
  epstein_generate=epstein_files:generate_html
4
- epstein_search=epstein_files:epstein_search
4
+ epstein_grep=epstein_files:epstein_grep
5
5
  epstein_show=epstein_files:epstein_show
6
6
  epstein_word_count=epstein_files:epstein_word_count
7
7
 
@@ -1,34 +0,0 @@
1
- epstein_files/__init__.py,sha256=_7YTeRPEpqnY7XBBGvjLpk-G287D1NrYjldTinsKeoI,5899
2
- epstein_files/documents/communication.py,sha256=QiCZ35R2ttlqcdovm5LBdGqgoj4xCcpl9ANqwlA9XGU,1752
3
- epstein_files/documents/document.py,sha256=cJxL0UF8mtUvkUx1YGa62J24336DULVKLv1j6_d39Gg,19668
4
- epstein_files/documents/email.py,sha256=ZylzikpeuiwhZsWVnfaYlO8llMjIfvAS2hQuuQELl6g,42343
5
- epstein_files/documents/emails/email_header.py,sha256=3UD2pXMS9bRsFP4L5RSP2tSjI8OR6lq6gPKKao0DYLY,7739
6
- epstein_files/documents/imessage/text_message.py,sha256=IexwwVeF14FZqD7IuK47bIHYam07ZcD3rxheVNULNkc,3394
7
- epstein_files/documents/json_file.py,sha256=WcZW5NNqA67rHTdopbOGtup00muNaLlvrNgKb-K4zO8,1504
8
- epstein_files/documents/messenger_log.py,sha256=1bv62WoQMKR3gYDrK9W3Xm7cqLbKrkRBV7NTFL2cexE,7349
9
- epstein_files/documents/other_file.py,sha256=xZSILlnYlX2QIYCQCm6WNHvNqhF5do6AmxT7qxw-yog,9417
10
- epstein_files/epstein_files.py,sha256=fHa50Xdxgc2Vw7YgcgS3vAjTqDp1L5yPWOWQ3sb4RlM,14021
11
- epstein_files/person.py,sha256=lrBPCg1LFfd8koytEL0AOb8CcFKmJjLV9kAFqzGHHdU,14700
12
- epstein_files/util/constant/common_words.py,sha256=C1JERPnOGHV2UMC71aEue1i9QTQog-RfT3IzdcYQOYQ,3702
13
- epstein_files/util/constant/html.py,sha256=MFooFV8KfFBCm9hL1u6A3hi_u37i7lL6UKAYoKQj3PI,1505
14
- epstein_files/util/constant/names.py,sha256=exsR_dtwVEANYFJSU1wk50hiqzAtfc8zQbaKKwgX42A,11408
15
- epstein_files/util/constant/output_files.py,sha256=vxof85L-1GqSwss8XvLS3HZGguyWSzJkoJm1PrYYJ7g,2123
16
- epstein_files/util/constant/strings.py,sha256=jh_ou1VoA-6T1ej9l7CFfETEOCuSCectqqK7ppBQz2I,2030
17
- epstein_files/util/constant/urls.py,sha256=rFVU7824M1gAsmWLnAr-BBVOstlVwIsgyOlUWd1cdDk,6181
18
- epstein_files/util/constants.py,sha256=ANm_qMYK-dpgg02W9i9PUYiOI2fqr_5aoa50AHOOKIo,123568
19
- epstein_files/util/data.py,sha256=oZSrjzQSnXHtOlqxisodpH65cTGe57TfA3sZyQQzT7Q,3051
20
- epstein_files/util/doc_cfg.py,sha256=gIBAoeheQYqqrCtVRU2ytYu799LyCiPxPyHDgWUad3c,9471
21
- epstein_files/util/env.py,sha256=506dRXdetaKAHZ8vIacxA5x2Cv-IGBNYS8A0NQfMdUM,6961
22
- epstein_files/util/file_helper.py,sha256=MpG1hI7DGs05fV9KSVb_ltc98DC8tv1E_TTo5X_E7Js,3010
23
- epstein_files/util/highlighted_group.py,sha256=6EwCRVysWRzQOYu12ZKvVapKHTveSmnF-5bCZTsJtHk,62411
24
- epstein_files/util/logging.py,sha256=pSLHGrUnPQGFMGYNIOTbZbCyy5dDOCbNrbNz22wIcZI,2099
25
- epstein_files/util/output.py,sha256=ZNkx6iSJhaaeE3WkG3SDjgATL6pGkJpqzOCov7hZQW8,13221
26
- epstein_files/util/rich.py,sha256=pp_rIfy8rrxDONvpcizQ6r-x3oeJXEqgCgaA3FNDIHI,13739
27
- epstein_files/util/search_result.py,sha256=1fxe0KPBQXBk4dLfu6m0QXIzYfZCzvaSkWqvghJGzxY,567
28
- epstein_files/util/timer.py,sha256=GZHefXiPA-prK-1szC1cebl44Y-i4Wd3K8zedFpcggg,1373
29
- epstein_files/util/word_count.py,sha256=Ab0KSBv5oaee40h9MpGIlMNWRH4nAWDcMAq4A1TdpvA,9226
30
- epstein_files-1.2.5.dist-info/LICENSE,sha256=OXLcl0T2SZ8Pmy2_dmlvKuetivmyPd5m1q-Gyd-zaYY,35149
31
- epstein_files-1.2.5.dist-info/METADATA,sha256=9cKpM9bg6-9MbKQ-EcX_S4oPBfS1a01FADl_2LbRvec,6222
32
- epstein_files-1.2.5.dist-info/WHEEL,sha256=d2fvjOD7sXsVzChCqf0Ty0JbHKBaLYwDbGQDwQTnJ50,88
33
- epstein_files-1.2.5.dist-info/entry_points.txt,sha256=5qYgwAXpxegeAicD_rzda_trDRnUC51F5UVDpcZ7j6Q,240
34
- epstein_files-1.2.5.dist-info/RECORD,,