File size: 4,054 Bytes
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
import gradio as gr

# === Sample Data ===
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"
    }
]

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/ "
    }
]

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()