File size: 2,915 Bytes
6e3c6f3
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
import pandas as pd
import requests
import os
import logging
from requests.exceptions import RequestException

def download_images(excel_file, output_folder):
    # Create output folder if it doesn't exist
    os.makedirs(output_folder, exist_ok=True)
    
    # Read Excel file
    df = pd.read_excel(excel_file)
    
    # Set up logging
    logging.basicConfig(level=logging.INFO)
    logger = logging.getLogger(__name__)

    # Base URL template
    base_url = "https://myshoolini.s3.ap-south-1.amazonaws.com/face_detect_data/{}/img/1.png"
    
    # Iterate through roll numbers
    for index, row in df.iterrows():
        roll_number = str(row['Registration Id'])  # Adjust column name as needed
        name = str(row['Student Name'])  # Adjust column name as needed
        
        try:
            # Construct full URL
            url = base_url.format(roll_number)  # Note: Changed from name to roll_number
            
            # Log the URL being accessed
            logger.info(f"Attempting to access URL: {url}")
            
            # Send GET request with timeout
            response = requests.get(url, timeout=10)
            
            # Check status code
            if response.status_code == 200:
                logger.info(f"Successfully accessed {url}")
                if len(response.content) > 0:
                    # Save image with name as filename
                    filename = os.path.join(output_folder, f"{name}_{roll_number}.png")
                    with open(filename, 'wb') as file:
                        file.write(response.content)
                    logger.info(f"Successfully downloaded image for {roll_number} - {name}")
                else:
                    logger.error(f"Empty response received for {roll_number} - {name}")
            elif response.status_code == 404:
                logger.error(f"Image not found for {roll_number} - {name}")
            elif response.status_code == 403:
                logger.error(f"Access forbidden for {roll_number} - {name}")
            else:
                logger.error(f"HTTP {response.status_code} error for {roll_number} - {name}")
        
        except requests.Timeout:
            logger.error(f"Request timed out for {roll_number} - {name}")
        except requests.ConnectionError:
            logger.error(f"Connection error for {roll_number} - {name}")
        except RequestException as e:
            logger.error(f"Request failed for {roll_number} - {name}: {str(e)}")
        except Exception as e:
            logger.error(f"Unexpected error for {roll_number} - {name}: {str(e)}")


# Example usage
if __name__ == "__main__":
    excel_file_path = "list6.xlsx"  # Replace with your Excel file path
    output_directory = r"C:\Users\kashy\Downloads\source-code-face-recognition\source code\images"  # Output folder for images
    
    download_images(excel_file_path, output_directory)