TimStats commited on
Commit
8a361d9
·
verified ·
1 Parent(s): c41a051

Update app.R

Browse files
Files changed (1) hide show
  1. app.R +39 -48
app.R CHANGED
@@ -67,63 +67,54 @@ download_private_csv <- function(repo_id, filename) {
67
  }
68
 
69
  download_private_parquet <- function(repo_id, filename) {
70
- library(httr)
71
- library(arrow)
72
 
73
- url <- paste0("https://huggingface.co/datasets/", repo_id, "/resolve/main/", filename)
74
- response <- GET(url, add_headers(Authorization = paste("Bearer", Sys.getenv("GETCSV"))))
 
 
 
 
 
 
 
 
 
 
75
 
 
76
  if (status_code(response) == 200) {
77
- # Get raw content
78
- content_raw <- content(response, "raw")
79
-
80
- # Check if this is an LFS pointer by looking at the first few bytes
81
- first_chunk <- rawToChar(head(content_raw, 100))
82
-
83
- if (grepl("^version https://git-lfs.github.com/spec/", first_chunk)) {
84
- # This is an LFS file - extract the oid (hash) from the pointer
85
- content_text <- rawToChar(content_raw)
86
- oid_line <- grep("oid sha256:", strsplit(content_text, "\n")[[1]], value = TRUE)
87
- oid <- gsub("oid sha256:", "", oid_line)
88
- oid <- trimws(oid)
89
-
90
- # Try the alternative LFS URL format first (more reliable for Hugging Face)
91
- lfs_url <- paste0("https://huggingface.co/datasets/", repo_id, "/lfs/resolve/main/", filename, "?download=true")
92
- lfs_response <- GET(lfs_url, add_headers(Authorization = paste("Bearer", Sys.getenv("GETCSV"))))
93
-
94
- if (status_code(lfs_response) == 200) {
95
- content_raw <- content(lfs_response, "raw")
96
- } else {
97
- # Try original LFS URL format as fallback
98
- lfs_url <- paste0("https://huggingface.co/datasets/", repo_id, "/resolve/main/.git/lfs/objects/",
99
- substr(oid, 1, 2), "/", substr(oid, 3, 4), "/", oid)
100
- lfs_response <- GET(lfs_url, add_headers(Authorization = paste("Bearer", Sys.getenv("GETCSV"))))
101
-
102
- if (status_code(lfs_response) == 200) {
103
- content_raw <- content(lfs_response, "raw")
104
- } else {
105
- stop(paste("Failed to download LFS content. Status code:", status_code(lfs_response)))
106
- }
107
- }
108
- }
109
-
110
- # Write to a temporary file and read with arrow
111
- temp_file <- tempfile(fileext = ".parquet")
112
- writeBin(content_raw, temp_file)
113
-
114
  tryCatch({
 
115
  data <- read_parquet(temp_file)
 
116
  return(data)
117
  }, error = function(e) {
118
- stop(paste("Error parsing parquet file:", e$message))
119
- }, finally {
120
- # Clean up
121
- if (file.exists(temp_file)) {
122
- file.remove(temp_file)
123
- }
124
  })
125
  } else {
126
- stop(paste("Failed to download dataset. Status code:", status_code(response)))
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
127
  }
128
  }
129
 
 
67
  }
68
 
69
  download_private_parquet <- function(repo_id, filename) {
 
 
70
 
71
+ # Create a temporary file
72
+ temp_file <- tempfile(fileext = ".parquet")
73
+
74
+ # Alternative LFS URL format (more direct download)
75
+ url <- paste0("https://huggingface.co/datasets/", repo_id, "/lfs/resolve/main/", filename, "?download=true")
76
+
77
+ # Download directly to file
78
+ response <- GET(
79
+ url,
80
+ add_headers(Authorization = paste("Bearer", Sys.getenv("GETCSV"))),
81
+ write_disk(temp_file, overwrite = TRUE)
82
+ )
83
 
84
+ # Check if download was successful
85
  if (status_code(response) == 200) {
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
86
  tryCatch({
87
+ # Read the parquet file
88
  data <- read_parquet(temp_file)
89
+ file.remove(temp_file)
90
  return(data)
91
  }, error = function(e) {
92
+ file.remove(temp_file)
93
+ stop(paste("Error reading parquet file:", e$message))
 
 
 
 
94
  })
95
  } else {
96
+ # Try the standard URL if LFS URL failed
97
+ url <- paste0("https://huggingface.co/datasets/", repo_id, "/resolve/main/", filename)
98
+
99
+ response <- GET(
100
+ url,
101
+ add_headers(Authorization = paste("Bearer", Sys.getenv("GETCSV"))),
102
+ write_disk(temp_file, overwrite = TRUE)
103
+ )
104
+
105
+ if (status_code(response) == 200) {
106
+ tryCatch({
107
+ data <- read_parquet(temp_file)
108
+ file.remove(temp_file)
109
+ return(data)
110
+ }, error = function(e) {
111
+ file.remove(temp_file)
112
+ stop(paste("Error reading parquet file:", e$message))
113
+ })
114
+ } else {
115
+ file.remove(temp_file)
116
+ stop(paste("Failed to download file. Status code:", status_code(response)))
117
+ }
118
  }
119
  }
120