{"id":30188177,"url":"https://github.com/cotneo/dictionary_c-","last_synced_at":"2025-08-12T16:44:10.190Z","repository":{"id":308071799,"uuid":"1031525363","full_name":"CotNeo/dictionary_c-","owner":"CotNeo","description":"This project is c# study","archived":false,"fork":false,"pushed_at":"2025-08-03T23:38:08.000Z","size":10,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-08-04T01:36:18.917Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"C#","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/CotNeo.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2025-08-03T23:30:02.000Z","updated_at":"2025-08-03T23:38:11.000Z","dependencies_parsed_at":"2025-08-04T16:18:13.229Z","dependency_job_id":null,"html_url":"https://github.com/CotNeo/dictionary_c-","commit_stats":null,"previous_names":["cotneo/dictionary_c-"],"tags_count":null,"template":false,"template_full_name":null,"purl":"pkg:github/CotNeo/dictionary_c-","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CotNeo%2Fdictionary_c-","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CotNeo%2Fdictionary_c-/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CotNeo%2Fdictionary_c-/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CotNeo%2Fdictionary_c-/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/CotNeo","download_url":"https://codeload.github.com/CotNeo/dictionary_c-/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CotNeo%2Fdictionary_c-/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":270099921,"owners_count":24527042,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-08-12T02:00:09.011Z","response_time":80,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2025-08-12T16:44:04.211Z","updated_at":"2025-08-12T16:44:10.148Z","avatar_url":"https://github.com/CotNeo.png","language":"C#","funding_links":[],"categories":[],"sub_categories":[],"readme":"# CEFR Word Fetcher (C# + WordsAPI)\n\nA SOLID-principled C# console application to:\n\n* Load CEFR-level vocabulary from a dataset\n* Randomly select 10 words (optionally by level)\n* Fetch definitions and usage examples using WordsAPI\n* Output to console or save as JSON\n\n## 🚀 Technologies\n\n* C# (.NET 8.0)\n* HttpClient\n* CSV parsing (CsvHelper)\n* JSON serialization (Newtonsoft.Json)\n* SOLID Principles implementation\n\n## 📁 Project Structure\n\n```\nCEFRWordFetcher/\n├── CEFRWordFetcher.sln\n├── /CEFRWordFetcher.Core              # Domain models and interfaces\n│   ├── Models/\n│   │   ├── CEFRWord.cs\n│   │   └── WordInfo.cs\n│   ├── Interfaces/\n│   │   ├── IWordSelector.cs\n│   │   └── IWordsApiService.cs\n│   └── Services/\n│       └── RandomWordSelector.cs\n│\n├── /CEFRWordFetcher.Infrastructure    # Data loading (CSV)\n│   └── CsvLoader.cs\n│\n├── /CEFRWordFetcher.Api               # WordsAPI HTTP service\n│   └── WordsApiService.cs\n│\n├── /CEFRWordFetcher.ConsoleApp        # Main app (UI entry point)\n│   └── Program.cs\n│\n├── /data\n│   └── cefr_dataset.csv\n├── /output\n│   └── output.json\n```\n\n## 🧪 SOLID Principles Applied\n\n| Principle | Implementation |\n|-----------|----------------|\n| **S - Single Responsibility** | Each class has one job (API, CSV loading, word selection, etc.) |\n| **O - Open/Closed** | New word selectors can be added without modifying existing code |\n| **L - Liskov Substitution** | Interfaces can be mocked or replaced with different implementations |\n| **I - Interface Segregation** | Small, focused interfaces like `IWordsApiService`, `IWordSelector` |\n| **D - Dependency Inversion** | Main app depends on abstractions, not concrete implementations |\n\n## ▶️ Usage\n\n### Basic Usage\n```bash\ndotnet run --project CEFRWordFetcher.ConsoleApp\n```\n\n### Filter by CEFR Level\n```bash\ndotnet run --project CEFRWordFetcher.ConsoleApp -- --level=A1\ndotnet run --project CEFRWordFetcher.ConsoleApp -- --level=B2\n```\n\n## 🔑 WordsAPI Setup\n\n1. Sign up: [https://rapidapi.com/dpventures/api/wordsapi](https://rapidapi.com/dpventures/api/wordsapi)\n2. Set your API key: `export WORDS_API_KEY=\"your_api_key_here\"`\n3. Run the application to fetch detailed word information\n\n## 📄 License\n\nMaintenance, Author Cotneo\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcotneo%2Fdictionary_c-","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcotneo%2Fdictionary_c-","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcotneo%2Fdictionary_c-/lists"}