python
from flask import Flask, redirect, request
import hashlib
import sqlite3
app = Flask(__name__)
app.config['DATABASE'] = './shorten_tv.db'
def connect_db():
return sqlite3.connect(app.config['DATABASE'])
def generate_short_code(url):
hashed_url = hashlib.md5(url.encode())
short_code = hashed_url.hexdigest()[:6]
return short_code
def save_url_mapping(short_code, original_url):
with connect_db() as db:
cursor = db.cursor()
cursor.execute('INSERT INTO urls (short_code, original_url) VALUES (?, ?)', (short_code, original_url))
db.commit()
def get_original_url(short_code):
with connect_db() as db:
cursor = db.cursor()
cursor.execute('SELECT original_url FROM urls WHERE short_code = ?', (short_code,))
result = cursor.fetchone()
if result:
return result[0]
else:
return None
@app.route('/<short_code>')
def redirect_to_original_url(short_code):
original_url = get_original_url(short_code)
if original_url:
return redirect(original_url)
else:
return 'Invalid short code!'
@app.route('/', methods=['POST'])
def shorten_url():
original_url = request.form['url']
short_code = generate_short_code(original_url)
save_url_mapping(short_code, original_url)
return f'Short URL: http://shorten.tv/{short_code}'
if __name__ == '__main__':
app.run()