File size: 5,647 Bytes
f88f811
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
f436ca7
 
 
 
 
f88f811
 
 
 
 
 
 
 
f345e69
 
 
 
 
10d931c
 
 
 
 
0cac41f
 
 
 
 
9fe3143
 
 
 
 
7740bd6
 
 
 
 
f88f811
db9323a
 
 
 
 
0cac41f
f88f811
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
import gradio as gr

tv_appearances = [
    {
        "source": "The Daily Signal",
        "title": "Victor Davis Hanson: The Trump Deranged “Experts” Were Wrong. Again.",
        "link": "https://www.youtube.com/live/WPSiYIl8ZLg "
    },
    {
        "source": "The Daily Signal",
        "title": "Victor Davis Hanson: 128 Democrats Reject Latest Trump Impeachment—Here’s The Major Reason Why",
        "link": "https://www.youtube.com/watch?v=uQzoMjEd3G8"
    },
    {
        "source": "Fox News",
        "title": "Buttigieg is even worse than Biden: Victor Davis Hanson",
        "link": " https://www.youtube.com/watch?v=9iIjdYZyUy0"
    },
    {
        "source": "The Daily Signal",
        "title": "Victor Davis Hanson: The Illegal, Democrat-Linked Pot Farm The Left Wants You to Ignore",
        "link": "https://www.youtube.com/watch?v=dr6IxJBKeos"
    }
]

news_mentions = [
    {
        "show": "Las Vegas Review Journal - VICTOR DAVIS HANSON: In the end, everyone hated the Iranian theocracy",
        "date": "June 28, 2025 - 9:01 pm",
        "link": " https://www.reviewjournal.com/opinion/opinion-columns/victor-davis-hanson/victor-davis-hanson-in-the-end-everyone-hated-the-iranian-theocracy-3390658/ "
    },
    {
        "show": "American Greatness - VICTOR DAVIS HANSON: The World Woke Up",
        "date": "July 17, 2025 - 5:55 am",
        "link": "https://amgreatness.com/2025/07/17/the-world-woke-up/"
    },
    {
        "show": "American Greatness - VICTOR DAVIS HANSON: The War Between Trump's Chemotherapy and the Biden Cancer",
        "date": "July 21, 2025 - 5:55 am",
        "link": "https://amgreatness.com/2025/07/21/the-war-between-trumps-chemotherapy-and-the-biden-cancer/"
    },
     {
        "show": "American Greatness - VICTOR DAVIS HANSON: Revenge or Justice?",
        "date": "July 24, 2025 - 5:55 am",
        "link": "https://amgreatness.com/2025/07/24/revenge-or-justice/"
    },
    {
        "show": "American Greatness - VICTOR DAVIS HANSON: The Cincinnati Cop-outs",
        "date": "July 31, 2025 5:55 am",
        "link": "https://amgreatness.com/2025/07/31/the-cincinnati-cop-outs/"
    },
    {
        "show": "American Greatness - VICTOR DAVIS HANSON: Trump's Unknown Frontiers",
        "date": "August 4, 2025 5:55am",
        "link": "https://amgreatness.com/2025/08/04/trumps-unknown-frontiers/"
    }
    {
        "show": "American Greatness - VICTOR DAVIS HANSON: Who Has Been Busy Destroying Democracy?",
        "date": "August 14, 2025 5:33am",
        "link": "https://amgreatness.com/2025/08/14/who-has-been-busy-destroying-democracy/"
    }
    
]

books = [
    {
        "title": "The Dying Citizen: How Progressive Elites, Tribalism, and Globalization Are Destroying the Idea of America",
        "link": "https://www.amazon.com/Dying-Citizen-Progressive-Globalization-Destroying-ebook/dp/B08W4ZZTTP "
    },
    {
        "title": "The Second World Wars: How the First Global Conflict Was Fought and Won",
        "link": "https://www.amazon.com/Second-World-Wars-Global-Conflict-ebook/dp/B01N808V2J "
    }
]

# === Helper Function (Flexible & Robust) ===
def display_links(data, title_key="title", link_key="link", source_key=None, date_key=None):
    lines = []
    for item in data:
        title = item.get(title_key, "[Untitled]")
        link = item.get(link_key, "#")
        source = item.get(source_key, "") if source_key else ""
        date = item.get(date_key, "") if date_key else ""

        full_title = f"{source}: {title}" if source else title
        if date:
            full_title += f" — {date}"

        lines.append(f"- [{full_title}]({link.strip()})")
    return "\n".join(lines)

# === Gradio Interface ===
with gr.Blocks(theme="soft") as demo:
    gr.Markdown(
        """
        # Doctor Victor Davis Hanson News & Publications Aggregator
        
        This app aggregates publicly available mentions and publications related to **Dr. Victor Davis Hanson**, 
        a public academic figure known for their commentary on politics and policy. The purpose of this tool is to provide 
        a centralized resource for tracking appearances, articles, interviews, and published works — intended for research, 
        media monitoring, and academic study.
        
        > 🔍 *Note: This model does not express opinions, endorse views, or verify accuracy. Users are encouraged to consult original sources for context.*
        """
    )

    with gr.Tab("News Mentions"):
        gr.Markdown(display_links(news_mentions, title_key="show", link_key="link", date_key="date"))

    with gr.Tab("TV Appearances"):
        gr.Markdown(display_links(tv_appearances, source_key="source"))

    with gr.Tab("Books"):
        gr.Markdown("## 📚 Books by Dr. Victor Davis Hanson\n")
        gr.Markdown(display_links(books))
        gr.Markdown(
            "> 📘 These links open directly to Amazon product pages. No user data is collected via these links."
        )

    gr.Markdown(
        """
        ## ⚖️ Legal & Ethical Notice
        
        - **Fair Use**: Quoted headlines and excerpts fall under U.S. fair use doctrine for purposes of research, criticism, and news reporting.
        - **GDPR Compliance**: This app does not collect personal data about users or store unnecessary personal information about the subject.
        - **Right to Be Forgotten**: If the individual or any third party requests removal of content or data, please use the Contact tab.
        - **No Affiliate Marketing**: I do not have an Amazon account, link to the main author.
        """
    )

# Launch the app
demo.launch()