Files
mini_projects/scryfall_deser/src/main.rs
Arthur Roberts 9a9f42bc1e Changing how to use textdifference thing
I think it'd be better to use text difference if a substring isn't found.

I realised afterwards that I think this is how Scryfall does it anyway.
2025-08-17 00:34:03 +01:00

45 lines
1.2 KiB
Rust

use clap::Parser;
use scryfall_deser::get_all_lowercase_card_names;
use scryfall_deser::get_local_cache_folder;
use scryfall_deser::init_db;
use scryfall_deser::update_db_with_file;
use textdistance::str::damerau_levenshtein;
#[derive(Parser, Debug)]
#[command(version, about, long_about = None)]
struct Args {
#[arg(short, long)]
update: bool,
remainder: Vec<String>,
}
fn main() {
let args = Args::parse();
if args.update {
init_db();
let mut path = get_local_cache_folder();
// TODO - actually download and update
path.push("oracle-cards-20250814210711.json");
update_db_with_file(path);
return;
}
let card_name = args.remainder;
if card_name.is_empty() {
panic!("You need to put some card text to search");
}
let search_string = card_name.join(" ");
//dbg!(&search_string);
let cards = get_all_lowercase_card_names();
//dbg!(&cards);
let mut matching_cards = Vec::new();
for card in cards {
if card.contains(&search_string) {
matching_cards.push(card.clone());
}
}
if matching_cards.is_empty() {
// Do some distance checking stuff
}
//dbg!(matching_cards);
}