#!/bin/bash # Extract and Upload Cookies - All-in-one script # This script extracts YouTube cookies from your browser and uploads them to the API set -e # Exit on error # Colors for pretty output RED='\033[0;31m' GREEN='\033[0;32m' YELLOW='\033[1;33m' BLUE='\033[0;34m' NC='\033[0m' # No Color # Configuration API_URL="${API_URL:-http://localhost:8888}" API_TOKEN="${API_TOKEN:-}" TEMP_COOKIES="/tmp/youtube-cookies-temp.txt" echo -e "${BLUE}========================================${NC}" echo -e "${BLUE}YouTube Cookies Extractor & Uploader${NC}" echo -e "${BLUE}========================================${NC}" echo "" # Step 1: Check if API token is set if [ -z "$API_TOKEN" ]; then echo -e "${YELLOW}âš ī¸ API_TOKEN not set in environment${NC}" echo -e "Please enter your API token:" read -s API_TOKEN echo "" fi # Step 2: Detect available browsers echo -e "${BLUE}🔍 Detecting browsers...${NC}" AVAILABLE_BROWSERS=() if command -v google-chrome &> /dev/null || command -v chromium &> /dev/null || [ -d "$HOME/.config/google-chrome" ] || [ -d "$HOME/.config/chromium" ]; then AVAILABLE_BROWSERS+=("chrome") fi if command -v firefox &> /dev/null || [ -d "$HOME/.mozilla/firefox" ]; then AVAILABLE_BROWSERS+=("firefox") fi if command -v microsoft-edge &> /dev/null || [ -d "$HOME/.config/microsoft-edge" ]; then AVAILABLE_BROWSERS+=("edge") fi if [ ${#AVAILABLE_BROWSERS[@]} -eq 0 ]; then echo -e "${RED}❌ No supported browsers found${NC}" echo -e "${YELLOW}Supported browsers: Chrome, Firefox, Edge${NC}" echo "" echo -e "${YELLOW}Alternative: Manually export cookies${NC}" echo -e "1. Install browser extension 'Get cookies.txt LOCALLY'" echo -e "2. Visit youtube.com and login" echo -e "3. Export cookies to a file" echo -e "4. Run: curl -X POST -H \"X-API-Key: \$API_TOKEN\" -F \"cookies=@youtube-cookies.txt\" $API_URL/admin/upload-cookies" exit 1 fi echo -e "${GREEN}✓ Found browsers:${NC} ${AVAILABLE_BROWSERS[*]}" echo "" # Step 3: Let user choose browser if [ ${#AVAILABLE_BROWSERS[@]} -eq 1 ]; then BROWSER="${AVAILABLE_BROWSERS[0]}" echo -e "${GREEN}Using browser: $BROWSER${NC}" else echo -e "${YELLOW}Multiple browsers found. Choose one:${NC}" select BROWSER in "${AVAILABLE_BROWSERS[@]}"; do if [ -n "$BROWSER" ]; then break fi done fi echo "" # Step 4: Check if yt-dlp is installed if ! command -v yt-dlp &> /dev/null; then echo -e "${RED}❌ yt-dlp is not installed${NC}" echo -e "${YELLOW}Install with: pip install yt-dlp${NC}" echo -e "${YELLOW}Or: sudo apt install yt-dlp${NC}" exit 1 fi # Step 5: Extract cookies using yt-dlp echo -e "${BLUE}đŸĒ Extracting cookies from $BROWSER...${NC}" if yt-dlp --cookies-from-browser "$BROWSER" --cookies "$TEMP_COOKIES" --no-download "https://www.youtube.com" > /dev/null 2>&1; then echo -e "${GREEN}✓ Cookies extracted successfully${NC}" else echo -e "${RED}❌ Failed to extract cookies${NC}" echo -e "${YELLOW}Make sure:${NC}" echo -e " 1. You're logged into YouTube in $BROWSER" echo -e " 2. $BROWSER is closed (some browsers lock the cookies database)" echo -e " 3. You have the necessary permissions" exit 1 fi # Step 6: Upload cookies to API echo -e "${BLUE}📤 Uploading cookies to API...${NC}" UPLOAD_RESPONSE=$(curl -s -w "\n%{http_code}" -X POST \ -H "X-API-Key: $API_TOKEN" \ -F "cookies=@$TEMP_COOKIES" \ "$API_URL/admin/upload-cookies") HTTP_CODE=$(echo "$UPLOAD_RESPONSE" | tail -n1) RESPONSE_BODY=$(echo "$UPLOAD_RESPONSE" | head -n-1) if [ "$HTTP_CODE" = "200" ]; then echo -e "${GREEN}✓ Cookies uploaded successfully!${NC}" echo "" echo -e "${GREEN}═══════════════════════════════════════${NC}" echo -e "${GREEN}SUCCESS! You're all set!${NC}" echo -e "${GREEN}═══════════════════════════════════════${NC}" echo "" echo "$RESPONSE_BODY" | python3 -m json.tool 2>/dev/null || echo "$RESPONSE_BODY" echo "" echo -e "${BLUE}â„šī¸ Your cookies are now active${NC}" echo -e "${BLUE}â„šī¸ YouTube downloads should work without bot detection${NC}" echo -e "${BLUE}â„šī¸ Cookies expire after a few weeks - run this script again if needed${NC}" else echo -e "${RED}❌ Failed to upload cookies${NC}" echo -e "${RED}HTTP Status: $HTTP_CODE${NC}" echo "" echo "$RESPONSE_BODY" exit 1 fi # Step 7: Cleanup rm -f "$TEMP_COOKIES" echo "" echo -e "${GREEN}🎉 All done!${NC}"