C. Ravindranath Chowdary

58 papers A 1C 3Misc 4Journal 40Unranked 10
YearRankTypeTitle / Venue / Authors
2026 J jnl
Knowl. Inf. Syst.
Paras Tiwari, C. Ravindranath Chowdary
2025 J jnl
Lang. Resour. Evaluation
Paras Tiwari, Sawan Rai, C. Ravindranath Chowdary
2025 J jnl
Evol. Syst.
Snigdha Ranjith, C. Ravindranath Chowdary, Paras Tiwari
2025 J jnl
CoRR
Pushpa Devi, Ayush Agrawal, Ashutosh Dubey, C. Ravindranath Chowdary
2024 J jnl
J. Comput. Sci.
Deepika Shukla, C. Ravindranath Chowdary
2024 J jnl
Int. J. Multim. Inf. Retr.
Chintoo Kumar, C. Ravindranath Chowdary, Ashok Kumar Meena
2023 J jnl
Electron. Commer. Res.
Chintoo Kumar, C. Ravindranath Chowdary
2023 J jnl
Expert Syst. Appl.
Shivang Agarwal, Ankur Sonawane, C. Ravindranath Chowdary
2023 J jnl
Comput. Networks
K. Venkatakrishna Rao, C. Ravindranath Chowdary
2022 J jnl
Knowl. Inf. Syst.
Nagsen Komwad, Paras Tiwari, Banoth Praveen, C. Ravindranath Chowdary
2022 J jnl
Inf. Sci.
Chintoo Kumar, C. Ravindranath Chowdary, Deepika Shukla
2022 J jnl
Inf. Sci.
K. Venkatakrishna Rao, C. Ravindranath Chowdary
2022 J jnl
Computing
Chintoo Kumar, C. Ravindranath Chowdary
2022 J jnl
Electron. Commer. Res.
Shivendra Kumar, C. Ravindranath Chowdary
2021 J jnl
Pattern Recognit. Lett.
Shivang Agarwal, Ajita Rattani, C. Ravindranath Chowdary
2021 J jnl
CoRR
Chintoo Kumar, C. Ravindranath Chowdary
2021 J jnl
Expert Syst. Appl.
Shivang Agarwal, C. Ravindranath Chowdary
2021 J jnl
CoRR
Shivang Agarwal, C. Ravindranath Chowdary, Vivek Sourabh
2020 J jnl
J. Intell. Inf. Syst.
Sriharsha Dara, C. Ravindranath Chowdary, Chintoo Kumar
2020 J jnl
Expert Syst. Appl.
Shivang Agarwal, C. Ravindranath Chowdary
2020 J jnl
CoRR
Shivang Agarwal, Ajita Rattani, C. Ravindranath Chowdary
2020 J jnl
Neural Networks
Divesh Pandey, C. Ravindranath Chowdary
2019 J jnl
Appl. Intell.
Sriharsha Dara, C. Ravindranath Chowdary
2019 J jnl
CoRR
Shivang Agarwal, C. Ravindranath Chowdary, Shripriya Maheshwari
2019 J jnl
Expert Syst. Appl.
Vivek Sourabh, C. Ravindranath Chowdary
2019 J jnl
Eng. Appl. Artif. Intell.
Anurag Lal, C. Ravindranath Chowdary
2019 J jnl
CoRR
Shashank Yadav, Tejas Shimpi, C. Ravindranath Chowdary, Prashant Sharma, Deepansh Agrawal, Shivang Agarwal
2018 J jnl
Expert Syst. Appl.
Deepak Yadav, C. Ravindranath Chowdary
2017 J jnl
Multim. Tools Appl.
Deepanwita Datta, Sanjay Kumar Singh, C. Ravindranath Chowdary
2017 J jnl
Expert Syst. Appl.
Akshita Agarwal, Manajit Chakraborty, C. Ravindranath Chowdary
2017 J jnl
Expert Syst. Appl.
Deepanwita Datta, Shubham Varma, C. Ravindranath Chowdary, Sanjay Kumar Singh
2017 C conf
PDCAT
Vivek Sourabh, Parth Pahariya, Isha Agarwal, Ankit Gautam, C. Ravindranath Chowdary
2017 C conf
PDCAT
Manu Agrawal, Kartik Manchanda, Ribhav Soni, Anurag Lal, C. Ravindranath Chowdary
2017 J jnl
CoRR
Kshitij Singh, Manajit Chakraborty, C. Ravindranath Chowdary
2017 J jnl
CoRR
Shubham Varma, Neyshith Sameer, C. Ravindranath Chowdary
2017 conf
WWW (Companion Volume)
Anurag Lal, Apoorve Tomer, C. Ravindranath Chowdary
2017 C conf
AICCSA
Deepanwita Datta, Prasad Suresh Nakhate, Sanjay Kumar Singh, C. Ravindranath Chowdary
2016 conf
TREC
Sainyam Kapoor, Manajit Chakraborty, C. Ravindranath Chowdary
2016 conf
ICON
Samaikya Akarapu, C. Ravindranath Chowdary
2016 conf
ICON
Neha Yadav, C. Ravindranath Chowdary
2016 J jnl
Inf. Process. Manag.
Manajit Chakraborty, Sukomal Pal, Rahul Pramanik, C. Ravindranath Chowdary
2016 conf
CODS
Prateek Goel, Manajit Chakraborty, C. Ravindranath Chowdary
2015 conf
TREC
Manajit Chakraborty, Hitesh Agrawal, Himanshu Shekhar, C. Ravindranath Chowdary
2015 conf
ICWE Workshops
C. Ravindranath Chowdary, Anil Kumar Singh, Anil Nelakanti
2015 J jnl
CoRR
C. Ravindranath Chowdary, Anil Kumar Singh, Anil Nelakanti
2014 conf
TREC
Anil Kumar Singh, C. Ravindranath Chowdary
2014 Misc conf
COMAD
C. Ravindranath Chowdary, P. Sreenivasa Kumar
2012 J jnl
CoRR
Surendranath Chowdary Chandra, C. Ravindranath Chowdary
2010 J jnl
Int. J. Artif. Intell. Tools
C. Ravindranath Chowdary, M. Sravanthi, P. Sreenivasa Kumar
2010 J jnl
CoRR
C. Ravindranath Chowdary
2009 A conf
ECIR
C. Ravindranath Chowdary, P. Sreenivasa Kumar
2009 Misc conf
FLAIRS
M. Sravanthi, C. Ravindranath Chowdary, P. Sreenivasa Kumar
2009 J jnl
CoRR
C. Ravindranath Chowdary, P. Sreenivasa Kumar
2009 J jnl
Res. Comput. Sci.
C. Ravindranath Chowdary, P. Sreenivasa Kumar
2008 Misc conf
COMAD
C. Ravindranath Chowdary, P. Sreenivasa Kumar
2008 Misc conf
FLAIRS
M. Sravanthi, C. Ravindranath Chowdary, P. Sreenivasa Kumar
2008 conf
BNCOD
C. Ravindranath Chowdary, P. Sreenivasa Kumar
2008 conf
TAC
C. Ravindranath Chowdary, P. Sreenivasa Kumar
redb/s3_utils.py
← Index redb/s3_utils.py python
"""
S3 and file utility functions for REDB.

Contains MinIO/S3 client creation, S3 key generation,
file download, and archive extraction helpers.
"""
import os
import tempfile
from typing import Optional, List

from minio import Minio
from minio.error import S3Error


def get_minio_client():
    """Create and return a Minio client using credentials from .env file"""
    return Minio(
        endpoint=os.getenv("S3_ENDPOINT"),
        access_key=os.getenv("S3_ACCESS_KEY"),
        secret_key=os.getenv("S3_SECRET_KEY"),
        secure=os.getenv("S3_SECURE", "false").lower() == "true"
    )


def generate_s3_key_from_hash(sample_hash: str) -> str:
    """
    Generate S3 key from hash using sharding structure.
    Example: 09f7d02a3c2382199458c98a62b045145ee54ab6aba86166aecf3d10c3c1444c
    becomes: 09/f7/09f7d02a3c2382199458c98a62b045145ee54ab6aba86166aecf3d10c3c1444c.zip
    """
    if len(sample_hash) < 4:
        raise ValueError(f"Hash too short for sharding: {sample_hash}")

    # Create sharded path: first 2 chars / next 2 chars / full_hash.zip
    return f"{sample_hash[:2]}/{sample_hash[2:4]}/{sample_hash}.zip"


def download_s3_object(s3_bucket: str, s3_key: str, temp_dir: str, logger=None) -> Optional[str]:
    """
    Download an object from S3 to a local temporary directory and return the local path.
    If the .zip file is not found, automatically tries .7z as a fallback for legacy uploads.
    """
    try:
        minio_client = get_minio_client()
        local_path = os.path.join(temp_dir, os.path.basename(s3_key))

        # Download the file
        minio_client.fget_object(s3_bucket, s3_key, local_path)

        return local_path
    except S3Error as e:
        # If .zip not found and error is NoSuchKey, try .7z fallback
        if e.code == 'NoSuchKey' and s3_key.endswith('.zip'):
            s3_key_7z = s3_key[:-4] + '.7z'  # Replace .zip with .7z
            if logger:
                logger.info(f".zip not found, trying .7z fallback: {s3_key_7z}")
            try:
                local_path_7z = os.path.join(temp_dir, os.path.basename(s3_key_7z))
                minio_client.fget_object(s3_bucket, s3_key_7z, local_path_7z)
                if logger:
                    logger.info(f"Successfully downloaded .7z fallback: {s3_key_7z}")
                return local_path_7z
            except S3Error as e2:
                if logger:
                    logger.error(f"Failed to download S3 object {s3_key} (tried both .zip and .7z): {e2}")
                else:
                    print(f"[ERROR] Failed to download S3 object {s3_key} (tried both .zip and .7z): {e2}")
                return None
        else:
            if logger:
                logger.error(f"Failed to download S3 object {s3_key}: {e}")
            else:
                print(f"[ERROR] Failed to download S3 object {s3_key}: {e}")
            return None


def extract_fat_slices(macho, output_dir: str, logger) -> List[tuple]:
    """
    Extract slices from FAT Mach-O binary using machofile's dump_slices() API.

    Args:
        macho: Parsed machofile.UniversalMachO object
        output_dir: Directory to write slice files
        logger: Logger instance

    Returns:
        List of (arch_name, slice_path, slice_sha256, slice_md5, slice_sha1) tuples
    """
    result = []
    try:
        # Use machofile's dump_slices API (v2026.2.5+)
        slices = macho.dump_slices(output_dir=output_dir)
        logger.debug(f"Extracted {len(slices)} slices from FAT binary")

        for arch_name, slice_path in slices:
            # Get hash info for this slice from machofile
            general_info = macho.get_general_info(arch=arch_name)
            slice_sha256 = general_info.get('SHA256')
            slice_md5 = general_info.get('MD5')
            slice_sha1 = general_info.get('SHA1')
            result.append((arch_name, slice_path, slice_sha256, slice_md5, slice_sha1))
            logger.debug(f"Slice {arch_name}: {slice_sha256}")

    except Exception as e:
        logger.error(f"Error extracting FAT slices: {e}")

    return result