smartfaker


Namesmartfaker JSON
Version 3.20.0 PyPI version JSON
download
home_pageNone
SummaryA powerful Asyncrhonous Python library for generating fake addresses, supporting bots, MTProto API frameworks, and Python scripts
upload_time2025-08-13 04:29:40
maintainerNone
docs_urlNone
authorNone
requires_python>=3.8
licenseMIT
keywords address-generator fake-data faker mtproto python-library telegram-bot
VCS
bugtrack_url
requirements pycountry
Travis-CI No Travis.
coveralls test coverage No coveralls.
            ## SmartFaker

A powerful Asynchronous Python library for generating fake addresses, supporting up to 181 countries. Ideal for bots, MTProto API frameworks, and Python scripts.

### Installation
```bash
pip install smartfaker
```

### Usage

#### Basic Asyncio Example
```python
import asyncio
from smartfaker import Faker

fake = Faker()

async def main():
    print("Enter country code (e.g., BD):")
    country_code = input().strip().upper()
    if not country_code:
        print("Country code is required.")
        return

    print("Enter amount (default 1):")
    amount_input = input().strip()
    amount = 1 if not amount_input else int(amount_input)

    try:
        addresses = await fake.address(country_code, amount)
        if amount == 1:
            print(addresses)
        else:
            for addr in addresses:
                print(addr)
    except ValueError as e:
        print(f"Error: {e}")

if __name__ == "__main__":
    asyncio.run(main())
	
```

	
#### Basic Pyrofork Example	

```python
import asyncio
import logging
from pyrogram import Client, filters
from pyrogram.types import Message, InlineKeyboardButton, InlineKeyboardMarkup
from pyrogram.enums import ParseMode
from smartfaker import Faker
import pycountry

LOGGER = logging.getLogger(__name__)
LOGGER.setLevel(logging.INFO)

COMMAND_PREFIX = ["/", ",", ".", "!", "#"]

app = Client(
    "my_bot",
    api_id=YOUR_API_ID,
    api_hash="YOUR_API_HASH",
    bot_token="YOUR_BOT_TOKEN"
)

fake = Faker()

page_data = {}

def get_flag(country_code):
    try:
        return ''.join(chr(0x1F1E6 + ord(c) - ord('A')) for c in country_code.upper())
    except Exception:
        return "🏚"

@app.on_message(filters.command("start", prefixes=COMMAND_PREFIX) & (filters.private | filters.group))
async def start_handler(client: Client, message: Message):
    welcome_text = (
        "**Welcome to SmartFaker Bot! 🚀**\n"
        "**━━━━━━━━━━━━━**\n"
        "Generate fake addresses easily!\n"
        "Use **/fake <code>** for an address (e.g., /fake BD).\n"
        "Use **/countries** to list available countries.\n"
        "**━━━━━━━━━━━━━**\n"
        "Powered by @ISmartCoder | Updates: t.me/TheSmartDev"
    )
    await client.send_message(message.chat.id, welcome_text, parse_mode=ParseMode.MARKDOWN)

@app.on_message(filters.command(["fake", "rnd"], prefixes=COMMAND_PREFIX) & (filters.private | filters.group))
async def fake_handler(client: Client, message: Message):
    if len(message.command) <= 1:
        await client.send_message(message.chat.id, "**❌ Please Provide A Country Code**", parse_mode=ParseMode.MARKDOWN)
        LOGGER.warning(f"Invalid command format: {message.text}")
        return
    
    country_code = message.command[1].upper()
    if country_code == "UK":
        country_code = "GB"
    
    generating_message = await client.send_message(message.chat.id, "**Generating Fake Address...**", parse_mode=ParseMode.MARKDOWN)
    
    try:
        data = await fake.address(country_code)
        flag_emoji = data['country_flag']
        keyboard = InlineKeyboardMarkup(inline_keyboard=[
            [InlineKeyboardButton("Copy Postal Code", callback_data=f"copy:{data['postal_code']}")]
        ])
        await generating_message.edit_text(
            f"**Address for {data['country']} {flag_emoji}**\n"
            f"**━━━━━━━━━━━━━**\n"
            f"**- Street :** `{data['street_address']}`\n"
            f"**- Full Name :** `{data['person_name']}`\n"
            f"**- City/Town/Village :** `{data['city']}`\n"
            f"**- Gender :** `{data['gender']}`\n"
            f"**- Postal Code :** `{data['postal_code']}`\n"
            f"**- Phone Number :** `{data['phone_number']}`\n"
            f"**- Country :** `{data['country']}`\n"
            f"**━━━━━━━━━━━━━**\n"
            f"**Click Below Button For Code 👇**",
            parse_mode=ParseMode.MARKDOWN,
            reply_markup=keyboard
        )
        LOGGER.info(f"Sent fake address for {country_code} in chat {message.chat.id}")
    except ValueError as e:
        LOGGER.error(f"Fake address error for country '{country_code}': {e}")
        await generating_message.edit_text("**❌ Sorry, Fake Address Generator Failed**", parse_mode=ParseMode.MARKDOWN)
    except Exception as e:
        LOGGER.error(f"Fake address error for country '{country_code}': {e}")
        await generating_message.edit_text("**❌ Sorry, Fake Address Generator Failed**", parse_mode=ParseMode.MARKDOWN)

@app.on_message(filters.command("countries", prefixes=COMMAND_PREFIX) & (filters.private | filters.group))
async def countries_handler(client: Client, message: Message):
    chat_id = message.chat.id
    page_data[chat_id] = page_data.get(chat_id, 0)
    
    countries = fake.countries()
    total_pages = (len(countries) + 9) // 10
    if not countries or total_pages == 0:
        await client.send_message(message.chat.id, "No countries available.")
        return
    
    await send_countries_page(client, chat_id, 0, page_data[chat_id])  # Use 0 for initial message_id

async def send_countries_page(client: Client, chat_id: int, message_id: int, page: int):
    countries = fake.countries()
    total_pages = (len(countries) + 9) // 10
    start_idx = page * 10
    end_idx = min(start_idx + 10, len(countries))
    current_countries = countries[start_idx:end_idx]
    
    response = "**Available Countries (Page {}/{}):**\n\n".format(page + 1, total_pages)
    for i, country in enumerate(current_countries, start=start_idx + 1):
        flag = get_flag(country['country_code'])
        response += f"**{i}. {country['country_name']}**\n"
        response += f"   - Code: {country['country_code']}\n"
        response += f"   - Flag: {flag}\n\n"
    
    markup = InlineKeyboardMarkup(inline_keyboard=[])
    row = []
    if page > 0:
        row.append(InlineKeyboardButton("Previous", callback_data=f"prev:{page}:{chat_id}"))
    if page < total_pages - 1:
        row.append(InlineKeyboardButton("Next", callback_data=f"next:{page}:{chat_id}"))
    if row:
        markup.inline_keyboard.append(row)
    
    if message_id == 0:
        sent_msg = await client.send_message(chat_id, response, parse_mode=ParseMode.MARKDOWN, reply_markup=markup)
        return  # No edit for initial send
    
    await client.edit_message_text(chat_id, message_id, response, parse_mode=ParseMode.MARKDOWN, reply_markup=markup)

@app.on_callback_query(filters.regex(r"^(prev|next):(\d+):(\d+)$"))
async def pagination_handler(client: Client, callback_query):
    action, page_str, chat_id_str = callback_query.data.split(':')
    page = int(page_str)
    chat_id = int(chat_id_str)
    
    total_pages = (len(fake.countries()) + 9) // 10
    if action == "prev" and page > 0:
        page -= 1
    elif action == "next" and page < total_pages - 1:
        page += 1
    
    await send_countries_page(client, chat_id, callback_query.message.id, page)
    await callback_query.answer()

if __name__ == "__main__":
    app.run()
	
```
	
            

Raw data

            {
    "_id": null,
    "home_page": null,
    "name": "smartfaker",
    "maintainer": null,
    "docs_url": null,
    "requires_python": ">=3.8",
    "maintainer_email": "ISmartCoder <abrixdhackz.info.me@gmail.com>",
    "keywords": "address-generator, fake-data, faker, mtproto, python-library, telegram-bot",
    "author": null,
    "author_email": "ISmartCoder <abrixdhackz.info.me@gmail.com>",
    "download_url": "https://files.pythonhosted.org/packages/49/cb/e033e9012ab2416de956116c846e33115db05f98d79d00998b7fad4379be/smartfaker-3.20.0.tar.gz",
    "platform": null,
    "description": "## SmartFaker\n\nA powerful Asynchronous Python library for generating fake addresses, supporting up to 181 countries. Ideal for bots, MTProto API frameworks, and Python scripts.\n\n### Installation\n```bash\npip install smartfaker\n```\n\n### Usage\n\n#### Basic Asyncio Example\n```python\nimport asyncio\nfrom smartfaker import Faker\n\nfake = Faker()\n\nasync def main():\n    print(\"Enter country code (e.g., BD):\")\n    country_code = input().strip().upper()\n    if not country_code:\n        print(\"Country code is required.\")\n        return\n\n    print(\"Enter amount (default 1):\")\n    amount_input = input().strip()\n    amount = 1 if not amount_input else int(amount_input)\n\n    try:\n        addresses = await fake.address(country_code, amount)\n        if amount == 1:\n            print(addresses)\n        else:\n            for addr in addresses:\n                print(addr)\n    except ValueError as e:\n        print(f\"Error: {e}\")\n\nif __name__ == \"__main__\":\n    asyncio.run(main())\n\t\n```\n\n\t\n#### Basic Pyrofork Example\t\n\n```python\nimport asyncio\nimport logging\nfrom pyrogram import Client, filters\nfrom pyrogram.types import Message, InlineKeyboardButton, InlineKeyboardMarkup\nfrom pyrogram.enums import ParseMode\nfrom smartfaker import Faker\nimport pycountry\n\nLOGGER = logging.getLogger(__name__)\nLOGGER.setLevel(logging.INFO)\n\nCOMMAND_PREFIX = [\"/\", \",\", \".\", \"!\", \"#\"]\n\napp = Client(\n    \"my_bot\",\n    api_id=YOUR_API_ID,\n    api_hash=\"YOUR_API_HASH\",\n    bot_token=\"YOUR_BOT_TOKEN\"\n)\n\nfake = Faker()\n\npage_data = {}\n\ndef get_flag(country_code):\n    try:\n        return ''.join(chr(0x1F1E6 + ord(c) - ord('A')) for c in country_code.upper())\n    except Exception:\n        return \"\ud83c\udfda\"\n\n@app.on_message(filters.command(\"start\", prefixes=COMMAND_PREFIX) & (filters.private | filters.group))\nasync def start_handler(client: Client, message: Message):\n    welcome_text = (\n        \"**Welcome to SmartFaker Bot! \ud83d\ude80**\\n\"\n        \"**\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501**\\n\"\n        \"Generate fake addresses easily!\\n\"\n        \"Use **/fake <code>** for an address (e.g., /fake BD).\\n\"\n        \"Use **/countries** to list available countries.\\n\"\n        \"**\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501**\\n\"\n        \"Powered by @ISmartCoder | Updates: t.me/TheSmartDev\"\n    )\n    await client.send_message(message.chat.id, welcome_text, parse_mode=ParseMode.MARKDOWN)\n\n@app.on_message(filters.command([\"fake\", \"rnd\"], prefixes=COMMAND_PREFIX) & (filters.private | filters.group))\nasync def fake_handler(client: Client, message: Message):\n    if len(message.command) <= 1:\n        await client.send_message(message.chat.id, \"**\u274c Please Provide A Country Code**\", parse_mode=ParseMode.MARKDOWN)\n        LOGGER.warning(f\"Invalid command format: {message.text}\")\n        return\n    \n    country_code = message.command[1].upper()\n    if country_code == \"UK\":\n        country_code = \"GB\"\n    \n    generating_message = await client.send_message(message.chat.id, \"**Generating Fake Address...**\", parse_mode=ParseMode.MARKDOWN)\n    \n    try:\n        data = await fake.address(country_code)\n        flag_emoji = data['country_flag']\n        keyboard = InlineKeyboardMarkup(inline_keyboard=[\n            [InlineKeyboardButton(\"Copy Postal Code\", callback_data=f\"copy:{data['postal_code']}\")]\n        ])\n        await generating_message.edit_text(\n            f\"**Address for {data['country']} {flag_emoji}**\\n\"\n            f\"**\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501**\\n\"\n            f\"**- Street :** `{data['street_address']}`\\n\"\n            f\"**- Full Name :** `{data['person_name']}`\\n\"\n            f\"**- City/Town/Village :** `{data['city']}`\\n\"\n            f\"**- Gender :** `{data['gender']}`\\n\"\n            f\"**- Postal Code :** `{data['postal_code']}`\\n\"\n            f\"**- Phone Number :** `{data['phone_number']}`\\n\"\n            f\"**- Country :** `{data['country']}`\\n\"\n            f\"**\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501**\\n\"\n            f\"**Click Below Button For Code \ud83d\udc47**\",\n            parse_mode=ParseMode.MARKDOWN,\n            reply_markup=keyboard\n        )\n        LOGGER.info(f\"Sent fake address for {country_code} in chat {message.chat.id}\")\n    except ValueError as e:\n        LOGGER.error(f\"Fake address error for country '{country_code}': {e}\")\n        await generating_message.edit_text(\"**\u274c Sorry, Fake Address Generator Failed**\", parse_mode=ParseMode.MARKDOWN)\n    except Exception as e:\n        LOGGER.error(f\"Fake address error for country '{country_code}': {e}\")\n        await generating_message.edit_text(\"**\u274c Sorry, Fake Address Generator Failed**\", parse_mode=ParseMode.MARKDOWN)\n\n@app.on_message(filters.command(\"countries\", prefixes=COMMAND_PREFIX) & (filters.private | filters.group))\nasync def countries_handler(client: Client, message: Message):\n    chat_id = message.chat.id\n    page_data[chat_id] = page_data.get(chat_id, 0)\n    \n    countries = fake.countries()\n    total_pages = (len(countries) + 9) // 10\n    if not countries or total_pages == 0:\n        await client.send_message(message.chat.id, \"No countries available.\")\n        return\n    \n    await send_countries_page(client, chat_id, 0, page_data[chat_id])  # Use 0 for initial message_id\n\nasync def send_countries_page(client: Client, chat_id: int, message_id: int, page: int):\n    countries = fake.countries()\n    total_pages = (len(countries) + 9) // 10\n    start_idx = page * 10\n    end_idx = min(start_idx + 10, len(countries))\n    current_countries = countries[start_idx:end_idx]\n    \n    response = \"**Available Countries (Page {}/{}):**\\n\\n\".format(page + 1, total_pages)\n    for i, country in enumerate(current_countries, start=start_idx + 1):\n        flag = get_flag(country['country_code'])\n        response += f\"**{i}. {country['country_name']}**\\n\"\n        response += f\"   - Code: {country['country_code']}\\n\"\n        response += f\"   - Flag: {flag}\\n\\n\"\n    \n    markup = InlineKeyboardMarkup(inline_keyboard=[])\n    row = []\n    if page > 0:\n        row.append(InlineKeyboardButton(\"Previous\", callback_data=f\"prev:{page}:{chat_id}\"))\n    if page < total_pages - 1:\n        row.append(InlineKeyboardButton(\"Next\", callback_data=f\"next:{page}:{chat_id}\"))\n    if row:\n        markup.inline_keyboard.append(row)\n    \n    if message_id == 0:\n        sent_msg = await client.send_message(chat_id, response, parse_mode=ParseMode.MARKDOWN, reply_markup=markup)\n        return  # No edit for initial send\n    \n    await client.edit_message_text(chat_id, message_id, response, parse_mode=ParseMode.MARKDOWN, reply_markup=markup)\n\n@app.on_callback_query(filters.regex(r\"^(prev|next):(\\d+):(\\d+)$\"))\nasync def pagination_handler(client: Client, callback_query):\n    action, page_str, chat_id_str = callback_query.data.split(':')\n    page = int(page_str)\n    chat_id = int(chat_id_str)\n    \n    total_pages = (len(fake.countries()) + 9) // 10\n    if action == \"prev\" and page > 0:\n        page -= 1\n    elif action == \"next\" and page < total_pages - 1:\n        page += 1\n    \n    await send_countries_page(client, chat_id, callback_query.message.id, page)\n    await callback_query.answer()\n\nif __name__ == \"__main__\":\n    app.run()\n\t\n```\n\t",
    "bugtrack_url": null,
    "license": "MIT",
    "summary": "A powerful Asyncrhonous Python library for generating fake addresses, supporting bots, MTProto API frameworks, and Python scripts",
    "version": "3.20.0",
    "project_urls": {
        "Changelog": "https://github.com/abirxdhack/TheSmartFaker/releases",
        "Documentation": "https://abirxdhack.github.io/SmartFakerDocs",
        "Homepage": "https://github.com/abirxdhack/TheSmartFaker",
        "Source": "https://github.com/abirxdhack/TheSmartFaker",
        "Tracker": "https://github.com/abirxdhack/TheSmartFaker/issues"
    },
    "split_keywords": [
        "address-generator",
        " fake-data",
        " faker",
        " mtproto",
        " python-library",
        " telegram-bot"
    ],
    "urls": [
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "62027ef9af8f40aeef9f8eefc1b153edb7516a0581873553dfc18b730989aafa",
                "md5": "8bca20a156b34c9f536bdc7b767d7bba",
                "sha256": "cb0ee384125ed228a88ae688d67606a6807d7d4c4b02443c33764dd119b7edbe"
            },
            "downloads": -1,
            "filename": "smartfaker-3.20.0-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "8bca20a156b34c9f536bdc7b767d7bba",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": ">=3.8",
            "size": 228052,
            "upload_time": "2025-08-13T04:29:37",
            "upload_time_iso_8601": "2025-08-13T04:29:37.024771Z",
            "url": "https://files.pythonhosted.org/packages/62/02/7ef9af8f40aeef9f8eefc1b153edb7516a0581873553dfc18b730989aafa/smartfaker-3.20.0-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "49cbe033e9012ab2416de956116c846e33115db05f98d79d00998b7fad4379be",
                "md5": "ce0e6afed8d1316dd495bfbeb5c0de33",
                "sha256": "c80755332048c3cce6033314e7cc7b76e030014e4405428915e21d0a7ef0cb26"
            },
            "downloads": -1,
            "filename": "smartfaker-3.20.0.tar.gz",
            "has_sig": false,
            "md5_digest": "ce0e6afed8d1316dd495bfbeb5c0de33",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.8",
            "size": 161337,
            "upload_time": "2025-08-13T04:29:40",
            "upload_time_iso_8601": "2025-08-13T04:29:40.132675Z",
            "url": "https://files.pythonhosted.org/packages/49/cb/e033e9012ab2416de956116c846e33115db05f98d79d00998b7fad4379be/smartfaker-3.20.0.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2025-08-13 04:29:40",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "abirxdhack",
    "github_project": "TheSmartFaker",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": false,
    "requirements": [
        {
            "name": "pycountry",
            "specs": []
        }
    ],
    "lcname": "smartfaker"
}
        
Elapsed time: 2.44540s