Skip to content

Commit f1b9ce5

Browse files
committed
update scraper
1 parent 83214a6 commit f1b9ce5

File tree

7 files changed

+33
-21
lines changed

7 files changed

+33
-21
lines changed

.cspell.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,8 @@
2525
"rustc",
2626
"pkgs",
2727
"nixpkgs",
28-
"libquery"
28+
"libquery",
29+
"replacen"
2930
],
3031
"dictionaries": [
3132
"softwareTerms",

.gitignore

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,9 @@
33
/.direnv
44
/.husky
55

6+
.cache
7+
data.json
8+
69
# Logs
710
logs
811
*.log

flake.lock

Lines changed: 9 additions & 9 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

flake.nix

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@
3232
};
3333
unstable = nixpkgs-unstable.legacyPackages.${system};
3434

35-
rust-bin = pkgs.rust-bin.fromRustupToolchainFile ./scraper/rust-toolchain.toml;
35+
rust-bin = pkgs.rust-bin.beta.latest.default; # pkgs.rust-bin.fromRustupToolchainFile ./scraper/rust-toolchain.toml;
3636
prisma = pkgs.callPackage ./server/prisma.nix {inherit prisma-utils;};
3737

3838
common = {
@@ -62,8 +62,7 @@
6262
};
6363
in {
6464
packages.scraper = pkgs.callPackage ./scraper {toolchain = rust-bin;};
65-
devShells.default = pkgs.mkShell common;
66-
devShells.scraper = pkgs.mkShell {
65+
devShells.default = pkgs.mkShell {
6766
inherit (common) env;
6867
packages =
6968
common.packages

scraper/src/io.rs

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
use crate::types::*;
22
use anyhow::ensure;
3-
use sha2::{Digest, Sha256};
43
use tokio::fs;
54
use tokio::io::AsyncWriteExt;
65

@@ -10,13 +9,20 @@ pub async fn write_to(file: &mut fs::File, content: Entry) -> anyhow::Result<()>
109
Ok(())
1110
}
1211

13-
use crate::CACHE_DIR;
12+
use crate::cache_dir;
1413

1514
pub async fn request(url: &str) -> anyhow::Result<String> {
1615
println!("[request] sending request to {}", url);
1716

18-
let hash = Sha256::digest(url.as_bytes());
19-
let path = format!("{CACHE_DIR}/{:x}", hash);
17+
let cache_key = url
18+
.to_string()
19+
.replacen("/", "_", 1000)
20+
.replacen(":", "_", 1000)
21+
.replacen("?", "_", 1000)
22+
.replacen("&", "_", 1000)
23+
.replacen("=", "_", 1000)
24+
.to_string();
25+
let path = format!("{}/{cache_key}", cache_dir());
2026
if let Ok(bytes) = fs::read(&path).await {
2127
if let Ok(text) = String::from_utf8(bytes) {
2228
return Ok(text);

scraper/src/main.rs

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,13 +16,16 @@ use scraper::{Html, Selector};
1616
use urls::URLS;
1717

1818
const RESULT_FILE: &str = "./data.json";
19-
const CACHE_DIR: &str = "./.cache";
19+
20+
fn cache_dir() -> String {
21+
"./.cache".to_string()
22+
}
2023

2124
#[tokio::main(flavor = "multi_thread")]
2225
async fn main() {
2326
println!("[log] starting...");
2427

25-
let _ = fs::DirBuilder::new().create(CACHE_DIR).await;
28+
let _ = fs::DirBuilder::new().create(cache_dir()).await;
2629

2730
let mut file = fs::File::create(RESULT_FILE)
2831
.await

server/prisma/schema.prisma

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -92,7 +92,7 @@ model Course {
9292
// コマ。1つの講義に対して複数存在しうる。
9393
model Slot {
9494
id Int @id @default(autoincrement())
95-
course Course @relation(fields: [courseId], references: [id])
95+
course Course @relation(fields: [courseId], references: [id], onDelete: Cascade)
9696
courseId String
9797
period Int // 1-6. 0 の場合はなし (集中など)
9898
day Day // 曜日。other の場合は集中など
@@ -104,7 +104,7 @@ model Enrollment {
104104
id Int @id @default(autoincrement())
105105
user User @relation(fields: [userId], references: [id], onDelete: Cascade)
106106
userId Int
107-
course Course @relation(fields: [courseId], references: [id])
107+
course Course @relation(fields: [courseId], references: [id], onDelete: Cascade)
108108
courseId String
109109
110110
@@unique([userId, courseId])

0 commit comments

Comments
 (0)