Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/f321x/untrack-rs

Rust crate to parse and remove tracking tokens from URLs contained in arbitrary text input
https://github.com/f321x/untrack-rs

advertising crate links nostr parsing privacy rust tracking urls

Last synced: about 3 hours ago
JSON representation

Rust crate to parse and remove tracking tokens from URLs contained in arbitrary text input

Awesome Lists containing this project

README

        

# untrack crate
This crate is intended to remove tracking tokens from URLs contained in any text input. The crate can either substitute the URLs in place or return a Vec of cleaned urls to a given text input.

## Usecase
Removing tracking tokens can improve the privacy of the user sharing the link containing the tokens and the consumer opening the shared link.

## Supported tracking tokens
The crate currently supports Twitter, X, YouTube, Instagram, Substack and Spotify tracking tokens. The exact tokens can be found in ```src/parsing_params.rs```.

## Example usage

### fn clean_urls_from_any_text(input: &String) -> Option>
```
let input =
String::from("Twitter link: https://twitter.com/user/status/123?utm_source=test&s=1234");

let expected = vec!["https://twitter.com/user/status/123".to_string()];

assert_eq!(clean_urls_from_any_text(&input), Some(expected));
```

### fn replace_urls_in_place(input: &mut String) -> Option<&mut String>
```
let mut input = String::from("Multiple URLs: https://twitter.com/user/status/123?s=12 and https://www.youtube.com/watch?v=abc&feature=share");

let result = replace_urls_in_place(&mut input);

assert!(result.is_some());

assert_eq!(input, "Multiple URLs: https://twitter.com/user/status/123 and https://www.youtube.com/watch?v=abc");
```