diff --git a/__pycache__/views.cpython-311.pyc b/__pycache__/views.cpython-311.pyc new file mode 100644 index 0000000..79f80c4 Binary files /dev/null and b/__pycache__/views.cpython-311.pyc differ diff --git a/app.py b/app.py new file mode 100644 index 0000000..05e2ebc --- /dev/null +++ b/app.py @@ -0,0 +1,10 @@ +number="+449876066443" +from flask import Flask +from views import views + +app =Flask(__name__) +app.register_blueprint(views) + +# +if __name__ == "__main__": + app.run(debug=True, port=8000) \ No newline at end of file diff --git a/func.py b/func.py new file mode 100644 index 0000000..dabd062 --- /dev/null +++ b/func.py @@ -0,0 +1,52 @@ +# from flask import Flask, render_template, request +# from flask_sqlalchemy import SQLAlchemy + +# app = Flask(__name__) +# app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///delivery.db' +# db = SQLAlchemy(app) + +# class Delivery(db.Model): +# id = db.Column(db.Integer, primary_key=True) +# name = db.Column(db.String(50), nullable=False) +# address = db.Column(db.String(100), nullable=False) +# tracking_number = db.Column(db.String(50), nullable=False) +# status = db.Column(db.String(50), nullable=False) + +# @app.route('/', methods=['GET', 'POST']) +# def index(): +# if request.method == 'POST': +# name = request.form['name'] +# address = request.form['address'] +# tracking_number = request.form['tracking_number'] +# delivery = Delivery(name=name, address=address, tracking_number=tracking_number, status='Shipped') +# db.session.add(delivery) +# db.session.commit() +# return 'Delivery information stored.' +# else: +# return render_template('index.html') + +# @app.route('/delivery/') +# def delivery(tracking_number): +# delivery = Delivery.query.filter_by(tracking_number=tracking_number).first_or_404() +# return render_template('delivery.html', delivery=delivery) +# updateStatus(trackingNumber) { +# $.ajax({ +# type: "POST", +# url: "/update_status", +# data: { tracking_number: trackingNumber }, +# success: function(data) { +# // update the delivery status on the web page +# } +# }); +# } +# @app.route('/update_status', methods=['POST']) +# def update_status(): +# tracking_number = request.form['tracking_number'] +# delivery = Delivery.query.filter_by(tracking_number=tracking_number).first() +# if delivery: +# delivery.status = 'Delivered' +# db.session.commit() +# return 'Delivery status updated.' +# else: +# return 'Delivery not found.' + diff --git a/main.py b/main.py new file mode 100644 index 0000000..354b9bb --- /dev/null +++ b/main.py @@ -0,0 +1,60 @@ +# import phonenumbers +from app import number +#import folium +# number="+447878066443" + +from phonenumbers import geocoder +ch_number = phonenumbers.parse(number,"CH") +print(geocoder.description_for_number(ch_number,"en")) + +location = geocoder.description_for_number(ch_number,"en") + +import opencage +from opencage.geocoder import OpenCageGeocode +key = '831700a26df246a49d2fd85e9859e1ae' +geocoder =OpenCageGeocode(key) +query = str(location) +results = geocoder.geocode(query) +# print(results) +lat =results[0]['geometry']['lat'] +lng =results[0]['geometry']['lng'] +print(lat,lng) + +mymap = folium.Map(location=[lat,lng], zoom_start= 9) +folium.Marker([lat,lng], popup=location).add_to(mymap) +mymap.save("mylocation.html") + + +# --------------- +# stackify website +# IPSTack key +# https://stackify.com/python-geocoder-a-guide-to-managing-locations-in-your-apps/ +#---------------- +import requests +key = "e88e972426c5be7ed2b8a1a45b4460dd" +ip = "2.216.185.49" +url = "http://api.ipstack.com/" + ip +"?access_key=" + key +response = requests.get(url).json() +print(response) + +def lng_lat_from_ip(ip): + url = "http://api.ipstack.com/" + ip + "?access_key=" + key + response = requests.get(url).json() + return (response['longitude'], response['latitude']) +longitude, latitude = lng_lat_from_ip(ip) + + + +# from geopy.distance import geodesic +# Brighton = (longitude, latitude) # I used our function above to get this. +# cleveland_oh = (41.499498, -81.695391) # I looked this one up. +# print("distance " ,geodesic(Brighton, cleveland_oh).miles) + + +from flask import Flask, render_template + +app = Flask(__name__) + +@app.route('/') +def index(): + return render_template('index.html') \ No newline at end of file diff --git a/requirements.txt b/requirements.txt new file mode 100644 index 0000000..6f42ae1 --- /dev/null +++ b/requirements.txt @@ -0,0 +1,2 @@ +flask +requests \ No newline at end of file diff --git a/static/index.js b/static/index.js new file mode 100644 index 0000000..3cfcd9f --- /dev/null +++ b/static/index.js @@ -0,0 +1 @@ +console.log("i am running"); \ No newline at end of file diff --git a/templates/form.html b/templates/form.html new file mode 100644 index 0000000..184d617 --- /dev/null +++ b/templates/form.html @@ -0,0 +1,4 @@ +
+

enter IP

+ +
\ No newline at end of file diff --git a/templates/index.html b/templates/index.html new file mode 100644 index 0000000..a4ed215 --- /dev/null +++ b/templates/index.html @@ -0,0 +1,21 @@ + + + + + + + FlaskBlog + + + + + {% block content %} +

hello

+ +

Welcome to TRacking website

+

{{name}}

+

Track IP

+ {% endblock %} + + + \ No newline at end of file diff --git a/templates/login.html b/templates/login.html new file mode 100644 index 0000000..a01012d --- /dev/null +++ b/templates/login.html @@ -0,0 +1,23 @@ + + + Flask Intro - login page + + + + +
+

Please login

+
+
+ + + +
+ {% if error %} +

Error: {{ error }} + {% endif %} +

+ + \ No newline at end of file diff --git a/templates/trackpage.html b/templates/trackpage.html new file mode 100644 index 0000000..95f598e --- /dev/null +++ b/templates/trackpage.html @@ -0,0 +1,7 @@ +{% extends "index.html" %} +{% block content %} +

Here are your coordiantes

+

longitude : {{longitude}}

+

latitude : {{latitude}}

+

content : {{contentt}}

+{% endblock %} \ No newline at end of file diff --git a/views.py b/views.py new file mode 100644 index 0000000..2b8c675 --- /dev/null +++ b/views.py @@ -0,0 +1,85 @@ +from flask import Blueprint, render_template,url_for, redirect, jsonify, request,Flask +import requests +# import requests +views = Blueprint(__name__, "views") + +app = Flask(__name__) + + +@views.route("/") +def home(): + # return "hello testing" + return render_template("index.html") + + +# add /views/profile/username +# http://127.0.0.1:8000/views/profile/username +# @views.route("/profile/") +# def profile(username): +# # return "hello testing" +# return render_template("index.html", name=username) + +# take query +# /views/profile?name=username +# http://127.0.0.1:8000/views/profile?name=username + +@views.route("/profile") +def profile(): + # return "hello testing" + # args=request.args + # name=args.get('name') + return render_template("track.html") + +# return json to return json need dictionary +@views.route("/json") +def get_json(): + return jsonify({'name': 'username', 'ID':123}) + +# redirect json +@views.route("/gotohome") +def gotohome(): + return redirect(url_for("views.home")) + +# --------------- +# stackify website +# IPStack key +# https://stackify.com/python-geocoder-a-guide-to-managing-locations-in-your-apps/ +#---------------- + +# +import json +# json.loads(symbols) + +key = "e88e972426c5be7ed2b8a1a45b4460dd" + + +@views.route('/track', methods=['POST',"GET"]) +def my_form_post(): + + if request.method == "POST": + ip = request.form['text'] + # processed_text = text.upper() + url = "http://api.ipstack.com/" + ip + "?access_key=" + key + r = requests.get(url) + print("r value", r.content) + longitude = r.json()["longitude"] + latitude = r.json()["latitude"] + contentt=r.json() + + + return render_template("trackpage.html",longitude =longitude ,latitude = latitude, contentt=contentt) + + + return render_template("form.html") + +# login +# Route for handling the login page logic +@views.route('/login', methods=['GET', 'POST']) +def login(): + error = None + if request.method == 'POST': + if request.form['username'] != 'admin' or request.form['password'] != 'admin': + error = 'Invalid Credentials. Please try again.' + else: + return redirect(url_for('home')) + return render_template('login.html', error=error) \ No newline at end of file