epstein-files 1.0.12__py3-none-any.whl → 1.0.14__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.
@@ -13,11 +13,12 @@ ARCHIVE_LINK_COLOR = 'slate_blue3'
13
13
  TEXT_LINK = 'text_link'
14
14
 
15
15
  # External site names
16
- ExternalSite = Literal['epstein.media', 'epsteinify', 'EpsteinWeb']
16
+ ExternalSite = Literal['epstein.media', 'epsteinify', 'EpsteinWeb', 'RollCall']
17
17
  EPSTEIN_MEDIA = 'epstein.media'
18
18
  EPSTEIN_WEB = 'EpsteinWeb'
19
19
  EPSTEINIFY = 'epsteinify'
20
20
  JMAIL = 'Jmail'
21
+ ROLLCALL = 'RollCall'
21
22
 
22
23
  GH_PROJECT_URL = 'https://github.com/michelcrypt4d4mus/epstein_text_messages'
23
24
  GH_MASTER_URL = f"{GH_PROJECT_URL}/blob/master"
@@ -41,9 +42,10 @@ EPSTEIN_WEB_URL = 'https://epsteinweb.org'
41
42
  JMAIL_URL = 'https://jmail.world'
42
43
 
43
44
  DOC_LINK_BASE_URLS: dict[ExternalSite, str] = {
44
- EPSTEIN_MEDIA: f"{EPSTEIN_MEDIA_URL}/files",
45
- EPSTEIN_WEB: f'{EPSTEIN_WEB_URL}/wp-content/uploads/epstein_evidence/images',
46
- EPSTEINIFY: f"{EPSTEINIFY_URL}/document",
45
+ EPSTEIN_MEDIA: f"{EPSTEIN_MEDIA_URL}/files/",
46
+ EPSTEIN_WEB: f'{EPSTEIN_WEB_URL}/wp-content/uploads/epstein_evidence/images/',
47
+ EPSTEINIFY: f"{EPSTEINIFY_URL}/document/",
48
+ ROLLCALL: f'https://rollcall.com/factbase/epstein/file?id=',
47
49
  }
48
50
 
49
51
 
@@ -53,7 +55,7 @@ epsteinify_doc_link_txt = lambda filename_or_id, style = TEXT_LINK: Text.from_ma
53
55
  epsteinify_doc_url = lambda file_stem: build_doc_url(DOC_LINK_BASE_URLS[EPSTEINIFY], file_stem)
54
56
  epsteinify_name_url = lambda name: f"{EPSTEINIFY_URL}/?name={urllib.parse.quote(name)}"
55
57
 
56
- epstein_media_doc_url = lambda file_stem: build_doc_url(DOC_LINK_BASE_URLS[EPSTEIN_MEDIA], file_stem, True)
58
+ epstein_media_doc_url = lambda file_stem: build_doc_url(DOC_LINK_BASE_URLS[EPSTEIN_MEDIA], file_stem, 'lower')
57
59
  epstein_media_doc_link_markup = lambda filename_or_id, style = TEXT_LINK: external_doc_link_markup(EPSTEIN_MEDIA, filename_or_id, style)
58
60
  epstein_media_doc_link_txt = lambda filename_or_id, style = TEXT_LINK: Text.from_markup(epstein_media_doc_link_markup(filename_or_id, style))
59
61
  epstein_media_person_url = lambda person: f"{EPSTEIN_MEDIA_URL}/people/{parameterize(person)}"
@@ -62,16 +64,19 @@ epstein_web_doc_url = lambda file_stem: f"{DOC_LINK_BASE_URLS[EPSTEIN_WEB]}/{fil
62
64
  epstein_web_person_url = lambda person: f"{EPSTEIN_WEB_URL}/{parameterize(person)}"
63
65
  epstein_web_search_url = lambda s: f"{EPSTEIN_WEB_URL}/?ewmfileq={urllib.parse.quote(s)}&ewmfilepp=20"
64
66
 
67
+ rollcall_doc_url = lambda file_stem: build_doc_url(DOC_LINK_BASE_URLS[ROLLCALL], file_stem, 'title')
68
+
65
69
  search_archive_url = lambda txt: f"{COURIER_NEWSROOM_ARCHIVE_URL}&q={urllib.parse.quote(txt)}&p=1"
66
70
  search_coffeezilla_url = lambda txt: f"{COFFEEZILLA_ARCHIVE_URL}&q={urllib.parse.quote(txt)}&p=1"
67
71
  search_jmail_url = lambda txt: f"{JMAIL_URL}/search?q={urllib.parse.quote(txt)}"
68
72
  search_twitter_url = lambda txt: f"https://x.com/search?q={urllib.parse.quote(txt)}&src=typed_query&f=live"
69
73
 
70
74
 
71
- def build_doc_url(base_url: str, filename_or_id: int | str, lowercase: bool = False) -> str:
75
+ def build_doc_url(base_url: str, filename_or_id: int | str, case: Literal['lower', 'title'] | None = None) -> str:
72
76
  file_stem = coerce_file_stem(filename_or_id)
73
- file_stem = file_stem.lower() if lowercase else file_stem
74
- return f"{base_url}/{file_stem}"
77
+ file_stem = file_stem.lower() if case == 'lower' else file_stem
78
+ file_stem = file_stem.title() if case == 'title' else file_stem
79
+ return f"{base_url}{file_stem}"
75
80
 
76
81
 
77
82
  def external_doc_link_markup(site: ExternalSite, filename_or_id: int | str, style: str = TEXT_LINK) -> str:
@@ -45,9 +45,9 @@ HEADER_ABBREVIATIONS = {
45
45
  }
46
46
 
47
47
 
48
- #######################
49
- # Emails Config Stuff #
50
- #######################
48
+ #########################
49
+ # Emailers Config Stuff #
50
+ #########################
51
51
 
52
52
  # Emailers
53
53
  EMAILER_ID_REGEXES: dict[str, re.Pattern] = {
@@ -65,7 +65,7 @@ EMAILER_ID_REGEXES: dict[str, re.Pattern] = {
65
65
  BORIS_NIKOLIC: re.compile(r'(boris )?nikolic?', re.IGNORECASE),
66
66
  BRAD_EDWARDS: re.compile(r'Brad(ley)?(\s*J(.?|ames))?\s*Edwards', re.IGNORECASE),
67
67
  BRAD_KARP: re.compile(r'Brad (S.? )?Karp|Karp, Brad', re.IGNORECASE),
68
- 'Dangene and Jennie Enterprise': re.compile(r'Dangene and Jennie Enterprise?', re.IGNORECASE),
68
+ DANGENE_AND_JENNIE_ENTERPRISE: re.compile(r'Dangene and Jennie Enterprise?', re.IGNORECASE),
69
69
  DANNY_FROST: re.compile(r'Frost, Danny|frostd@dany.nyc.gov|Danny\s*Frost', re.IGNORECASE),
70
70
  DARREN_INDYKE: re.compile(r'darren$|Darren\s*(K\.?\s*)?[il]n[dq]_?yke?|dkiesq', re.IGNORECASE),
71
71
  DAVID_FISZEL: re.compile(r'David\s*Fis?zel', re.IGNORECASE),
@@ -85,7 +85,7 @@ EMAILER_ID_REGEXES: dict[str, re.Pattern] = {
85
85
  JAMES_HILL: re.compile(r"hill, james e.|james.e.hill@abc.com", re.IGNORECASE),
86
86
  JEAN_LUC_BRUNEL: re.compile(r'Jean[- ]Luc Brunel?', re.IGNORECASE),
87
87
  JEFF_FULLER: re.compile(r"jeff@mc2mm.com|Jeff Fuller", re.IGNORECASE),
88
- JEFFREY_EPSTEIN: re.compile(r'[djl]\s?ee[vy]acation[©@]?g?(mail.com)?|Epstine|\bJEE?\b|Jeffrey E((sp|ps)tein?)?|jeeproject@yahoo.com|J Jep|Jeffery Edwards|(?<!(Mark L.|ard Jay) )Epstein', re.IGNORECASE),
88
+ JEFFREY_EPSTEIN: re.compile(r'[djl]\s?ee[vy]acation[©@]?g?(mail.com)?|Epstine|\bJEE?\b|Jeffrey E((sp|ps)tein?)?( VI Foundation)?|jeeproject@yahoo.com|J Jep|Jeffery Edwards|(?<!(Mark L.|ard Jay) )Epstein', re.IGNORECASE),
89
89
  JESSICA_CADWELL: re.compile(r'Jessica Cadwell?', re.IGNORECASE),
90
90
  JOHNNY_EL_HACHEM: re.compile(r'el hachem johnny|johnny el hachem', re.IGNORECASE),
91
91
  JOI_ITO: re.compile(r'ji@media.mit.?edu|(joichi|joi)( Ito)?', re.IGNORECASE),
@@ -220,7 +220,6 @@ RESUME_OF = 'professional resumé'
220
220
  SCREENSHOT = 'screenshot of'
221
221
  TRANSLATION = 'translation of'
222
222
  TWEET = 'tweet'
223
- TEXT_OF_US_LAW = 'text of U.S. law:'
224
223
 
225
224
  # Legal cases
226
225
  BRUNEL_V_EPSTEIN = f"{JEAN_LUC_BRUNEL} v. {JEFFREY_EPSTEIN} and Tyler McDonald d/b/a YI.org"
@@ -239,7 +238,6 @@ BOFA_MERRILL = f'{BOFA} / Merrill Lynch Report'
239
238
  BOFA_WEALTH_MGMT = f'{BOFA} Wealth Management'
240
239
  BROCKMAN_INC = 'Brockman, Inc.'
241
240
  CVRA = "Crime Victims' Rights Act [CVRA]"
242
- CVRA_LEXIS_SEARCH = f"Lexis Nexis search for case law around the {CVRA}"
243
241
  DAVID_BLAINE_VISA_LETTER = f"letter of recommendation for visa for a model"
244
242
  DERSH_GIUFFRE_TWEET = f"{TWEET} about {VIRGINIA_GIUFFRE}"
245
243
  DEUTSCHE_BANK_TAX_TOPICS = f'{DEUTSCHE_BANK} Wealth Management Tax Topics'
@@ -253,15 +251,16 @@ HARVARD_POETRY = f'{HARVARD} poetry stuff from {LISA_NEW}'
253
251
  HBS_APPLICATION = f"{HARVARD} Business School application letter"
254
252
  JASTA = 'JASTA'
255
253
  JASTA_SAUDI_LAWSUIT = f"{JASTA} lawsuit against Saudi Arabia by 9/11 victims"
256
- JOHN_BOLTON_PRESS_CLIPPING = 'John Bolton press clipping'
257
254
  JP_MORGAN_EYE_ON_THE_MARKET = f"Eye On The Market"
258
255
  LAWRENCE_KRAUSS_ASU_ORIGINS = f"{LAWRENCE_KRAUSS}'s ASU Origins Project"
256
+ LEXIS_NEXIS_CVRA_SEARCH = f"{LEXIS_NEXIS} search for case law around the {CVRA}"
259
257
  KEN_STARR_LETTER = f"letter to judge overseeing Epstein's criminal prosecution, mentions Alex Acosta"
260
258
  MICHAEL_WOLFF_EPSTEIN_ARTICLE_DRAFT = f"draft of an unpublished article about Epstein by {MICHAEL_WOLFF} written ca. 2014/2015"
261
259
  NIGHT_FLIGHT_BOOK = f'"Night Flight" (draft)'
262
260
  NOBEL_CHARITABLE_TRUST = 'Nobel Charitable Trust'
263
261
  OBAMA_JOKE = 'joke about Obama'
264
262
  PALM_BEACH_CODE_ENFORCEMENT = f'{PALM_BEACH} Code Enforcement'
263
+ PALM_BEACH_PROPERTY_INFO = f"{PALM_BEACH} property info"
265
264
  PALM_BEACH_TSV = f"TSV of {PALM_BEACH} property"
266
265
  PALM_BEACH_WATER_COMMITTEE = f'{PALM_BEACH} Water Committee'
267
266
  PATTERSON_BOOK_SCANS = f'pages of "Filthy Rich: The Shocking True Story of {JEFFREY_EPSTEIN}"'
@@ -649,9 +648,9 @@ EMAILS_CONFIG = [
649
648
  EmailCfg(id='032358', actual_text=REDACTED), # Completely redacted
650
649
  EmailCfg(id='033050', actual_text='schwartman'),
651
650
  EmailCfg(id='022219', description="discussion of attempts to clean up Epstein's Google search results"),
652
- EmailCfg(id='023627', is_fwded_article=True, description=MICHAEL_WOLFF_EPSTEIN_ARTICLE_DRAFT),
653
651
  EmailCfg(id='031333', is_fwded_article=True, description='looks like a Russian disinfo article'), # Russia Says IMF Chief Jailed For Discovering All US Gold is Gone
654
652
  EmailCfg(id='031335', is_fwded_article=True, description='looks like a Russian disinfo article'), # DOMINQUE STRAUSS-KAHN ARRESTED, NOT BECAUSE HE RAPED A MAID, BUT BECAUSE HE HAD EVIDENCE US HAS NO GOLD IN FORT KNOX.
653
+ EmailCfg(id='023627', is_fwded_article=True, description=MICHAEL_WOLFF_EPSTEIN_ARTICLE_DRAFT),
655
654
  EmailCfg(id='026298', is_fwded_article=True, duplicate_ids=['026499']), # Written by someone else?
656
655
  EmailCfg(id='029692', is_fwded_article=True, duplicate_ids=['029779']), # WaPo article
657
656
  EmailCfg(id='022344', is_fwded_article=True, duplicate_ids=['028529']), # Bill Gates is most admired from Nikolic
@@ -664,6 +663,7 @@ EMAILS_CONFIG = [
664
663
  EmailCfg(id='029849', is_fwded_article=True, duplicate_ids=['033482']), # Fareed Zakaria: Trump sells America short),
665
664
  EmailCfg(id='032023', is_fwded_article=True, duplicate_ids=['032012']), # American-Israeli Cooperative Enterprise Newsletter
666
665
  EmailCfg(id='021758', is_fwded_article=True, duplicate_ids=['030616']), # Radar Online article about Epstein's early prison release
666
+ EmailCfg(id='033297', is_fwded_article=True, duplicate_ids=['033586']), # Sultan Sulayem fwding article about Trump and Russia
667
667
  EmailCfg(id='031774', is_fwded_article=True), # Krassner fwd of Palmer Report article
668
668
  EmailCfg(id='033345', is_fwded_article=True), # Krassner fwd of Palmer Report article
669
669
  EmailCfg(id='029903', is_fwded_article=True), # Krassner fwd of Ann Coulter article about Epstein
@@ -714,7 +714,7 @@ EMAILS_CONFIG = [
714
714
  EmailCfg(id='026580', is_fwded_article=True), # NPR: Antigua: Land Of Sun, Sand, And Super Cheap
715
715
  EmailCfg(id='031340', is_fwded_article=True), # Article about Alex Jones threatening Robert Mueller
716
716
  EmailCfg(id='030209', is_fwded_article=True), # Atlantic Council Syria: Blackberry Diplomacy
717
- EmailCfg(id='033297', is_fwded_article=True, duplicate_ids=['033586']), # Sultan Sulayem fwding article about Trump and Russia
717
+ EmailCfg(id='026605', is_fwded_article=True), # Article about Ruemmler turning down attorney general job by NEDRA PICKLER
718
718
  EmailCfg(id='032475', timestamp=parse('2017-02-15 13:31:25')),
719
719
  EmailCfg(id='030373', timestamp=parse('2018-10-03 01:49:27')),
720
720
 
@@ -867,14 +867,13 @@ EMAILS_CONFIG = [
867
867
  ################################################################################################
868
868
 
869
869
  OTHER_FILES_BOOKS = [
870
- DocCfg(id='017088', author=ALAN_DERSHOWITZ, description=f'"Taking the Stand: My Life in the Law" (draft)'),
870
+ DocCfg(id='017088', author=ALAN_DERSHOWITZ, description=f'"Taking the Stand: My Life in the Law" (draft)'),
871
871
  DocCfg(id='013501', author='Arnold J. Mandell', description=f'The Nearness Of Grace: A Personal Science Of Spiritual Transformation', date='2005-01-01'),
872
872
  DocCfg(id='012899', author='Ben Goertzel', description=f'Engineering General Intelligence: A Path to Advanced AGI Via Embodied Learning and Cognitive Synergy'),
873
873
  DocCfg(id='018438', author='Clarisse Thorn', description=f'The S&M Feminist'),
874
874
  DocCfg(id='019477', author=EDWARD_JAY_EPSTEIN, description=f'How America Lost Its Secrets: Edward Snowden, the Man, and the Theft'),
875
875
  DocCfg(id='020153', author=EDWARD_JAY_EPSTEIN, description=f'The Snowden Affair: A Spy Story In Six Parts'),
876
- DocCfg(id='011472', author=EHUD_BARAK, description=NIGHT_FLIGHT_BOOK),
877
- DocCfg(id='027849', author=EHUD_BARAK, description=NIGHT_FLIGHT_BOOK),
876
+ DocCfg(id='011472', author=EHUD_BARAK, description=NIGHT_FLIGHT_BOOK, date='2006-07-12', duplicate_ids=['027849']), # date from _extract_timestamp()
878
877
  DocCfg(id='010912', author=GORDON_GETTY, description=f'"Free Growth and Other Surprises" (draft)', date='2018-10-18'),
879
878
  DocCfg(id='010477', author=JAMES_PATTERSON, description=PATTERSON_BOOK_SCANS, date='2016-10-10'),
880
879
  DocCfg(id='010486', author=JAMES_PATTERSON, description=PATTERSON_BOOK_SCANS, date='2016-10-10'),
@@ -898,9 +897,6 @@ OTHER_FILES_BOOKS = [
898
897
  ]
899
898
 
900
899
  OTHER_FILES_ARTICLES = [
901
- DocCfg(id='030258', author=ALAN_DERSHOWITZ, description=f'{ARTICLE_DRAFT} Mueller probe, almost same as 030248'),
902
- DocCfg(id='030248', author=ALAN_DERSHOWITZ, description=f'{ARTICLE_DRAFT} Mueller probe, almost same as 030258'),
903
- DocCfg(id='029165', author=ALAN_DERSHOWITZ, description=f'{ARTICLE_DRAFT} Mueller probe, almost same as 030258'),
904
900
  DocCfg(id='030013', author=f'Aviation International News', description=f'article', date='2012-07-01'),
905
901
  DocCfg(id='013275', author=BLOOMBERG, description=f"article on notable 2013 obituaries", date='2013-12-26'),
906
902
  DocCfg(id='026543', author=BLOOMBERG, description=f"BNA article about taxes"),
@@ -929,6 +925,7 @@ OTHER_FILES_ARTICLES = [
929
925
  DocCfg(id='029865', author=LA_TIMES, description=f"front page article about {DEEPAK_CHOPRA} and young Iranians", date='2016-11-05'),
930
926
  DocCfg(id='026598', author=LA_TIMES, description=f"op-ed about why America needs a Ministry of Culture"),
931
927
  DocCfg(id='027024', author=LA_TIMES, description=f"Scientists Create Human Embryos to Make Stem Cells", date='2013-05-15'),
928
+ DocCfg(id='022811', author='Law.com', description='Sarah Ransome Identifies Herself in Epstein Sex Trafficking Case', date='2018-01-09'),
932
929
  DocCfg(id='031776', author='Law360', description=f"article about Michael Avenatti by Andrew Strickler"),
933
930
  DocCfg(id='023102', author=f'Litigation Daily', description=f"article about {REID_WEINGARTEN}", date='2015-09-04'),
934
931
  DocCfg(id='029340', author=f'MarketWatch', description=f'article about estate taxes, particularly Epstein\'s favoured GRATs'),
@@ -941,6 +938,7 @@ OTHER_FILES_ARTICLES = [
941
938
  DocCfg(id='022952', author=MICHAEL_WOLFF, description=MICHAEL_WOLFF_EPSTEIN_ARTICLE_DRAFT),
942
939
  DocCfg(id='024229', author=MICHAEL_WOLFF, description=MICHAEL_WOLFF_EPSTEIN_ARTICLE_DRAFT),
943
940
  DocCfg(id='031198', author='Morning News USA', description=f"article about identify of Jane Doe in {JANE_DOE_V_EPSTEIN_TRUMP}"),
941
+ DocCfg(id='015462', author='Nautilus Education', description=f'magazine (?) issue'),
944
942
  DocCfg(id='031972', author=NYT, description=f"article about #MeToo allegations against {LAWRENCE_KRAUSS}", date='2018-03-07'),
945
943
  DocCfg(id='032435', author=NYT, description=f'article about Chinese butlers'),
946
944
  DocCfg(id='029452', author=NYT, description=f"article about {PETER_THIEL}"),
@@ -1027,12 +1025,10 @@ OTHER_FILES_ARTICLES = [
1027
1025
  DocCfg(id='031725', description=f"article about Gloria Allred and Trump allegations", date='2016-10-10'),
1028
1026
  DocCfg(id='026648', description=f'article about {JASTA} lawsuit against Saudi Arabia by 9/11 victims (Russian propaganda?)', date='2017-05-13'),
1029
1027
  DocCfg(id='032159', description=f"article about microfinance and cell phones in Zimbabwe, Strive Masiyiwa (Econet Wireless)"),
1030
- DocCfg(id='033468', description=f'{ARTICLE_DRAFT} Rod Rosenstein', date='2018-09-24'),
1031
1028
  DocCfg(id='030825', description=f'{ARTICLE_DRAFT} Syria'),
1032
1029
  DocCfg(id='027051', description=f"German language article about the 2013 Lifeball / AIDS Gala", date='2013-01-01'),
1033
- DocCfg(id='033480', description=f"{JOHN_BOLTON_PRESS_CLIPPING}", date='2018-04-06', duplicate_ids=['033481']),
1034
- DocCfg(id='013403', description=f"Lexis Nexis result from The Evening Standard about Bernie Madoff", date='2009-12-24'),
1035
- DocCfg(id='015462', description=f'Nautilus Education magazine (?) issue'),
1030
+ DocCfg(id='033480', description=f"John Bolton press clipping", date='2018-04-06', duplicate_ids=['033481']),
1031
+ DocCfg(id='013403', description=f"{LEXIS_NEXIS} result from The Evening Standard about Bernie Madoff", date='2009-12-24'),
1036
1032
  DocCfg(id='021093', description=f"page of unknown article about Epstein and Maxwell"),
1037
1033
  DocCfg(id='031191', description=f"{SINGLE_PAGE} unknown article about Epstein and Trump's relationship in 1997"),
1038
1034
  DocCfg(id='026520', description=f'Spanish language article about {SULTAN_BIN_SULAYEM}', date='2013-09-27'),
@@ -1042,16 +1038,16 @@ OTHER_FILES_ARTICLES = [
1042
1038
  date='2017-05-13',
1043
1039
  ),
1044
1040
  DocCfg(id='025094', description=f'{TRANSLATION} Spanish article about Cuba', date='2015-11-08'),
1045
- DocCfg(id='031794', description=f"very short French magazine clipping", is_interesting=False),
1041
+ DocCfg(id='031794', description=f"very short French magazine clipping"),
1046
1042
  ]
1047
1043
 
1048
1044
  OTHER_FILES_LEGAL = [
1049
1045
  DocCfg(id='017789', author=ALAN_DERSHOWITZ, description=f'letter to {HARVARD} Crimson complaining he was defamed'),
1050
1046
  DocCfg(id='011908', author=BRUNEL_V_EPSTEIN, description=f"court filing"),
1051
- DocCfg(id='017603', author=DAVID_SCHOEN, description=CVRA_LEXIS_SEARCH, date='2019-02-28'),
1052
- DocCfg(id='017635', author=DAVID_SCHOEN, description=CVRA_LEXIS_SEARCH, date='2019-02-28'),
1053
- DocCfg(id='016509', author=DAVID_SCHOEN, description=CVRA_LEXIS_SEARCH, date='2019-02-28'),
1054
- DocCfg(id='017714', author=DAVID_SCHOEN, description=CVRA_LEXIS_SEARCH, date='2019-02-28'),
1047
+ DocCfg(id='017603', author=DAVID_SCHOEN, description=LEXIS_NEXIS_CVRA_SEARCH, date='2019-02-28'),
1048
+ DocCfg(id='017635', author=DAVID_SCHOEN, description=LEXIS_NEXIS_CVRA_SEARCH, date='2019-02-28'),
1049
+ DocCfg(id='016509', author=DAVID_SCHOEN, description=LEXIS_NEXIS_CVRA_SEARCH, date='2019-02-28'),
1050
+ DocCfg(id='017714', author=DAVID_SCHOEN, description=LEXIS_NEXIS_CVRA_SEARCH, date='2019-02-28'),
1055
1051
  DocCfg(id='021824', author=EDWARDS_V_DERSHOWITZ, description=f"deposition of {PAUL_G_CASSELL}"),
1056
1052
  DocCfg(
1057
1053
  id='010757',
@@ -1185,12 +1181,12 @@ OTHER_FILES_LEGAL = [
1185
1181
  date='2019-01-11',
1186
1182
  ),
1187
1183
  DocCfg(id='028540', author='SCOTUS', description=f"decision in Budha Ismail Jam et al. v. INTERNATIONAL FINANCE CORP"),
1188
- DocCfg(id='012197', author='SDFL', description=f"Response to {JAY_LEFKOWITZ} on Epstein Plea Agreement Compliance"),
1189
- DocCfg(id='022277', description=f"{TEXT_OF_US_LAW} National Labour Relations Board (NLRB)"),
1184
+ DocCfg(id='012197', author='SDFL', description=f"response to {JAY_LEFKOWITZ} on Epstein Plea Agreement Compliance"),
1185
+ DocCfg(id='022277', description=f"text of National Labour Relations Board (NLRB) law", is_interesting=False),
1190
1186
  ]
1191
1187
 
1192
1188
  OTHER_FILES_CONFERENCES = [
1193
- DocCfg(id='014315', author=BOFA_MERRILL, description=f'2016 Future of Financials Conference'),
1189
+ DocCfg(id='014315', author=BOFA_MERRILL, description=f'2016 Future of Financials Conference, attached to 014312'),
1194
1190
  DocCfg(id='026825', author=DEUTSCHE_BANK, description=f"Asset & Wealth Management featured speaker bios"), # Really "Deutsche Asset" which may not be Deutsche Bank?
1195
1191
  DocCfg(id='023123', author=LAWRENCE_KRAUSS_ASU_ORIGINS, description=f"{STRANGE_BEDFELLOWS} (old draft)"),
1196
1192
  DocCfg(id='023120', author=LAWRENCE_KRAUSS_ASU_ORIGINS, description=STRANGE_BEDFELLOWS, duplicate_ids=['023121'], dupe_type='earlier'),
@@ -1208,10 +1204,20 @@ OTHER_FILES_CONFERENCES = [
1208
1204
  author=UN_GENERAL_ASSEMBLY,
1209
1205
  description=f'schedule including "Presidents Private Dinner - Jeffrey Epstine (sic)"',
1210
1206
  date='2012-09-21',
1207
+ is_interesting=True,
1211
1208
  ),
1212
1209
  DocCfg(id='017526', description=f'Intellectual Jazz conference brochure f. {DAVID_BLAINE}'),
1213
- DocCfg(id='029427', description=f"seems related to an IRL meeting about concerns China will attempt to absorb Mongolia"),
1214
- DocCfg(id='025797', description=f'someone\'s notes from Aspen Strategy Group', date='2013-05-29'),
1210
+ DocCfg(
1211
+ id='029427',
1212
+ description=f"seems related to an IRL meeting about concerns China will attempt to absorb Mongolia",
1213
+ is_interesting=True,
1214
+ ),
1215
+ DocCfg(
1216
+ id='025797',
1217
+ date='2013-05-29',
1218
+ description=f"someone's notes from Aspen Strategy Group",
1219
+ is_interesting=True,
1220
+ ),
1215
1221
  DocCfg(
1216
1222
  id='017060',
1217
1223
  description=f'World Economic Forum (WEF) Annual Meeting 2011 List of Participants',
@@ -1262,7 +1268,12 @@ OTHER_FILES_FINANCE = [
1262
1268
  DocCfg(id='026944', author=GOLDMAN_INVESTMENT_MGMT, description=f"Risk of a US-Iran Military Conflict", date='2019-05-23'),
1263
1269
  DocCfg(id='018804', author='Integra Realty Resources', description=f"appraisal of going concern for IGY American Yacht Harbor Marina in {VIRGIN_ISLANDS}"),
1264
1270
  DocCfg(id='026679', author='Invesco', description=f"Global Sovereign Asset Management Study 2017"),
1265
- DocCfg(id='033220', author='Joseph G. Carson', description=f"short economic report on defense spending under Trump"),
1271
+ DocCfg(
1272
+ id='033220',
1273
+ author='Joseph G. Carson',
1274
+ description=f"short economic report on defense spending under Trump",
1275
+ is_interesting=True,
1276
+ ),
1266
1277
  DocCfg(id='026572', author=JP_MORGAN, description=f"Global Asset Allocation report", date='2012-11-09'),
1267
1278
  DocCfg(id='030848', author=JP_MORGAN, description=f"Global Asset Allocation report", date='2013-03-28'),
1268
1279
  DocCfg(id='030840', author=JP_MORGAN, description=f"Market Thoughts"),
@@ -1282,7 +1293,7 @@ OTHER_FILES_FINANCE = [
1282
1293
  DocCfg(id='025763', author='S&P', description=f"Economic Research: How Increasing Income Inequality Is Dampening U.S. Growth", date='2014-08-05'),
1283
1294
  DocCfg(id='024135', author=UBS, description=UBS_CIO_REPORT, date='2012-06-29'),
1284
1295
  DocCfg(id='025247', author=UBS, description=UBS_CIO_REPORT, date='2012-10-25'),
1285
- DocCfg(id='026584', description=f"article about tax implications of disregarded entities", date='2009-07-01'),
1296
+ DocCfg(id='026584', description=f"article about tax implications of disregarded entities", date='2009-07-01', is_interesting=True),
1286
1297
  DocCfg(
1287
1298
  id='024271',
1288
1299
  description=f"Blockchain Capital and Brock Pierce pitch deck",
@@ -1343,8 +1354,8 @@ OTHER_FILES_PROPERTY = [
1343
1354
  DocCfg(id='029520', author=THE_REAL_DEAL, description=f"{REAL_DEAL_ARTICLE} 'Lost Paradise at the Palm House'", date='2019-06-17'),
1344
1355
  DocCfg(id='016597', author='Trump Properties LLC', description=f'appeal of some decision about Mar-a-Lago by {PALM_BEACH} authorities'),
1345
1356
  DocCfg(id='018743', description=f"Las Vegas property listing"),
1346
- DocCfg(id='016695', description=f"{PALM_BEACH} property info (?)"),
1347
- DocCfg(id='016697', description=f"{PALM_BEACH} property tax info (?) that mentions Trump"),
1357
+ DocCfg(id='016695', description=f"{PALM_BEACH_PROPERTY_INFO} (?)"),
1358
+ DocCfg(id='016697', description=f"{PALM_BEACH_PROPERTY_INFO} (?) that mentions Trump"),
1348
1359
  DocCfg(id='016599', description=f"{PALM_BEACH_TSV} consumption (water?)"),
1349
1360
  DocCfg(id='016600', description=f"{PALM_BEACH_TSV} consumption (water?)"),
1350
1361
  DocCfg(id='016601', description=f"{PALM_BEACH_TSV} consumption (water?)"),
@@ -1387,15 +1398,20 @@ OTHER_FILES_SOCIAL = [
1387
1398
  ]
1388
1399
 
1389
1400
  OTHER_FILES_POLITICS = [
1401
+ DocCfg(id='030258', author=ALAN_DERSHOWITZ, description=f'{ARTICLE_DRAFT} Mueller probe, almost same as 030248'),
1402
+ DocCfg(id='030248', author=ALAN_DERSHOWITZ, description=f'{ARTICLE_DRAFT} Mueller probe, almost same as 030258'),
1403
+ DocCfg(id='029165', author=ALAN_DERSHOWITZ, description=f'{ARTICLE_DRAFT} Mueller probe, almost same as 030258'),
1390
1404
  DocCfg(id='029918', author=DIANA_DEGETTE_CAMPAIGN, description=f"bio", date='2012-09-27'),
1391
1405
  DocCfg(id='031184', author=DIANA_DEGETTE_CAMPAIGN, description=f"invitation to fundraiser hosted by {BARBRO_C_EHNBOM}", date='2012-09-27'),
1392
1406
  DocCfg(id='026248', author='Don McGahn', description=f'letter from Trump lawyer to Devin Nunes (R-CA) about FISA courts and Trump'),
1407
+ DocCfg(id='027009', author=EHUD_BARAK, description=f"speech to AIPAC", date='2013-03-03'),
1393
1408
  DocCfg(
1394
1409
  id='019233',
1395
1410
  author='Freedom House',
1396
1411
  description=f"'Breaking Down Democracy: Goals, Strategies, and Methods of Modern Authoritarians'",
1397
1412
  date='2017-06-02',
1398
1413
  ),
1414
+ DocCfg(id='026856', author='Kevin Rudd', description=f"speech 'Xi Jinping, China And The Global Order'", date='2018-06-26'),
1399
1415
  DocCfg(id='026827', author='Scowcroft Group', description=f'report on ISIS', date='2015-11-14'),
1400
1416
  DocCfg(id='024294', author=STACEY_PLASKETT, description=f"campaign flier", date='2016-10-01'),
1401
1417
  DocCfg(
@@ -1404,6 +1420,7 @@ OTHER_FILES_POLITICS = [
1404
1420
  description=f'The Search for Peace in the Arab-Israeli Conflict',
1405
1421
  date='2019-12-09',
1406
1422
  ),
1423
+ DocCfg(id='033468', description=f'{ARTICLE_DRAFT} Rod Rosenstein', date='2018-09-24'),
1407
1424
  DocCfg(
1408
1425
  id='025849',
1409
1426
  author='US Office of Government Information Services',
@@ -1416,8 +1433,8 @@ OTHER_FILES_POLITICS = [
1416
1433
  date='2015-01-15', # TODO: this is just a guess
1417
1434
  duplicate_ids=['028887'],
1418
1435
  ),
1419
- DocCfg(id='010617', description=TRUMP_DISCLOSURES, date='2017-01-20'),
1420
- DocCfg(id='016699', description=TRUMP_DISCLOSURES, date='2017-01-20'),
1436
+ DocCfg(id='010617', description=TRUMP_DISCLOSURES, date='2017-01-20', is_interesting=True),
1437
+ DocCfg(id='016699', description=TRUMP_DISCLOSURES, date='2017-01-20', is_interesting=True),
1421
1438
  ]
1422
1439
 
1423
1440
  OTHER_FILES_ACADEMIA = [
@@ -1429,6 +1446,7 @@ OTHER_FILES_ACADEMIA = [
1429
1446
  description=f'report: "Challenges of AI: Envisioning and Addressing Adverse Outcomes"',
1430
1447
  duplicate_ids=['011284']
1431
1448
  ),
1449
+ DocCfg(id='026731', author='Lord Martin Rees', description=f"speech at first inaugural Cornell Carl Sagan Lecture"),
1432
1450
  DocCfg(id='015501', author=f"{MOSHE_HOFFMAN}, Erez Yoeli, and Carlos David Navarrete", description=f"Game Theory and Morality"),
1433
1451
  DocCfg(
1434
1452
  id='026521',
@@ -1456,13 +1474,13 @@ OTHER_FILES_ACADEMIA = [
1456
1474
  DocCfg(id='029592', description=HARVARD_POETRY),
1457
1475
  DocCfg(id='019396', description=f'{HARVARD} Economics 1545 Professor Kenneth Rogoff syllabus'),
1458
1476
  DocCfg(id='022445', description=f"Inference: International Review of Science Feedback & Comments", date='2018-11-01'),
1459
- DocCfg(id='029355', description=f'{SCREENSHOT} quote in book about {LARRY_SUMMERS}', duplicate_ids=['029356'], dupe_type='quoted'), # 029356 is zoomed in corner
1460
- ]
1461
-
1462
- OTHER_FILES_SPEECH = [
1463
- DocCfg(id='027009', author=EHUD_BARAK, description=f"speech to AIPAC", date='2013-03-03'),
1464
- DocCfg(id='026856', author='Kevin Rudd', description=f"speech 'Xi Jinping, China And The Global Order'", date='2018-06-26'),
1465
- DocCfg(id='026731', author='Lord Martin Rees', description=f"speech at first inaugural Cornell Carl Sagan Lecture"),
1477
+ DocCfg(
1478
+ id='029355',
1479
+ description=f'{SCREENSHOT} quote in book about {LARRY_SUMMERS}',
1480
+ duplicate_ids=['029356'], # 029356 is zoomed in corner
1481
+ dupe_type='quoted',
1482
+ is_interesting=False,
1483
+ ),
1466
1484
  ]
1467
1485
 
1468
1486
  # resumes and application letters
@@ -1523,7 +1541,7 @@ OTHER_FILES_MISC = [
1523
1541
  DocCfg(id='032735', author=GORDON_GETTY, description=f"on Trump", date='2018-03-20'), # Dated based on concurrent emails from Getty
1524
1542
  DocCfg(id='025540', author=JEFFREY_EPSTEIN, description=f"rough draft of Epstein's side of the story?"),
1525
1543
  DocCfg(id='026634', author='Michael Carrier', description=f"comments about an Apollo linked hedge fund 'DE Fund VIII'"),
1526
- DocCfg(id='031425', author=SCOTT_J_LINK, description=f'completely redacted email from'),
1544
+ DocCfg(id='031425', author=SCOTT_J_LINK, description=f'completely redacted email from', is_interesting=False),
1527
1545
  DocCfg(id='020447', author='Working Group on Chinese Influence Activities in the U.S.', description=f'Promoting Constructive Vigilance'),
1528
1546
  DocCfg(id='031743', description=f'a few pages describing the internet as a "New Nation State" (Network State?)'),
1529
1547
  DocCfg(id='012718', description=f"{CVRA} congressional record", date='2011-06-17'),
@@ -1540,7 +1558,7 @@ OTHER_FILES_MISC = [
1540
1558
  date='2000-06-07',
1541
1559
  description=f"{PRESS_RELEASE} announcing Donald Trump & {NICHOLAS_RIBIS} ended their working relationship at Trump's casino",
1542
1560
  ),
1543
- DocCfg(id='029328', description=f"Rafanelli Events promotional deck"),
1561
+ DocCfg(id='029328', description=f"Rafanelli Events promotional deck", is_interesting=False),
1544
1562
  DocCfg(id='033434', description=f"{SCREENSHOT} iPhone chat labeled 'Edwards' at the top"),
1545
1563
  DocCfg(id='029475', description=f'{VIRGIN_ISLANDS} Twin City Mobile Integrated Health Services (TCMIH) proposal/request for donation'),
1546
1564
  DocCfg(id='029448', description=f"weird short essay titled 'President Obama and Self-Deception'"),
@@ -1575,7 +1593,6 @@ OTHER_FILES_CATEGORIES = [
1575
1593
  REPUTATION,
1576
1594
  'RESUMES',
1577
1595
  SOCIAL,
1578
- SPEECH,
1579
1596
  ]
1580
1597
 
1581
1598
  OTHER_FILES_CONFIG = []
@@ -1600,6 +1617,9 @@ for cfg in ALL_CONFIGS:
1600
1617
 
1601
1618
  # Add extra config objects for duplicate files that match the config of file they are duplicating
1602
1619
  for dupe_cfg in cfg.duplicate_cfgs():
1620
+ if not isinstance(dupe_cfg, EmailCfg):
1621
+ logger.debug(f"Generated synthetic config for dupe: {dupe_cfg}")
1622
+
1603
1623
  ALL_FILE_CONFIGS[dupe_cfg.id] = dupe_cfg
1604
1624
 
1605
1625
 
@@ -26,7 +26,9 @@ date_str = lambda dt: dt.isoformat()[0:10] if dt else None
26
26
  escape_double_quotes = lambda text: text.replace('"', r'\"')
27
27
  escape_single_quotes = lambda text: text.replace("'", r"\'")
28
28
  iso_timestamp = lambda dt: dt.isoformat().replace('T', ' ')
29
- remove_time_from_timestamp_str = lambda dt: dt.isoformat().removesuffix('T00:00:00')
29
+ days_between = lambda dt1, dt2: (dt2 - dt1).days + 1
30
+ days_between_str = lambda dt1, dt2: f"{days_between(dt1, dt2)} day" + ('s' if days_between(dt1, dt2) > 1 else '')
31
+ remove_zero_time_from_timestamp_str = lambda dt: dt.isoformat().removesuffix('T00:00:00')
30
32
  uniquify = lambda _list: list(set(_list))
31
33
  without_falsey = lambda _list: [e for e in _list if e]
32
34
 
@@ -8,7 +8,7 @@ from dateutil.parser import parse
8
8
 
9
9
  from epstein_files.util.constant.names import *
10
10
  from epstein_files.util.constant.strings import *
11
- from epstein_files.util.data import remove_time_from_timestamp_str, without_falsey
11
+ from epstein_files.util.data import remove_zero_time_from_timestamp_str, without_falsey
12
12
 
13
13
  DuplicateType = Literal['earlier', 'quoted', 'redacted', 'same']
14
14
  Metadata = dict[str, bool | datetime | int | str | list[str | None] |dict[str, bool | str]]
@@ -65,10 +65,10 @@ class DocCfg:
65
65
  author (str | None): Author of the document (if any)
66
66
  category (str | None): Type of file
67
67
  date (str | None): If passed will be immediated parsed into the 'timestamp' field
68
- dupe_of_id (str | None): If this is a dupe the ID of the duplicated file. This file will be suppressed
69
68
  dupe_type (DuplicateType | None): The type of duplicate this file is or its 'duplicate_ids' are
70
69
  duplicate_ids (list[str]): IDs of *other* documents that are dupes of this document
71
- is_interesting (bool): Override other considerations and always consider this file interesting
70
+ duplicate_of_id (str | None): If this is a dupe the ID of the duplicated file. This file will be suppressed
71
+ is_interesting (bool | None): Override other considerations and always consider this file interesting (or not)
72
72
  timestamp (datetime | None): Time this email was sent, file was created, article published, etc.
73
73
  is_synthetic (bool): True if this config was generated by the duplicate_cfgs() method
74
74
  """
@@ -77,10 +77,10 @@ class DocCfg:
77
77
  category: str | None = None
78
78
  date: str | None = None
79
79
  description: str | None = None
80
- dupe_of_id: str | None = None
81
80
  dupe_type: DuplicateType | None = None
82
81
  duplicate_ids: list[str] = field(default_factory=list)
83
- is_interesting: bool = False
82
+ duplicate_of_id: str | None = None
83
+ is_interesting: bool | None = None
84
84
  is_synthetic: bool = False
85
85
  timestamp: datetime | None = None
86
86
 
@@ -88,7 +88,7 @@ class DocCfg:
88
88
  if self.date:
89
89
  self.timestamp = parse(self.date)
90
90
 
91
- if self.dupe_of_id or self.duplicate_ids:
91
+ if self.duplicate_of_id or self.duplicate_ids:
92
92
  self.dupe_type = self.dupe_type or SAME
93
93
 
94
94
  def complete_description(self) -> str | None:
@@ -115,11 +115,11 @@ class DocCfg:
115
115
  return ' '.join(pieces) if pieces else None
116
116
 
117
117
  def duplicate_cfgs(self) -> Generator['DocCfg', None, None]:
118
- """Create synthetic DocCfg objects that set the 'dupe_of_id' field to point back to this object."""
118
+ """Create synthetic DocCfg objects that set the 'duplicate_of_id' field to point back to this object."""
119
119
  for id in self.duplicate_ids:
120
120
  dupe_cfg = deepcopy(self)
121
121
  dupe_cfg.id = id
122
- dupe_cfg.dupe_of_id = self.id
122
+ dupe_cfg.duplicate_of_id = self.id
123
123
  dupe_cfg.duplicate_ids = []
124
124
  dupe_cfg.dupe_type = self.dupe_type
125
125
  dupe_cfg.is_synthetic = True
@@ -147,7 +147,7 @@ class DocCfg:
147
147
  elif _field.name == 'timestamp' and self.date is not None:
148
148
  continue # Don't print both timestamp and date
149
149
  elif isinstance(value, datetime):
150
- value_str = remove_time_from_timestamp_str(value)
150
+ value_str = remove_zero_time_from_timestamp_str(value)
151
151
  add_prop(_field, f"parse('{value_str}')" if CONSTANTIZE_NAMES else f"'{value}'")
152
152
  elif isinstance(value, str):
153
153
  if "'" in value:
epstein_files/util/env.py CHANGED
@@ -31,8 +31,8 @@ output.add_argument('--output-other', '-oo', action='store_true', help='generate
31
31
  output.add_argument('--output-texts', '-ot', action='store_true', help='generate text messages section')
32
32
  output.add_argument('--sort-alphabetical', action='store_true', help='sort emailers alphabetically intead of by email count')
33
33
  output.add_argument('--suppress-output', action='store_true', help='no output to terminal (use with --build)')
34
+ output.add_argument('--uninteresting', action='store_true', help='only output uninteresting other files')
34
35
  output.add_argument('--width', '-w', type=int, default=DEFAULT_WIDTH, help='screen width to use (in characters)')
35
- output.add_argument('--use-epstein-web', action='store_true', help='use epsteinweb.org links instead of epstein.media')
36
36
 
37
37
  scripts = parser.add_argument_group('SCRIPTS', 'Options used by epstein_search, epstein_show, and epstein_diff.')
38
38
  scripts.add_argument('positional_args', nargs='*', help='strings to searchs for, file IDs to show or diff, etc.')
@@ -66,7 +66,7 @@ is_html_script = current_script in HTML_SCRIPTS
66
66
 
67
67
  args.debug = args.deep_debug or args.debug or is_env_var_set('DEBUG')
68
68
  args.output_emails = args.output_emails or args.all_emails
69
- args.output_other = args.output_other or args.all_other_files
69
+ args.output_other = args.output_other or args.all_other_files or args.uninteresting
70
70
  args.overwrite_pickle = args.overwrite_pickle or (is_env_var_set('OVERWRITE_PICKLE') and not is_env_var_set('PICKLED'))
71
71
  args.width = args.width if is_html_script else None
72
72
  is_output_selected = any([arg.startswith('output_') and value for arg, value in vars(args).items()])
@@ -90,8 +90,5 @@ if current_script == 'epstein_generate' and not (is_output_selected or args.make
90
90
  logger.warning(f"No output section chosen; outputting default selection of texts, selected emails, and other files...")
91
91
  args.output_texts = args.output_emails = args.output_other = True
92
92
 
93
- if args.use_epstein_web:
94
- logger.warning(f"Using links to epsteinweb.org links instead of epsteinify.com...")
95
-
96
93
  if args.debug:
97
94
  logger.warning(f"Invocation args:\ncurrent_script={current_script}\nis_html_script={is_html_script},\nis_output_selected={is_output_selected}\nspecified_names={specified_names},\nargs={args}")