<h1 align="center"> WebChatGPT </h1>
<p align="center">
<a href="https://github.com/Simatwa/WebChatGPT/actions/workflows/python-test.yml"><img src="https://github.com/Simatwa/WebChatGPT/actions/workflows/python-test.yml/badge.svg" alt="Python Test"/></a>
<a href="LICENSE"><img alt="License" src="https://img.shields.io/static/v1?logo=GPL&color=Blue&message=GNUv3&label=License"/></a>
<a href="https://pypi.org/project/webchatgpt"><img alt="PyPi" src="https://img.shields.io/pypi/v/webchatgpt?color=green"/></a>
<a href="https://github.com/psf/black"><img alt="Black" src="https://img.shields.io/static/v1?logo=Black&label=Code-style&message=Black"/></a>
<a href="#"><img alt="Passing" src="https://img.shields.io/static/v1?logo=Docs&label=Docs&message=Passing&color=green"/></a>
<a href="#"><img alt="coverage" src="https://img.shields.io/static/v1?logo=Coverage&label=Coverage&message=90%&color=yellowgreen"/></a>
<a href="#" alt="progress"><img alt="Progress" src="https://img.shields.io/static/v1?logo=Progress&label=Progress&message=95%&color=green"/></a>
<a href="https://pepy.tech/project/webchatgpt"><img src="https://static.pepy.tech/personalized-badge/webchatgpt?period=total&units=international_system&left_color=grey&right_color=green&left_text=Downloads" alt="Downloads"></a>
<!--<a href="https://github.com/Simatwa/WebChatGPT/releases"><img src="https://img.shields.io/github/downloads/Simatwa/WebChatGPT/total?label=Downloads&color=success" alt="Downloads"></img></a> -->
<a href="https://github.com/Simatwa/WebChatGPT/releases"><img src="https://img.shields.io/github/v/release/Simatwa/WebChatGPT?color=success&label=Release&logo=github" alt="Latest release"></img></a>
<a href="https://github.com/Simatwa/WebChatGPT/releases"><img src="https://img.shields.io/github/release-date/Simatwa/WebChatGPT?label=Release date&logo=github" alt="release date"></img></a>
<a href="https://hits.seeyoufarm.com"><img src="https://hits.seeyoufarm.com/api/count/incr/badge.svg?url=https%3A%2F%2Fgithub.com/Simatwa/WebChatGPT"/></a>
<a href="https://wakatime.com/badge/github/Simatwa/WebChatGPT"><img src="https://wakatime.com/badge/github/Simatwa/WebChatGPT.svg" alt="wakatime"></a>
</p>
<p align="center">
<img width="600" height="auto" src="https://github.com/Simatwa/WebChatGPT/blob/main/assets/demo.gif?raw=true"/>
</p>
<p align="center">
<a href="https://en.wikipedia.org/wiki/Reverse_engineering">Reverse Engineering</a> of ChatGPT in Python.
</p>
Unlike the [official Openai library](https://github.com/openai/openai-python), this library makes REST-API calls to [ChatGPT](https://chat.openai.com) via the **browser** endpoints. *No API-KEY required*
```python
from WebChatGPT import ChatGPT
bot = ChatGPT(
"<path-to-openai-cookies.json>"
)
response = bot.chat('<Your prompt>')
print(response)
#Ouput : What can I do for you today?
```
## Prerequisites
- [x] Python>=3.10 Installed
- [x] Chrome or Firefox browser
- [x] [export-cookie-for-puppeteer](https://github.com/ktty1220/export-cookie-for-puppeteer) extension installed.
## Installation & usage
### Installation
Either of the following ways will get you ready :
1. From pypi:
```
pip install --upgrade webchatgpt
```
2. From source
```
pip install git+https://github.com/Simatwa/WebChatGPT.git
```
## Usage
The script utilizes [HTTP Cookies](https://en.wikipedia.org/wiki/HTTP_cookie) and [OAuth](https://en.wikipedia.org/wiki/OAuth) to justify the REST-API requests at [Openai](https://openai.com).
In order to do that, we will use the [export-cookie-for-puppeteer](https://github.com/ktty1220/export-cookie-for-puppeteer) extension to extract the cookies which will later on used to retrieve the OAuth.
### Procedure
1. Login to https://chat.openai.com
2. Upon successfull login, use **Export cookie JSON File Puppeteer** to export cookies. If you haven't installed the extension, here are the quick installation links for you.
- [Google Chrome](https://chrome.google.com/webstore/detail/nmckokihipjgplolmcmjakknndddifde)
- [Firefox](https://addons.mozilla.org/ja/firefox/addon/%E3%82%AF%E3%83%83%E3%82%AD%E3%83%BCjson%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E5%87%BA%E5%8A%9B-for-puppeteer/)
By doing that you are good to go.
- Converse Interactively:
```
$ webchatgpt interactive -C <path-to-openai-cookie-file.json> "<your startup prompt though not a must>"
```
- Have a quick response
```
$ webchatgpt generate -C <path-to-openai-cookie-file.json> "<your prompt here>"
```
- Since `generate` is the default option so something like this will this workout. `$ webchatgpt -C <path-to-openai-cookie-file.json> "<your prompt>"`
Alternatives to `-C <path-to-openai-cookie-file.json>` :
On the current directory of your **terminal**,create a [`.env`](https://github.com/Simatwa/WebChatGPT/blob/main/env) file and save path to the cookie-file in the format :
```
openai_cookie_file=<path-to-cookie-file>
```
Or simply make path to the cookie file an environment variable identified by `openai_cookie_file`. By that you'll just have to use less commands to get your work done e.g `webchatgpt "Nmap command for scanning SMB vulnerabilty on 192.168.0.1" -q | grep '$' > scan_smb.sh`
<details>
<summary>
For more info; append `--help` to the command
</summary>
<details>
<summary>
`$ webchatgpt --help`
</summary>
```
Usage: webchatgpt [OPTIONS] COMMAND [ARGS]...
Reverse Engineered ChatGPT Web-version
Options:
--help Show this message and exit.
Commands:
generate Generate a quick response with ChatGPT
interactive Chat with ChatGPT interactively
```
</details>
<details>
<summary>
` $ webchatgpt generate --help`
</summary>
```
Usage: webchatgpt generate [OPTIONS]
Generate a quick response with ChatGPT
Options:
-C, --cookie-path PATH Path to .json file containing cookies for
`chat.openai.com`
-M, --model TEXT ChatGPT's model to be used
-I, --index INTEGER Conversation index to resume from
-P, --prompt TEXT Start conversation with this messsage
--help Show this message and exit.
```
</details>
<details>
<summary>
` $ webchatgpt interactive --help`
</summary>
```
Usage: webchatgpt interactive [OPTIONS]
Chat with ChatGPT interactively
Options:
-C, --cookie-path PATH Path to .json file containing cookies for
`chat.openai.com`
-M, --model TEXT ChatGPT's model to be used
-I, --index INTEGER Conversation index to resume from
-P, --prompt TEXT Start conversation with this messsage
-B, --busy-bar-index INTEGER RANGE
Busy bar index [0:/, 1:■█■■■] [0<=x<=1]
--help Show this message and exit.
```
</details>
Running `h` while in interactive prompt:
```
╒════╤════════════════════════╤═══════════════════════════════════════╕
│ │ Command │ Action │
╞════╪════════════════════════╪═══════════════════════════════════════╡
│ 0 │ h │ Show this help info │
├────┼────────────────────────┼───────────────────────────────────────┤
│ 1 │ history │ Show conversation history │
├────┼────────────────────────┼───────────────────────────────────────┤
│ 2 │ share │ Share conversation by link │
├────┼────────────────────────┼───────────────────────────────────────┤
│ 3 │ stop_share │ Revoke shared conversation link │
├────┼────────────────────────┼───────────────────────────────────────┤
│ 4 │ rename │ Rename conversation title │
├────┼────────────────────────┼───────────────────────────────────────┤
│ 5 │ archive │ Archive or unarchive a conversation │
├────┼────────────────────────┼───────────────────────────────────────┤
│ 6 │ shared_conversations │ Show shared conversations │
├────┼────────────────────────┼───────────────────────────────────────┤
│ 7 │ previous_conversations │ Show previous conversations │
├────┼────────────────────────┼───────────────────────────────────────┤
│ 8 │ delete_conversation │ Delete a particular conversation │
├────┼────────────────────────┼───────────────────────────────────────┤
│ 9 │ prompts │ Generate random prompts │
├────┼────────────────────────┼───────────────────────────────────────┤
│ 10 │ account_info │ ChatGPT account info/setings │
├────┼────────────────────────┼───────────────────────────────────────┤
│ 11 │ ask │ Show raw response from ChatGPT │
├────┼────────────────────────┼───────────────────────────────────────┤
│ 12 │ auth │ Show current user auth info │
├────┼────────────────────────┼───────────────────────────────────────┤
│ 13 │ migrate │ Shift to another conversation │
├────┼────────────────────────┼───────────────────────────────────────┤
│ 14 │ set_theme │ Set theme for displaying codes │
├────┼────────────────────────┼───────────────────────────────────────┤
│ 15 │ copy_this │ Copy last response │
├────┼────────────────────────┼───────────────────────────────────────┤
│ 16 │ with_copied │ Attach last copied text to the prompt │
├────┼────────────────────────┼───────────────────────────────────────┤
│ 17 │ clear │ Clear console │
├────┼────────────────────────┼───────────────────────────────────────┤
│ 18 │ ./<command> │ Run system command │
├────┼────────────────────────┼───────────────────────────────────────┤
│ 19 │ <any other> │ Interact with ChatGPT │
├────┼────────────────────────┼───────────────────────────────────────┤
│ 20 │ exit │ Quit Program │
╘════╧════════════════════════╧═══════════════════════════════════════╛
```
</details>
If `$ webchatgpt` doesn't look cool on you, there's this workaround `python -m WebChatGPT`
Starting from [v0.2.4](https://github.com/Simatwa/WebChatGPT/releases) onwards, shortcut to `$ webchatgpt` is `$ wbc`.
## [Developer Documentation](https://github.com/Simatwa/WebChatGPT/blob/main/docs/DEVELOPER.md)
## ToDo
- [x] Stream Response
- [ ] Create new conversation
- [ ] Implement Your idea
- [ ] Fix my bad code.
## Contributions
Anyone is free to [fork](https://github.com/Simatwa/WebChatGPT/fork), submit [pull request](https://github.com/Simatwa/WebChatGPT/pulls/new) as well as submitting [issues](https://github.com/Simatwa/WebChatGPT/issues/new).
Consider taking a look at the [flow of events info](https://github.com/Simatwa/WebChatGPT/blob/main/docs/operations_flow.md) for the case of a [pull request](https://github.com/Simatwa/WebChatGPT/pulls).
## Acknowledgements
1. [x] [Http-Tracker](https://github.com/venukbh/http-tracker).
2. [x] [export-cookie-for-puppeteer](https://github.com/ktty1220/export-cookie-for-puppeteer)
## Special Thanks
- [x] You
If you don't want to follow all those steps; there this script that works out of the box. No API key needed at all, not even the cookies. Just installation and you're good to go. Check out [tgpt2](https://github.com/Simatwa/tgpt2/).
To those wishing to use the Official Openai API endpoints + GoogleBard at console environment; purpose to check out [GPT-CLI](https://github.com/Simatwa/GPT-CLI)
## Disclaimer
This project is a reverse-engineered implementation of the ChatGPT web version and is intended for educational and research purposes only. It is not affiliated with or endorsed by OpenAI. The code in this repository is based on reverse engineering efforts and may not perfectly replicate the functionalities or behavior of the original ChatGPT web version. Usage of this code is at your own risk, and the maintainers of this repository are not responsible for any misuse or unintended use of the generated content. Please refer to OpenAI's policies and terms of service regarding the use of their services and models. By using this repository, you agree to comply with all relevant laws and OpenAI's terms of service.
Raw data
{
"_id": null,
"home_page": "https://github.com/Simatwa/WebChatGPT",
"name": "webchatgpt",
"maintainer": "Smartwa",
"docs_url": null,
"requires_python": ">=3.10",
"maintainer_email": null,
"keywords": "chatgpt, webchatgpt, gpt, chatgpt-cli, chatgpt-sdk, chatgpt-api",
"author": "Smartwa",
"author_email": "simatwacaleb@proton.me",
"download_url": "https://files.pythonhosted.org/packages/4d/90/79e2ca5d0325ba77bb1f2fb4a6283e78c979944d10bb2f95ca128f55fb7e/webchatgpt-0.3.0.tar.gz",
"platform": null,
"description": "<h1 align=\"center\"> WebChatGPT </h1>\n\n<p align=\"center\">\n<a href=\"https://github.com/Simatwa/WebChatGPT/actions/workflows/python-test.yml\"><img src=\"https://github.com/Simatwa/WebChatGPT/actions/workflows/python-test.yml/badge.svg\" alt=\"Python Test\"/></a>\n<a href=\"LICENSE\"><img alt=\"License\" src=\"https://img.shields.io/static/v1?logo=GPL&color=Blue&message=GNUv3&label=License\"/></a>\n<a href=\"https://pypi.org/project/webchatgpt\"><img alt=\"PyPi\" src=\"https://img.shields.io/pypi/v/webchatgpt?color=green\"/></a>\n<a href=\"https://github.com/psf/black\"><img alt=\"Black\" src=\"https://img.shields.io/static/v1?logo=Black&label=Code-style&message=Black\"/></a>\n<a href=\"#\"><img alt=\"Passing\" src=\"https://img.shields.io/static/v1?logo=Docs&label=Docs&message=Passing&color=green\"/></a>\n<a href=\"#\"><img alt=\"coverage\" src=\"https://img.shields.io/static/v1?logo=Coverage&label=Coverage&message=90%&color=yellowgreen\"/></a>\n<a href=\"#\" alt=\"progress\"><img alt=\"Progress\" src=\"https://img.shields.io/static/v1?logo=Progress&label=Progress&message=95%&color=green\"/></a>\n<a href=\"https://pepy.tech/project/webchatgpt\"><img src=\"https://static.pepy.tech/personalized-badge/webchatgpt?period=total&units=international_system&left_color=grey&right_color=green&left_text=Downloads\" alt=\"Downloads\"></a>\n<!--<a href=\"https://github.com/Simatwa/WebChatGPT/releases\"><img src=\"https://img.shields.io/github/downloads/Simatwa/WebChatGPT/total?label=Downloads&color=success\" alt=\"Downloads\"></img></a> -->\n<a href=\"https://github.com/Simatwa/WebChatGPT/releases\"><img src=\"https://img.shields.io/github/v/release/Simatwa/WebChatGPT?color=success&label=Release&logo=github\" alt=\"Latest release\"></img></a>\n<a href=\"https://github.com/Simatwa/WebChatGPT/releases\"><img src=\"https://img.shields.io/github/release-date/Simatwa/WebChatGPT?label=Release date&logo=github\" alt=\"release date\"></img></a>\n<a href=\"https://hits.seeyoufarm.com\"><img src=\"https://hits.seeyoufarm.com/api/count/incr/badge.svg?url=https%3A%2F%2Fgithub.com/Simatwa/WebChatGPT\"/></a>\n<a href=\"https://wakatime.com/badge/github/Simatwa/WebChatGPT\"><img src=\"https://wakatime.com/badge/github/Simatwa/WebChatGPT.svg\" alt=\"wakatime\"></a>\n</p>\n\n<p align=\"center\">\n<img width=\"600\" height=\"auto\" src=\"https://github.com/Simatwa/WebChatGPT/blob/main/assets/demo.gif?raw=true\"/>\n</p>\n\n<p align=\"center\">\n<a href=\"https://en.wikipedia.org/wiki/Reverse_engineering\">Reverse Engineering</a> of ChatGPT in Python.\n</p> \n\nUnlike the [official Openai library](https://github.com/openai/openai-python), this library makes REST-API calls to [ChatGPT](https://chat.openai.com) via the **browser** endpoints. *No API-KEY required*\n\n```python\nfrom WebChatGPT import ChatGPT\nbot = ChatGPT(\n \"<path-to-openai-cookies.json>\"\n)\nresponse = bot.chat('<Your prompt>')\n\nprint(response)\n#Ouput : What can I do for you today?\n```\n\n## Prerequisites\n\n- [x] Python>=3.10 Installed\n- [x] Chrome or Firefox browser\n- [x] [export-cookie-for-puppeteer](https://github.com/ktty1220/export-cookie-for-puppeteer) extension installed.\n\n## Installation & usage\n\n### Installation\n\nEither of the following ways will get you ready :\n\n1. From pypi:\n \n ```\n pip install --upgrade webchatgpt\n ```\n\n2. From source\n\n```\npip install git+https://github.com/Simatwa/WebChatGPT.git\n```\n\n## Usage\n\nThe script utilizes [HTTP Cookies](https://en.wikipedia.org/wiki/HTTP_cookie) and [OAuth](https://en.wikipedia.org/wiki/OAuth) to justify the REST-API requests at [Openai](https://openai.com). \n\nIn order to do that, we will use the [export-cookie-for-puppeteer](https://github.com/ktty1220/export-cookie-for-puppeteer) extension to extract the cookies which will later on used to retrieve the OAuth.\n\n### Procedure\n\n1. Login to https://chat.openai.com\n2. Upon successfull login, use **Export cookie JSON File Puppeteer** to export cookies. If you haven't installed the extension, here are the quick installation links for you. \n - [Google Chrome](https://chrome.google.com/webstore/detail/nmckokihipjgplolmcmjakknndddifde)\n- [Firefox](https://addons.mozilla.org/ja/firefox/addon/%E3%82%AF%E3%83%83%E3%82%AD%E3%83%BCjson%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E5%87%BA%E5%8A%9B-for-puppeteer/)\n\nBy doing that you are good to go.\n\n\n- Converse Interactively:\n\n```\n$ webchatgpt interactive -C <path-to-openai-cookie-file.json> \"<your startup prompt though not a must>\"\n```\n\n- Have a quick response\n\n```\n$ webchatgpt generate -C <path-to-openai-cookie-file.json> \"<your prompt here>\"\n```\n\n- Since `generate` is the default option so something like this will this workout. `$ webchatgpt -C <path-to-openai-cookie-file.json> \"<your prompt>\"`\n\nAlternatives to `-C <path-to-openai-cookie-file.json>` :\n\nOn the current directory of your **terminal**,create a [`.env`](https://github.com/Simatwa/WebChatGPT/blob/main/env) file and save path to the cookie-file in the format :\n\n```\nopenai_cookie_file=<path-to-cookie-file>\n```\n\nOr simply make path to the cookie file an environment variable identified by `openai_cookie_file`. By that you'll just have to use less commands to get your work done e.g `webchatgpt \"Nmap command for scanning SMB vulnerabilty on 192.168.0.1\" -q | grep '$' > scan_smb.sh`\n\n<details>\n\n<summary>\n\nFor more info; append `--help` to the command\n\n</summary>\n\n<details>\n\n<summary>\n\n`$ webchatgpt --help`\n\n</summary>\n\n\n```\nUsage: webchatgpt [OPTIONS] COMMAND [ARGS]...\n\n Reverse Engineered ChatGPT Web-version\n\nOptions:\n --help Show this message and exit.\n\nCommands:\n generate Generate a quick response with ChatGPT\n interactive Chat with ChatGPT interactively\n```\n\n</details>\n\n\n<details>\n\n<summary>\n\n` $ webchatgpt generate --help`\n\n</summary>\n\n\n```\nUsage: webchatgpt generate [OPTIONS]\n\n Generate a quick response with ChatGPT\n\nOptions:\n -C, --cookie-path PATH Path to .json file containing cookies for\n `chat.openai.com`\n -M, --model TEXT ChatGPT's model to be used\n -I, --index INTEGER Conversation index to resume from\n -P, --prompt TEXT Start conversation with this messsage\n --help Show this message and exit.\n```\n\n</details>\n\n\n<details>\n\n<summary>\n\n` $ webchatgpt interactive --help`\n\n</summary>\n\n```\nUsage: webchatgpt interactive [OPTIONS]\n\n Chat with ChatGPT interactively\n\nOptions:\n -C, --cookie-path PATH Path to .json file containing cookies for\n `chat.openai.com`\n -M, --model TEXT ChatGPT's model to be used\n -I, --index INTEGER Conversation index to resume from\n -P, --prompt TEXT Start conversation with this messsage\n -B, --busy-bar-index INTEGER RANGE\n Busy bar index [0:/, 1:\u25a0\u2588\u25a0\u25a0\u25a0] [0<=x<=1]\n --help Show this message and exit.\n```\n\n</details>\n\nRunning `h` while in interactive prompt:\n\n```\n\u2552\u2550\u2550\u2550\u2550\u2564\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2564\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2555\n\u2502 \u2502 Command \u2502 Action \u2502\n\u255e\u2550\u2550\u2550\u2550\u256a\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u256a\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2561\n\u2502 0 \u2502 h \u2502 Show this help info \u2502\n\u251c\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n\u2502 1 \u2502 history \u2502 Show conversation history \u2502\n\u251c\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n\u2502 2 \u2502 share \u2502 Share conversation by link \u2502\n\u251c\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n\u2502 3 \u2502 stop_share \u2502 Revoke shared conversation link \u2502\n\u251c\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n\u2502 4 \u2502 rename \u2502 Rename conversation title \u2502\n\u251c\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n\u2502 5 \u2502 archive \u2502 Archive or unarchive a conversation \u2502\n\u251c\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n\u2502 6 \u2502 shared_conversations \u2502 Show shared conversations \u2502\n\u251c\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n\u2502 7 \u2502 previous_conversations \u2502 Show previous conversations \u2502\n\u251c\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n\u2502 8 \u2502 delete_conversation \u2502 Delete a particular conversation \u2502\n\u251c\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n\u2502 9 \u2502 prompts \u2502 Generate random prompts \u2502\n\u251c\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n\u2502 10 \u2502 account_info \u2502 ChatGPT account info/setings \u2502\n\u251c\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n\u2502 11 \u2502 ask \u2502 Show raw response from ChatGPT \u2502\n\u251c\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n\u2502 12 \u2502 auth \u2502 Show current user auth info \u2502\n\u251c\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n\u2502 13 \u2502 migrate \u2502 Shift to another conversation \u2502\n\u251c\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n\u2502 14 \u2502 set_theme \u2502 Set theme for displaying codes \u2502\n\u251c\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n\u2502 15 \u2502 copy_this \u2502 Copy last response \u2502\n\u251c\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n\u2502 16 \u2502 with_copied \u2502 Attach last copied text to the prompt \u2502\n\u251c\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n\u2502 17 \u2502 clear \u2502 Clear console \u2502\n\u251c\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n\u2502 18 \u2502 ./<command> \u2502 Run system command \u2502\n\u251c\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n\u2502 19 \u2502 <any other> \u2502 Interact with ChatGPT \u2502\n\u251c\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n\u2502 20 \u2502 exit \u2502 Quit Program \u2502\n\u2558\u2550\u2550\u2550\u2550\u2567\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2567\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u255b\n```\n\n</details>\n\nIf `$ webchatgpt` doesn't look cool on you, there's this workaround `python -m WebChatGPT`\n\nStarting from [v0.2.4](https://github.com/Simatwa/WebChatGPT/releases) onwards, shortcut to `$ webchatgpt` is `$ wbc`.\n\n## [Developer Documentation](https://github.com/Simatwa/WebChatGPT/blob/main/docs/DEVELOPER.md)\n\n## ToDo\n\n- [x] Stream Response\n- [ ] Create new conversation\n- [ ] Implement Your idea\n- [ ] Fix my bad code.\n\n## Contributions\n\nAnyone is free to [fork](https://github.com/Simatwa/WebChatGPT/fork), submit [pull request](https://github.com/Simatwa/WebChatGPT/pulls/new) as well as submitting [issues](https://github.com/Simatwa/WebChatGPT/issues/new).\n\nConsider taking a look at the [flow of events info](https://github.com/Simatwa/WebChatGPT/blob/main/docs/operations_flow.md) for the case of a [pull request](https://github.com/Simatwa/WebChatGPT/pulls).\n\n## Acknowledgements\n\n1. [x] [Http-Tracker](https://github.com/venukbh/http-tracker).\n2. [x] [export-cookie-for-puppeteer](https://github.com/ktty1220/export-cookie-for-puppeteer)\n\n## Special Thanks\n\n- [x] You\n\nIf you don't want to follow all those steps; there this script that works out of the box. No API key needed at all, not even the cookies. Just installation and you're good to go. Check out [tgpt2](https://github.com/Simatwa/tgpt2/).\n\nTo those wishing to use the Official Openai API endpoints + GoogleBard at console environment; purpose to check out [GPT-CLI](https://github.com/Simatwa/GPT-CLI)\n\n## Disclaimer\n\nThis project is a reverse-engineered implementation of the ChatGPT web version and is intended for educational and research purposes only. It is not affiliated with or endorsed by OpenAI. The code in this repository is based on reverse engineering efforts and may not perfectly replicate the functionalities or behavior of the original ChatGPT web version. Usage of this code is at your own risk, and the maintainers of this repository are not responsible for any misuse or unintended use of the generated content. Please refer to OpenAI's policies and terms of service regarding the use of their services and models. By using this repository, you agree to comply with all relevant laws and OpenAI's terms of service.\n",
"bugtrack_url": null,
"license": "GNU v3",
"summary": "Reverse Engineering of ChatGPT Web-Version",
"version": "0.3.0",
"project_urls": {
"Bug Report": "https://github.com/Simatwa/WebChatGPT/issues/new",
"Documentation": "https://github.com/Simatwa/WebChatGPT/blob/main/docs/README.md",
"Download": "https://github.com/Simatwa/WebChatGPT/releases",
"Homepage": "https://github.com/Simatwa/WebChatGPT",
"Issue Tracker": "https://github.com/Simatwa/WebChatGPT/issues",
"Source Code": "https://github.com/Simatwa/WebChatGPT"
},
"split_keywords": [
"chatgpt",
" webchatgpt",
" gpt",
" chatgpt-cli",
" chatgpt-sdk",
" chatgpt-api"
],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "c7fb16611f06e814fbdd9bd4ca7f3b72bbd8e3bfe423be68fd57ca0ddd47e56c",
"md5": "cf299e647def05062fcfd6f1d77126b6",
"sha256": "c55584ee253c7d6a9efd4ca5331bde828a9ba95faa9539a84173ae4e32f36268"
},
"downloads": -1,
"filename": "webchatgpt-0.3.0-py3-none-any.whl",
"has_sig": false,
"md5_digest": "cf299e647def05062fcfd6f1d77126b6",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.10",
"size": 35580,
"upload_time": "2024-04-15T15:32:03",
"upload_time_iso_8601": "2024-04-15T15:32:03.225450Z",
"url": "https://files.pythonhosted.org/packages/c7/fb/16611f06e814fbdd9bd4ca7f3b72bbd8e3bfe423be68fd57ca0ddd47e56c/webchatgpt-0.3.0-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "4d9079e2ca5d0325ba77bb1f2fb4a6283e78c979944d10bb2f95ca128f55fb7e",
"md5": "81bb956a92b6c63a3911ee7b82678cbf",
"sha256": "71906b31917e9b1ffb0a0762a3ca7b9c8fbb3a8fe72cd57a941906f7f17ac6c6"
},
"downloads": -1,
"filename": "webchatgpt-0.3.0.tar.gz",
"has_sig": false,
"md5_digest": "81bb956a92b6c63a3911ee7b82678cbf",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.10",
"size": 38454,
"upload_time": "2024-04-15T15:32:05",
"upload_time_iso_8601": "2024-04-15T15:32:05.030614Z",
"url": "https://files.pythonhosted.org/packages/4d/90/79e2ca5d0325ba77bb1f2fb4a6283e78c979944d10bb2f95ca128f55fb7e/webchatgpt-0.3.0.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2024-04-15 15:32:05",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "Simatwa",
"github_project": "WebChatGPT",
"travis_ci": false,
"coveralls": false,
"github_actions": true,
"requirements": [
{
"name": "requests",
"specs": [
[
"==",
"2.31.0"
]
]
},
{
"name": "python-dotenv",
"specs": [
[
"==",
"1.0.0"
]
]
},
{
"name": "click",
"specs": [
[
"==",
"8.1.3"
]
]
},
{
"name": "rich",
"specs": [
[
"==",
"13.3.4"
]
]
},
{
"name": "clipman",
"specs": [
[
"==",
"3.1.0"
]
]
},
{
"name": "pyperclip",
"specs": [
[
"==",
"1.8.2"
]
]
}
],
"lcname": "webchatgpt"
}