Aarifkhan commited on
Commit
31154f8
1 Parent(s): 0b2babf

Upload 2 files

Browse files
Files changed (2) hide show
  1. news.py +26 -0
  2. templates/news.html +144 -0
news.py ADDED
@@ -0,0 +1,26 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ from flask import Flask, render_template, request
2
+ from webscout import WEBS
3
+ import arrow
4
+
5
+ app = Flask(__name__)
6
+
7
+ @app.route('/', methods=['GET'])
8
+ def home():
9
+ keywords = request.args.get('keywords', 'latest AI news')
10
+ timelimit = request.args.get('timelimit', 'd')
11
+ news_list = []
12
+ with WEBS() as webs_instance:
13
+ WEBS_news_gen = webs_instance.news(
14
+ keywords,
15
+ region="wt-wt",
16
+ safesearch="off",
17
+ timelimit=timelimit,
18
+ max_results=100
19
+ )
20
+ for r in WEBS_news_gen:
21
+ r['date'] = arrow.get(r['date']).humanize()
22
+ news_list.append(r)
23
+ return render_template('news.html', news=news_list, keywords=keywords)
24
+
25
+ if __name__ == '__main__':
26
+ app.run(debug=True)
templates/news.html ADDED
@@ -0,0 +1,144 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <!DOCTYPE html>
2
+ <html lang="en">
3
+ <head>
4
+ <meta charset="UTF-8">
5
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
6
+ <title>InfoHive - News Search</title>
7
+ <meta name="description" content="InfoHive is a news search engine that provides the latest updates on technology, sports, and more.">
8
+ <meta property="og:title" content="InfoHive - News Search">
9
+ <meta property="og:description" content="InfoHive is a news search engine that provides the latest updates on technology, sports, and more.">
10
+ <meta property="og:image" content="https://raw.githubusercontent.com/OE-LUCIFER/HelpingAI-vortex3b/main/techscout.jpeg">
11
+ <meta property="og:url" content="https://abhaukoul-techscout-news.hf.space/">
12
+ <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.5.2/css/bootstrap.min.css">
13
+ <link rel="icon" href="favicon.ico" type="image/x-icon">
14
+ <style>
15
+ body {
16
+ font-family: sans-serif;
17
+ margin: 0;
18
+ background: #000;
19
+ color: #fff;
20
+ }
21
+ .container {
22
+ padding-top: 50px;
23
+ }
24
+ .jumbotron {
25
+ background-color: #007bff;
26
+ color: #fff;
27
+ padding: 2rem 2rem;
28
+ margin-bottom: 30px;
29
+ }
30
+ .card {
31
+ border: none;
32
+ box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);
33
+ transition: transform 0.3s;
34
+ }
35
+ .card:hover {
36
+ transform: translateY(-5px);
37
+ }
38
+ .card-title {
39
+ font-size: 20px;
40
+ font-weight: bold;
41
+ color: #333;
42
+ }
43
+ .card-text {
44
+ color: #666;
45
+ }
46
+ .card-footer {
47
+ background-color: #f9f9f9;
48
+ border-top: none;
49
+ }
50
+ .btn-primary {
51
+ background-color: #007bff;
52
+ border-color: #007bff;
53
+ }
54
+ .btn-primary:hover {
55
+ background-color: #0056b3;
56
+ border-color: #0056b3;
57
+ }
58
+ .btn-outline-primary {
59
+ color: #007bff;
60
+ border-color: #007bff;
61
+ }
62
+ .btn-outline-primary:hover {
63
+ background-color: #007bff;
64
+ color: #fff;
65
+ }
66
+ .no-results {
67
+ text-align: center;
68
+ font-style: italic;
69
+ margin-top: 20px;
70
+ }
71
+ .search-input {
72
+ border-radius: 24px;
73
+ }
74
+ .logo {
75
+ max-width: 200px;
76
+ }
77
+ .subscribe-btn {
78
+ background-color: #ff0000;
79
+ border-color: #ff0000;
80
+ }
81
+ .subscribe-btn:hover {
82
+ background-color: #cc0000;
83
+ border-color: #cc0000;
84
+ }
85
+ </style>
86
+ </head>
87
+ <body>
88
+ <div class="container">
89
+ <div class="jumbotron" style="margin-top: 100px;">
90
+ <h1 class="display-4 text-center mb-4">Explore the Latest News</h1>
91
+ <p class="lead text-center">InfoHive is your source for up-to-date news on technology, sports, and more.</p>
92
+ <div class="text-center">
93
+ <a href="https://youtube.com/@OEvortex" class="btn btn-primary subscribe-btn" target="_blank">Subscribe to OEvortex on YouTube</a>
94
+ </div>
95
+ </div>
96
+ <div class="card mb-4">
97
+ <div class="card-body">
98
+ <form method="GET" action="/">
99
+ <div class="form-row">
100
+ <div class="col-md-8">
101
+ <input type="text" class="form-control search-input" name="keywords" placeholder="Enter keywords" value="{{ keywords }}">
102
+ </div>
103
+ <div class="col-md-2">
104
+ <select name="timelimit" class="form-control search-input">
105
+ <option value="d" {% if timelimit == 'd' %}selected{% endif %}>Day</option>
106
+ <option value="w" {% if timelimit == 'w' %}selected{% endif %}>Week</option>
107
+ <option value="m" {% if timelimit == 'm' %}selected{% endif %}>Month</option>
108
+ </select>
109
+ </div>
110
+ <div class="col-md-2">
111
+ <button type="submit" class="btn btn-primary btn-block">Search</button>
112
+ </div>
113
+ </div>
114
+ </form>
115
+ </div>
116
+ </div>
117
+ {% if news %}
118
+ <div class="row">
119
+ {% for news_item in news %}
120
+ <div class="col-md-4 mb-4">
121
+ <div class="card">
122
+ <img src="{{ news_item['image'] }}" class="card-img-top" alt="{{ news_item['title'] }}">
123
+ <div class="card-body">
124
+ <h5 class="card-title">{{ news_item['title'] }}</h5>
125
+ <p class="card-text">
126
+ <small class="text-muted">
127
+ {{ news_item['date'] }} - {{ news_item['source'] }}
128
+ </small>
129
+ </p>
130
+ <p class="card-text">{{ news_item['body']}}</p>
131
+ </div>
132
+ <div class="card-footer">
133
+ <a href="{{ news_item['url'] }}" class="btn btn-outline-primary btn-sm">Read More</a>
134
+ </div>
135
+ </div>
136
+ </div>
137
+ {% endfor %}
138
+ </div>
139
+ {% else %}
140
+ <p class="no-results">No results found.</p>
141
+ {% endif %}
142
+ </div>
143
+ </body>
144
+ </html>