diff --git a/README.md b/README.md index 09f489a..1cb70a3 100644 --- a/README.md +++ b/README.md @@ -35,12 +35,12 @@ Environment variables for the linkding worker. | Linkding__Key | text | The linkding application key | [Instructions](https://github.com/sissbruecker/linkding/blob/master/docs/API.md) | ## Configuration -The following explains the configuration options. +The following explains the configuration options. The Configuration file must be mapped to **/app/data/config.yml** ### WallabagSync The configuration is optional. In the configuration (**YAML File**) rules can be defined in regex to exclude certain domains from sync. Exampel: -````yaml +```yaml excludedDomains: - name: youtube pattern: 'https://[[a-zA-Z0-9]+\.]?(youtube)\.com(?:/.*)?' @@ -48,7 +48,7 @@ excludedDomains: pattern: 'https://[[a-zA-Z0-9]+\.]?(ebay)\.(com|de|fr)(?:/.*)?' - name: amazon pattern: 'https://[[a-zA-Z0-9]+\.]?(amazon)\.(com|de|fr)(?:/.*)?' -```` +``` With this configuration every matching bookmark from linkding will be excluded from the sync. ### LinkdingUpdater @@ -57,7 +57,7 @@ The configuration is optional. In the configuration (**YAML File**) rules can be If operated without a configuration file, only the year of the tag is added (currently). Example: -````yaml +```yaml urlTagMapping: - name: microsoft_azure url: https://github.com/azure @@ -68,59 +68,88 @@ urlTagMapping: taggingRule: - name: reddit - pattern: https://(?:www\.)?(reddit)\.com(?:/r/)?([ a-zA-Z0-9\-\+_ ]+)?(?:/.*)? + pattern: https://(?:www\.)?(reddit)\.com(?:/r/)?([a-zA-Z0-9\-\+_]+)?(?:/.*)? replace: $1,$2 - name: microsoft - pattern: https://([ a-zA-Z0-9 ]+)?[ \. ]?(microsoft)\.com(?:/.*)? + pattern: https://([a-zA-Z0-9]+)?[\.]?(microsoft)\.com(?:/.*)? replace: $1,$2 - name: microsoft_docs - pattern: 'https://(?:docs)\.(?:microsoft)\.com[ / ]?(?: [ a-zA-Z0-9\-\+_ ]+)(?:/)?([ a-zA-Z0-9\-\+_ ]+)?(?:/)?([ a-zA-Z0-9\-\+_ ]+)?(?:/.*)?' + pattern: 'https://(?:docs)\.(?:microsoft)\.com[/]?(?: [a-zA-Z0-9\-\+_]+)(?:/)?([a-zA-Z0-9\-\+_]+)?(?:/)?([a-zA-Z0-9\-\+_]+)?(?:/.*)?' replace: $1,$2 - name: youtube - pattern: https://[ [ a-zA-Z0-9 ]+\. ]?(youtube)\.com(?:/.*)? + pattern: https://[[a-zA-Z0-9]+\.]?(youtube)\.com(?:/.*)? replace: $1 - name: ebay - pattern: https://[ [ a-zA-Z0-9 ]+\. ]?(ebay)\.(com|de|fr)(?:/.*)? + pattern: https://[[a-zA-Z0-9]+\.]?(ebay)\.(com|de|fr)(?:/.*)? replace: $1 - name: amazon - pattern: https://[ [ a-zA-Z0-9 ]+\. ]?(amazon)\.(com|de|fr)(?:/.*)? + pattern: https://[[a-zA-Z0-9]+\.]?(amazon)\.(com|de|fr)(?:/.*)? replace: $1 - name: docker - pattern: https://([ a-zA-Z0-9 ]+)?[ \. ]?(docker)\.com(?:/.*)? + pattern: https://([a-zA-Z0-9]+)?[\.]?(docker)\.com(?:/.*)? replace: $1,$2 - name: xbox - pattern: https://[ [ a-zA-Z0-9 ]+\. ]?(xbox)\.com(?:/.*)? + pattern: https://[[a-zA-Z0-9]+\.]?(xbox)\.com(?:/.*)? replace: $1 - name: github - pattern: https://([ a-zA-Z0-9 ]+)?[ \. ]?(github)\.com[ / ]?([ a-zA-Z0-9\-\+_ ]+)(?:/)?([ a-zA-Z0-9\-\+_ ]+)?(?:/.*)? + pattern: https://([a-zA-Z0-9]+)?[\.]?(github)\.com[/]?([a-zA-Z0-9\-\+_]+)(?:/)?([a-zA-Z0-9\-\+_]+)?(?:/.*)? replace: $1,$2,$3,$4 - name: github.io - pattern: https://([ a-zA-Z0-9 ]+)\.(github)\.io[ / ]?([ a-zA-Z0-9\-\+_ ]+)(?:/)?([ a-zA-Z0-9\-\+_ ]+)?(?:/.*)? + pattern: https://([a-zA-Z0-9]+)\.(github)\.io[/]?([a-zA-Z0-9\-\+_]+)(?:/)?([a-zA-Z0-9\-\+_]+)?(?:/.*)? replace: $1,$2,$3 -```` +``` + +#### urlTagMapping +If the bookmark should match one - or more - of the urlTagMappings, then value of name is added as tag to this bookmark. + +Example: +https://github.com/azure/something will be tagged with microsoft_azure + +#### taggingRule +Dynamic tags can be assigned to the bookmarks on the basis of the URL using regular expression. If one of the patterns matches, the values of the groups are added to the bookmark as a tag. + +Example: +Here is an example using a reddit bookmark. +Url: +- https://www.reddit.com/r/selfhosted/comments/yzq6qp/running_a_mostly_sbcbased_nomad_cluster_in_my/?utm_source=share&utm_medium=android_app&utm_name=androidcss&utm_term=2&utm_content=share_button + +Pattern: +- https://(?:www\.)?(reddit)\.com(?:/r/)?([a-zA-Z0-9\-\+_]+)?(?:/.*)? + +Matches: +- https://www.reddit.com/r/selfhosted/comments/yzq6qp/running_a_mostly_sbcbased_nomad_cluster_in_my/?utm_source=share&utm_medium=android_app&utm_name=androidcss&utm_term=2&utm_content=share_button + +if you would change the pattern to the following. +Pattern: +- https://(?:www\.)?(reddit)\.com(?:/)?(r/[a-zA-Z0-9\-\+_]+)?(?:/.*)? + +then the following would match. +- https://www.reddit.com/r/selfhosted/comments/yzq6qp/running_a_mostly_sbcbased_nomad_cluster_in_my/?utm_source=share&utm_medium=android_app&utm_name=androidcss&utm_term=2&utm_content=share_button ## Docker Run -``` -docker run --rm -it --env-file .env -v /config.yml:/app/data/config.yml linkdingsync/wallabag:latest +```bash +docker run --rm -it --env-file .env -v /config.yml:/app/data/config.yml ghcr.io/spaytac/linkding-updater:latest ``` -You can also +```bash +docker run --rm -it --env-file .env -v /config.yml:/app/data/config.yml ghcr.io/spaytac/wallabag-sync:latest +``` ## Docker Compose You can find [examples](./examples/) in the examples folder.. -- [Wallabag Example](./examples/wallabag/) +- [WallabagSync Example](./examples/wallabag/) - [LinkdingUpdater Example](./examples/linkding/) -## Build Docker Image +## Build Docker Images ### LinkdingUpdater ``` -docker build -t linkdingsync/linkdingupdater:latest -f .\Dockerfile_Linkding . +docker build -t linkdingsync/linkding-updater:latest -f .\Dockerfile_Linkding . ``` ### WallabagSync ``` -docker build -t linkdingsync/wallabag:latest -f .\Dockerfile_Wallabag . +docker build -t linkdingsync/wallabag-sync:latest -f .\Dockerfile_Wallabag . ``` \ No newline at end of file diff --git a/examples/linkding/docker-compose.yml b/examples/linkding/docker-compose.yml index 23070c9..9c07970 100644 --- a/examples/linkding/docker-compose.yml +++ b/examples/linkding/docker-compose.yml @@ -2,9 +2,9 @@ version: '3.9' services: linkdingupdater: - image: linkdingsync/linkdingupdater:latest + image: ghcr.io/spaytac/linkding-updater:latest volumes: - - ./config.yml:/data/config.yml + - ./config.yml:/app/data/config.yml # env_file: # - .env environment: diff --git a/examples/wallabag/config/config.yml b/examples/wallabag/config.yml similarity index 100% rename from examples/wallabag/config/config.yml rename to examples/wallabag/config.yml diff --git a/examples/wallabag/docker-compose.yml b/examples/wallabag/docker-compose.yml index 10ce0b9..e32f13f 100644 --- a/examples/wallabag/docker-compose.yml +++ b/examples/wallabag/docker-compose.yml @@ -2,9 +2,9 @@ version: '3.9' services: wallabagsync: - image: linkdingsync/wallabag:latest + image: ghcr.io/spaytac/wallabag-sync:latest volumes: - - ./config.yml:/data/config.yml + - ./config.yml:/app/data/config.yml # env_file: # - .env environment: diff --git a/src/Wallabag/Handler/LinkdingBookmarkToWallabagHandler.cs b/src/Wallabag/Handler/LinkdingBookmarkToWallabagHandler.cs index 4c26fd0..0e603c6 100644 --- a/src/Wallabag/Handler/LinkdingBookmarkToWallabagHandler.cs +++ b/src/Wallabag/Handler/LinkdingBookmarkToWallabagHandler.cs @@ -26,6 +26,9 @@ namespace Wallabag.Handler { var settings = SettingsService.Settings; + // var settingsString = JsonSerializer.Serialize(settings); + // logger.LogInformation($"settings: {settingsString}"); + var tagName = configuration.GetValue("Worker:SyncTag"); linkdingBookmarks =