Spaces:
Running
Running
File size: 3,632 Bytes
cd55e67 a0c14f1 6509820 3c2a864 6509820 a0c14f1 6814f98 a0c14f1 9578bef b7779db a0c14f1 b94dcf8 2af4039 6509820 d1f4a66 30aaad8 b306f2e 2a8b4c0 b306f2e 52e19de 3ff67ea f81fa21 b94dcf8 2af4039 81d7489 6d4e93b 5a62495 81d7489 3ff67ea b306f2e a0c14f1 a4a02bf 6e74e2b 6814f98 4541be9 a0c14f1 163719b a0c14f1 525173b 5db111d d075963 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 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 |
from flask import Flask, Response, render_template, send_file, stream_with_context, request, session, redirect, url_for
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)
#with open('active_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
from urllib.parse import urlparse, parse_qs
@app.route('/proxy/<path:url>')
def proxy(url):
headers = {
'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7',
'Accept-Encoding': 'gzip, deflate',
'Accept-Language': 'en-US,en;q=0.9',
'Cache-Control': 'max-age=0',
'Connection': 'keep-alive',
'Dnt': '1',
'Upgrade-Insecure-Requests': '1',
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/116.0.0.0 Safari/537.36'
}
try:
clean_url = url.replace('proxy/', '')
print('Cleaned URL:', clean_url)
req = requests.get(f'{clean_url}', headers=headers, stream=True, timeout=10)
print("Status Code:", req.status_code)
print("Response Headers:", req.headers)
content_type = req.headers['content-type']
return Response(req.iter_content(chunk_size=2*1024), content_type=content_type)
except:
print(f'Redirecting')
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].replace('COUNTER',str(random.randint(0,100000)))
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
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)
|