Spaces:
Sleeping
Sleeping
| from flask import Flask, jsonify, request | |
| from flask_cors import CORS | |
| import string | |
| import random | |
| import g4f | |
| app = Flask(__name__) | |
| CORS(app) | |
| rooms = {} | |
| room_data = {} | |
| group_chat = {'chats': []} | |
| def index(): | |
| return "Hello 👋, This is CrickTech Stream API's Hub." | |
| def generate_room_code(): | |
| return ''.join(random.choices(string.ascii_uppercase, k=6)) | |
| def create_room(): | |
| room_code = generate_room_code() | |
| rooms[room_code] = {'players': [], 'started': True, 'process': 0, 'generated': False, 'story_content': '', | |
| 'reactions': 0, 'chats': [], 'pollCount': 0} | |
| player_name = request.json.get('name') | |
| if not player_name: | |
| return jsonify({'error': 'Player name is required'}) | |
| # Add the player to the room. | |
| player_id = len(rooms[room_code]['players']) + 1 | |
| rooms[room_code]['players'].append({'id': player_id, 'name': player_name}) | |
| return jsonify({'room_code': room_code}) | |
| def join_room(room_code): | |
| if request.method == 'POST': | |
| if room_code not in rooms: | |
| return jsonify({'noRoom': True}) | |
| player_name = request.json.get('name') | |
| if not player_name: | |
| return jsonify({'error': 'Player name is required'}) | |
| # Add the player to the room. | |
| player_id = len(rooms[room_code]['players']) + 1 | |
| rooms[room_code]['players'].append({'id': player_id, 'name': player_name}) | |
| return jsonify({'player_id': player_id, 'players': rooms[room_code]['players']}) | |
| if request.method == 'GET': | |
| if room_code not in rooms: | |
| return jsonify({'noRoom': True}) | |
| ready = False | |
| if len(rooms[room_code]['players']) == 5: # do it <= 5 | |
| ready = True | |
| return jsonify({'players': rooms[room_code]['players'], 'ready': ready, 'started': rooms[room_code]['started'], | |
| 'meta_data': rooms[room_code]}) | |
| def leave_room(room_code, player_id): | |
| if room_code not in rooms: | |
| return jsonify({'error': 'Room not found'}) | |
| rooms[room_code]['players'] = [player for player in rooms[room_code]['players'] if player['id'] != player_id] | |
| if player_id == 1 or not rooms[room_code]['players']: | |
| del rooms[room_code] | |
| return jsonify({'message': 'Player has left the room'}) | |
| def reaction_true(room_code): | |
| rooms[room_code]['reactions'] += 1 | |
| return jsonify({'success': True, 'likeCount': rooms[room_code]['reactions']}) | |
| def reaction_false(room_code): | |
| rooms[room_code]['reactions'] -= 1 | |
| return jsonify({'success': True, 'likeCount': rooms[room_code]['reactions']}) | |
| def room_chat(room_code): | |
| if room_code not in rooms: | |
| return jsonify({'success': False, 'error': 'Room not found'}) | |
| print(rooms[room_code]['chats']) | |
| return jsonify({'success': True, 'chats': rooms[room_code]['chats'], 'pollCount': rooms[room_code]['pollCount']}) | |
| def chat_input(room_code, player_id): | |
| data = request.get_json() | |
| if room_code not in rooms: | |
| return jsonify({'success': False, 'error': 'Room not found'}) | |
| rooms[room_code]['chats'].append({'id': player_id, 'text': data.get('text'), 'playerName': data.get('playerName')}) | |
| return jsonify({'success': True}) | |
| def poll_count(room_code): | |
| if room_code not in rooms: | |
| return jsonify({'success': False, 'error': 'Room not found'}) | |
| rooms[room_code]['pollCount'] += 1 | |
| return jsonify({'success': True, 'pollCount': rooms[room_code]['pollCount']}) | |
| def list_rooms(): | |
| room_info = {} | |
| for room_code, player in rooms.items(): | |
| room_info[room_code] = len(player['players']) | |
| return jsonify({'roomInfo': room_info}) | |
| def groupchat(): | |
| if request.method == 'POST': | |
| data = request.get_json() | |
| group_chat['chats'].append({'id': data.get('playerName'), 'text': data.get('text')}) | |
| return jsonify({'success': True}) | |
| if request.method == 'GET': | |
| print(group_chat['chats']) | |
| return jsonify({'success': True, 'chats': group_chat['chats']}) | |
| def chatbot(): | |
| if request.method == 'POST': | |
| data = request.get_json() | |
| query = data.get('query') | |
| # response = g4f.ChatCompletion.create( | |
| # model="gpt-3.5-turbo", | |
| # provider=g4f.Provider.You, | |
| # messages=[{"role": "user", "content": query}], | |
| # ) | |
| response = g4f.ChatCompletion.create( | |
| model="gpt-4-32k-0613", | |
| provider=g4f.Provider.GeekGpt, | |
| messages=[{"role": "user", "content": query}], | |
| ) | |
| return jsonify({'success': True, 'response': '#' + str(response)[1:]}) | |
| if __name__ == '__main__': | |
| app.run() |