Spaces:
Running
Running
File size: 2,838 Bytes
29b07b3 a0c14f1 6509820 3c2a864 6509820 a0c14f1 6814f98 a0c14f1 6509820 572f8cd c5da60b 30aaad8 5b6d1b9 6d4e93b c5da60b 6d4e93b 30aaad8 c5da60b 30aaad8 6509820 a0c14f1 a4a02bf 6e74e2b 6814f98 a0c14f1 163719b a0c14f1 6509820 5db111d a0c14f1 19137a2 |
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 |
from flask import Flask, Response, render_template, send_file, stream_with_context, request, session
import requests
import random
import pickle as pkl
import pycountry
import datetime as dt
import pytz
app = Flask(__name__)
app.secret_key = 'green-flounder'
with open('video_dict.pkl', 'rb') as f:
feed_dict = pkl.load(f)
with open('live_urls.pkl', 'rb') as f:
live_urls = pkl.load(f)
def get_ip_info(ip_address):
try:
response = requests.get(f"http://ipinfo.io/{ip_address}/json")
data = response.json()
return data
except Exception as e:
return {"error": str(e)}
def latlon_to_pixel(loc):
latitude = float(loc.split(',')[0])
longitude = float(loc.split(',')[1])
y = ((90-latitude)/180)
x = ((longitude+180)/360)
return x*100, y*100
@app.route('/proxy/<path:url>')
def proxy(url):
print('URL:', url)
headers = {'User-Agent': 'Mozilla/5.0'}
try:
req = requests.get(f'http://{url}', headers=headers, stream=True, timeout=20)
content_type = req.headers['content-type']
return Response(req.iter_content(chunk_size=10*1024), content_type=content_type)
except requests.exceptions.RequestException as e:
print(f'Error: {e}')
return send_file('static/error.png', mimetype='image/png')
@app.route('/')
def index():
if 'current_feed' in session and request.args.get('new', 'false') == 'false':
feed = session['current_feed']
else:
feed = random.randint(0, len(live_urls) - 1)
session['current_feed'] = feed
#url = feed_dict[feed]['url']
url = live_urls[feed]
ip = ''.join(url.split('//')[-1]).split(':')[0]
info = get_ip_info(ip)
country = (pycountry.countries.get(alpha_2=info['country']).name).lower()
name = (info['city'] + ", " + info['region'] + ", " + country).lower()
org = info['org'].lower()
timezone = pytz.timezone(info['timezone'])
time = dt.datetime.now(timezone)
loc = info['loc']
X, Y = latlon_to_pixel(info['loc'])
proxy_url = 'proxy/' + url.split('http://')[-1]
loc_link = f"https://www.google.com/maps/search/{loc}"
ip_link = url
return render_template('index.html',
name=name,
url=proxy_url,
info=info,
country=country,
time=time,
ip=ip,
ip_link=ip_link
org=org,
loc=loc,
loc_link=loc_link,
X=X,
Y=Y)
if __name__ == '__main__':
app.run(host='0.0.0.0', port='7860', debug=True)
|