from flask import Flask, render_template_string, request, redirect, url_for, flash from flask_sqlalchemy import SQLAlchemy import secrets import os from werkzeug.utils import secure_filename app = Flask(__name__) app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///links.db' app.config['UPLOAD_FOLDER'] = 'static/uploads' app.config['SECRET_KEY'] = 'your-very-secret-key-123' app.config['ALLOWED_EXTENSIONS'] = {'png', 'jpg', 'jpeg', 'gif'} db = SQLAlchemy(app) class Link(db.Model): id = db.Column(db.Integer, primary_key=True) url = db.Column(db.String(500), nullable=False) image_path = db.Column(db.String(200)) description = db.Column(db.String(1000)) short_code = db.Column(db.String(10), unique=True) def allowed_file(filename): return '.' in filename and \ filename.rsplit('.', 1)[1].lower() in app.config['ALLOWED_EXTENSIONS'] with app.app_context(): db.create_all() BASE_HTML = ''' میری ویب سائٹ

میری ویب سائٹ

{% with messages = get_flashed_messages(with_categories=true) %} {% if messages %} {% for category, message in messages %}
{{ message }}
{% endfor %} {% endif %} {% endwith %} {% block content %}{% endblock %} ''' HOME_HTML = BASE_HTML.replace('{% block content %}{% endblock %}', '''

نیا لنک شامل کریں

تمام لنکس

{% if links %} {% for link in links %} {% endfor %} {% else %}

کوئی لنک موجود نہیں ہے

{% endif %} ''') @app.route('/') def home(): links = Link.query.order_by(Link.id.desc()).all() return render_template_string(HOME_HTML, links=links, query='') @app.route('/create', methods=['POST']) def create(): url = request.form.get('url', '').strip() description = request.form.get('description', '').strip() image = request.files.get('image') if not url: flash('error', 'URL ضروری ہے') return redirect(url_for('home')) short_code = secrets.token_urlsafe(5) image_path = None if image and image.filename: if not allowed_file(image.filename): flash('error', 'صرف تصاویر (PNG, JPG, JPEG, GIF) اپلوڈ کی جا سکتی ہیں') return redirect(url_for('home')) filename = secure_filename(image.filename) os.makedirs(app.config['UPLOAD_FOLDER'], exist_ok=True) image_path = os.path.join(app.config['UPLOAD_FOLDER'], filename) image.save(image_path) image_path = f"uploads/{filename}" try: new_link = Link( url=url, image_path=image_path, description=description, short_code=short_code ) db.session.add(new_link) db.session.commit() flash('success', 'لنک کامیابی سے محفوظ ہو گیا') except Exception as e: db.session.rollback() flash('error', 'لنک محفوظ کرنے میں خرابی') return redirect(url_for('home')) @app.route('/search') def search(): query = request.args.get('q', '').strip() if query: links = Link.query.filter( Link.url.contains(query) | Link.description.contains(query) ).order_by(Link.id.desc()).all() else: links = Link.query.order_by(Link.id.desc()).all() return render_template_string(HOME_HTML, links=links, query=query) if __name__ == '__main__': os.makedirs(app.config['UPLOAD_FOLDER'], exist_ok=True) app.run(debug=True)