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)