Haitao Liu

68 papers C 4Journal 54Unranked 10
YearRankTypeTitle / Venue / Authors
2025 J jnl
Digit. Scholarsh. Humanit.
Tsy Yih, Haitao Liu
2025 J jnl
Digit. Scholarsh. Humanit.
Jianwei Yan, Qidi Li, Haitao Liu
2025 J jnl
Cogn. Sci.
Yikai Zhou, Jingyang Jiang, Haitao Liu
2025 J jnl
J. Quant. Linguistics
Mu Yang, Haitao Liu
2025 J jnl
Digit. Scholarsh. Humanit.
Ruina Chen, Zhuojun Zhong, Xinyu Yuan, Haitao Liu
2024 J jnl
Digit. Scholarsh. Humanit.
Wei Yuan, Haitao Liu
2024 J jnl
J. Quant. Linguistics
Yikai Zhou, Jingyang Jiang, Haitao Liu
2024 J jnl
Int. J. Humanit. Arts Comput.
Zheyuan Dai, Haitao Liu
2024 conf
CLSW (2)
Xinpei Hong, Haitao Liu
2024 J jnl
Nat. Lang. Eng.
Shuiyuan Yu, Zihao Zhang, Haitao Liu
2023 J jnl
Digit. Scholarsh. Humanit.
Huiyuan Jin, Kecheng Yang, Haitao Liu
2023 C conf
PACLIC
Zheyuan Dai, Chenliang Zhou, Haitao Liu
2023 J jnl
Digit. Scholarsh. Humanit.
Chenliang Zhou, Haitao Liu
2023 C conf
PACLIC
Ruochen Niu, Yaqin Wang, Haitao Liu
2023 J jnl
J. Quant. Linguistics
Xinpei Hong, Wei Huang, Haitao Liu
2023 J jnl
Glottometrics
Tsy Yih, Haitao Liu
2022 conf
CLSW (2)
Tsy Yih, Haitao Liu
2022 J jnl
Digit. Scholarsh. Humanit.
Heng Chen, Haitao Liu
2022 J jnl
Digit. Scholarsh. Humanit.
Yaqin Wang, Haitao Liu
2022 conf
CCL
Da Qi, Chenliang Zhou, Haitao Liu
2022 J jnl
Glottometrics
Yikai Zhou, Rui Li, Guangfeng Chen, Haitao Liu
2022 C conf
PACLIC
Tsy Yih, Jianwei Yan, Haitao Liu
2022 J jnl
J. Quant. Linguistics
Ruina Chen, Sirui Deng, Haitao Liu
2022 conf
NLPIR
Da Qi, Haitao Liu
2021 J jnl
Digit. Scholarsh. Humanit.
Xiaxing Pan, Haitao Liu
2021 C conf
PACLIC
Tsy Yih, Haitao Liu
2021 conf
CLSW (2)
Jianwei Yan, Haitao Liu
2021 J jnl
Digit. Scholarsh. Humanit.
Xiaojin Zhang, Haitao Liu
2021 J jnl
Scientometrics
Kun Sun, Haitao Liu, Wenxin Xiong
2021 J jnl
J. Quant. Linguistics
Aiyun Wei, Qian Lu, Haitao Liu
2020 J jnl
CoRR
Shuiyuan Yu, Chunshan Xu, Haitao Liu
2019 J jnl
Glottometrics
Xiaojin Zhang, Haitao Liu
2019 J jnl
Glottometrics
Zheyuan Dai, Haitao Liu
2019 J jnl
Glottometrics
Aiyun Wei, Haitao Liu
2018 J jnl
Digit. Scholarsh. Humanit.
Xiaxing Pan, Xinying Chen, Haitao Liu
2018 J jnl
Glottometrics
Yaqin Wang, Haitao Liu
2018 J jnl
Complex.
Heng Chen, Haitao Liu
2018 J jnl
J. Quant. Linguistics
Ruina Chen, Haitao Liu
2018 J jnl
CoRR
Shuiyuan Yu, Chunshan Xu, Haitao Liu
2017 J jnl
Digit. Scholarsh. Humanit.
Ruina Chen, Haitao Liu, Gabriel Altmann
2017 J jnl
Glottometrics
Rafaël Poiret, Haitao Liu
2017 J jnl
J. Quant. Linguistics
Hongxin Zhang, Haitao Liu
2016 J jnl
Complex.
Qian Lu, Chunshan Xu, Haitao Liu
2016 J jnl
Glottometrics
Haitao Liu, Chunshan Xu, Junying Liang
2016 J jnl
CoRR
Shuiyuan Yu, Junying Liang, Haitao Liu
2016 J jnl
J. Quant. Linguistics
Heng Chen, Haitao Liu
2016 J jnl
Glottometrics
Hongxin Zhang, Haitao Liu
2016 conf
Issues in Quantitative Linguistics 4 (Dedicated to Reinhard Köhler on the occasion of his 65th birthday)
Xiaxing Pan, Haitao Liu
2016 J jnl
CoRR
Shuiyuan Yu, Jin Cong, Junying Liang, Haitao Liu
2015 conf
DepLing
Xinying Chen, Haitao Liu, Kim Gerdes
2015 J jnl
CoRR
Haitao Liu, Chunshan Xu, Junying Liang
2015 J jnl
Glottometrics
Xiaxing Pan, Hui Qiu, Haitao Liu
2015 J jnl
CoRR
Qian Lu, Chunshan Xu, Haitao Liu
2014 J jnl
Glottometrics
Heng Chen, Haitao Liu
2014 J jnl
Glottometrics
Xiaxing Pan, Haitao Liu
2014 J jnl
J. Quant. Linguistics
Ruina Chen, Haitao Liu
2014 J jnl
J. Quant. Linguistics
Song Gao, Hongxin Zhang, Haitao Liu
2014 J jnl
J. Quant. Linguistics
Narisong Jiang, Jingyang, Haitao Liu
2013 J jnl
CoRR
Ramon Ferrer-i-Cancho, Haitao Liu
2012 J jnl
Comput. Linguistics
Chunshan Xu, Haitao Liu
2011 J jnl
J. Quant. Linguistics
Ming Yue, Haitao Liu
2011 J jnl
J. Quant. Linguistics
Haitao Liu
2011 J jnl
Phonetica
Shuiyuan Yu, Chunshan Xu, Haitao Liu, Yudong Chen
2011 conf
NLPKE
Fengguo Hu, Wenwen Li, Haitao Liu
2010 conf
NLPKE
Song Gao, Yiyi Zhao, Haitao Liu, Zhiwei Feng
2010 J jnl
Glottometrics
Haitao Liu, Yiyi Zhao, Wei Huang
2009 conf
NLPKE
Yiyi Zhao, Song Gao, Haitao Liu
2009 J jnl
J. Quant. Linguistics
Haitao Liu
s3-storage/s3_test.py
← Index s3-storage/s3_test.py python
#!/usr/bin/env python3
"""
Simple script to test S3 connectivity and download.
Usage: python s3_test.py
"""

import os
import time
import tempfile
from minio import Minio
from minio.error import S3Error
from dotenv import load_dotenv

# Load environment variables
load_dotenv()

def get_minio_client():
    """Create and return a Minio client using credentials from .env file"""
    endpoint = os.getenv("S3_ENDPOINT")
    access_key = os.getenv("S3_ACCESS_KEY")
    secret_key = os.getenv("S3_SECRET_KEY")
    secure = True 
    
    print(f"Connecting to S3 endpoint: {endpoint} (secure={secure})")
    
    return Minio(
        endpoint=endpoint,
        access_key=access_key,
        secret_key=secret_key,
        secure=secure
    )

def test_connection():
    """Test basic connectivity to S3"""
    try:
        client = get_minio_client()
        
        # Try to list buckets as a basic connectivity test
        buckets = client.list_buckets()
        print(f"Successfully connected to S3. Found {len(buckets)} buckets:")
        for bucket in buckets:
            print(f"  - {bucket.name}")
        
        return client
    except Exception as e:
        print(f"Failed to connect to S3: {e}")
        return None

def test_bucket_access(client, bucket_name):
    """Test access to a specific bucket"""
    try:
        exists = client.bucket_exists(bucket_name)
        if exists:
            print(f"Bucket '{bucket_name}' exists and is accessible")
            
            # List a few objects to verify access
            count = 0
            objects = []
            for obj in client.list_objects(bucket_name, recursive=True):
                print(f"  - {obj.object_name} ({obj.size} bytes)")
                objects.append(obj)
                count += 1
                if count >= 5:
                    break
            
            print(f"Found at least {len(objects)} objects in bucket")
            return objects
        else:
            print(f"Bucket '{bucket_name}' does not exist or is not accessible")
            return []
    except Exception as e:
        print(f"Error accessing bucket '{bucket_name}': {e}")
        return []

def test_download(client, bucket_name, object_name):
    """Test downloading a specific object"""
    try:
        print(f"Attempting to download: {object_name}")
        start_time = time.time()
        
        # Create a temporary file to store the downloaded object
        with tempfile.NamedTemporaryFile(delete=False) as temp_file:
            temp_path = temp_file.name
        
        # Download the object
        client.fget_object(bucket_name, object_name, temp_path)
        
        # Check if the file was downloaded successfully
        file_size = os.path.getsize(temp_path)
        elapsed_time = time.time() - start_time
        
        print(f"Download successful: {file_size} bytes in {elapsed_time:.2f} seconds")
        print(f"Average download speed: {file_size/elapsed_time/1024:.2f} KB/s")
        
        # Clean up
        os.unlink(temp_path)
        return True
    except S3Error as e:
        print(f"S3 Error during download: {e}")
        return False
    except Exception as e:
        print(f"Error downloading object: {e}")
        return False

def main():
    """Main function to run all tests"""
    print("=== S3 Connectivity Test ===")
    
    # Test basic connectivity
    client = test_connection()
    if not client:
        return
    
    # Get bucket name from environment variable
    bucket_name = "redb"
    print(f"\n=== Testing Access to Bucket: {bucket_name} ===")
    objects = test_bucket_access(client, bucket_name)
    
    if objects:
        # Test downloading the first object
        first_object = objects[0].object_name
        print(f"\n=== Testing Download of Object: {first_object} ===")
        test_download(client, bucket_name, first_object)
        
        # If the first one worked, let's try a specific file from the error log
        print(f"\n=== Testing Download of Specific Object ===")
        specific_object = "00/06/00062073114defac39cb7ab9cb99a0b77c535a09a241c60d47ddd0b6431629f1.zip"
        test_download(client, bucket_name, specific_object)

if __name__ == "__main__":
    main()