https://github.com/j0rgeserran0/comicstripdownloader
Comic Strip Downloader writen in .NET 5
https://github.com/j0rgeserran0/comicstripdownloader
comic-downloader comic-strips comics net5 type-safe-enum-pattern
Last synced: 3 months ago
JSON representation
Comic Strip Downloader writen in .NET 5
- Host: GitHub
- URL: https://github.com/j0rgeserran0/comicstripdownloader
- Owner: J0rgeSerran0
- License: mit
- Created: 2020-11-30T22:25:50.000Z (over 4 years ago)
- Default Branch: main
- Last Pushed: 2020-12-01T08:54:37.000Z (over 4 years ago)
- Last Synced: 2025-01-29T12:17:16.363Z (5 months ago)
- Topics: comic-downloader, comic-strips, comics, net5, type-safe-enum-pattern
- Language: C#
- Homepage:
- Size: 23.4 KB
- Stars: 0
- Watchers: 3
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Comic Strip Downloader
Project writen in [**.NET 5**](https://dotnet.microsoft.com/download/dotnet/5.0)## Proposal
Experimental project to show you:
- How to use the **Type-Safe Enum Pattern** in c#
- How to use the [**HtmlAgilityPack**](https://www.nuget.org/packages/HtmlAgilityPack/) library to scrape a content for a web page (in this case a picture)## Parts of the project
**ComicStripDownloader** *class library*
### **IComicStripService**
*Interface with two methods*#### **Task<ComicStripResponse> GetComicStripUrlAsync(*DateTime*, *ComicStripType*)**
To get the Url of a Comic Strip> *DateTime* indicates the year, month and day of the Comic Strip
> *ComicStripType* indicates the Comic Strip that we want to get
#### **Task<ComicStripResponse> GetLastComicStripUrlAsync(*ComicStripType*)**
To get the last Comic Strip> *ComicStripType* indicates the Comic Strip that we want to get
### **ComicStripResponse**
*Record object of the response returned by the service*> *string Source* contains the result if the process has been executed correctly
> *bool HasErrors* indicates if any error has been detected
> *string ErrorDescription* contains details about the error if has been detected
### **ComicStripType**
Use of the **Type-Safe Enum Pattern** to have all the details needed about a Comic Strip, that will be used by the service to get the Url of the Comic Strip correctlyThe use of this pattern avoid possible problems when we are programming with **Enum** value type
*There are two interesting **static methods** inside of this object*
#### *IReadOnlyCollection<ComicStripType> GetAll()*
*Get the list of all Comic Strip's. Each item, can be used as parameter to call to the service and get the Comic Strip Url*> The values received in the collection are:
> **string Name** of the Comic Strip
> **string Key** for the Comic Strip
> **string Url** used internally to get the Comic Strip
> **string Parameter** used internally to prepare the Url of the Comic Strip
> **string HtmlImageClass** used internally to get the Url of the Comic Strip using *HtmlAgilityPack*
> **string IsInChildNodes** used internally to define if the Url is in a child node or not, and that will be used using *HtmlAgilityPack*
#### *ComicStripType FindBy(string key)*
*Find the Comic Strip details for a Comic Strip Key*### **ComicStripService**
Implementation of **IComicStripService**## How to use this project
A **demo** sample has been included in the code to show you how to use this library.
To get the last Comic Strip of Dilbert, you would write something like:
```csharp
var response = await service.GetLastComicStripUrlAsync(ComicStripType.Dilbert);
```And to get the Comic Strip of Dilbert for the 2020/09/25, you would write something like:
```csharp
var response = await service.GetComicStripUrlAsync(new DateTime(2020, 9, 25), ComicStripType.Dilbert);
```After this, *response* has the result of this task.
You should check if *response.HasErrors* is **true** or **false**.
If is **false**, you can get the Url in *response.Source*.
If is **true**, you can get the Error Details.
```csharp
if (response.HasErrors)
Console.WriteLine($"Error: {response.ErrorDescription}");
else
Console.WriteLine($"Comic Strip Url: {response.Source}");
```## Comic Strips that you can download
- Andy Capp
- Back to B.C.
- B.C.
- Big Nate
- Big Nate: First Class
- Broom Hilda
- Calvin and Hobbes
- Cathy Classics
- Cul de Sac
- Dilbert
- Dilbert Classics
- Doonesbury
- Eyebeam Classics
- For Better or For Worse
- FoxTrot Classics
- Frank and Ernest
- Frazz
- Free Range
- Gardfield
- Gardfield Classics
- Geech
- Get Fuzzy
- Heart of the City
- Herman
- Luann
- Luann Againn
- Mutt and Jeff
- Nancy Classics
- Non Sequitur
- Peanuts
- Peanuts Begins
- Pearls Before Swine
- Phoebe and Her Unicorn
- Pickles
- Ruby Park
- Shirley and Son Classics
- Skippy
- Stone Soup Classics
- Tarzan
- The Knight Life
- Wallace the Brave
- Wizard of Id
- Wizard of Id Classics
- Ziggy