saturday update

main
iOS 3 years ago
parent 5508bff4e9
commit f9731125d5

@ -12,7 +12,6 @@
"blockquotes",
"bulletp_relationship",
"hyphenation_justification",
"externallink_icon",
"folder_4_icon",
"custom_icons_frontmatter_tags"
],

@ -37,5 +37,6 @@
"cooklang-obsidian",
"obsidian-dialogue-plugin",
"taskbone-ocr-plugin",
"obsidian-journey-plugin"
"obsidian-journey-plugin",
"link-favicon"
]

@ -183,7 +183,7 @@
"current": {
"year": 2021,
"month": 11,
"day": 11
"day": 13
},
"events": [
{
@ -563,7 +563,11 @@
"day": 7,
"month": 11
},
"category": "ID_a93b8bba4be8"
"category": "ID_a93b8bba4be8",
"end": {
"day": 7,
"month": 11
}
},
{
"id": "ID_395a7bcb5ae8",
@ -652,16 +656,11 @@
"name": "Lifestyle",
"note": "01.01 Life Orga/Lifestyle.md",
"date": {
"year": 2021,
"month": 11,
"year": 2022,
"month": 0,
"day": 10
},
"category": "ID_3b8a489a19da",
"end": {
"year": 2021,
"month": 11,
"day": 10
}
"category": "ID_3b8a489a19da"
},
{
"id": "ID_8bea89a97bb8",
@ -1033,7 +1032,7 @@
"name": "Task"
}
],
"date": 1639111841970
"date": 1639217057316
}
],
"currentCalendar": null,

@ -0,0 +1,210 @@
/*
THIS IS A GENERATED/BUNDLED FILE BY ESBUILD
if you want to view the source, please visit the github repository of this plugin
https://github.com/joethei/obisidian-link-favicon
*/
var __create = Object.create;
var __defProp = Object.defineProperty;
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
var __getOwnPropNames = Object.getOwnPropertyNames;
var __getProtoOf = Object.getPrototypeOf;
var __hasOwnProp = Object.prototype.hasOwnProperty;
var __markAsModule = (target) => __defProp(target, "__esModule", { value: true });
var __export = (target, all) => {
__markAsModule(target);
for (var name in all)
__defProp(target, name, { get: all[name], enumerable: true });
};
var __reExport = (target, module2, desc) => {
if (module2 && typeof module2 === "object" || typeof module2 === "function") {
for (let key of __getOwnPropNames(module2))
if (!__hasOwnProp.call(target, key) && key !== "default")
__defProp(target, key, { get: () => module2[key], enumerable: !(desc = __getOwnPropDesc(module2, key)) || desc.enumerable });
}
return target;
};
var __toModule = (module2) => {
return __reExport(__markAsModule(__defProp(module2 != null ? __create(__getProtoOf(module2)) : {}, "default", module2 && module2.__esModule && "default" in module2 ? { get: () => module2.default, enumerable: true } : { value: module2, enumerable: true })), module2);
};
var __async = (__this, __arguments, generator) => {
return new Promise((resolve, reject) => {
var fulfilled = (value) => {
try {
step(generator.next(value));
} catch (e) {
reject(e);
}
};
var rejected = (value) => {
try {
step(generator.throw(value));
} catch (e) {
reject(e);
}
};
var step = (x) => x.done ? resolve(x.value) : Promise.resolve(x.value).then(fulfilled, rejected);
step((generator = generator.apply(__this, __arguments)).next());
});
};
// src/main.ts
__export(exports, {
default: () => FaviconPlugin
});
var import_obsidian3 = __toModule(require("obsidian"));
// src/settings.ts
var import_obsidian2 = __toModule(require("obsidian"));
// src/provider.ts
var import_obsidian = __toModule(require("obsidian"));
var providers = {
"google": { name: "Google", url: (domain) => Promise.resolve("https://www.google.com/s2/favicons?domain=" + domain) },
"duckduckgo": { name: "DuckDuckGo", url: (domain) => Promise.resolve("https://icons.duckduckgo.com/ip3/" + domain + ".ico") },
"iconhorse": { name: "Icon Horse", url: (domain) => Promise.resolve("https://icon.horse/icon/" + domain) },
"splitbee": { name: "Splitbee", url: (domain) => Promise.resolve("https://favicon.splitbee.io/?url=" + domain) },
"besticon": { name: "The Favicon Finder", url: (domain, settings) => {
const host = settings.provider === "besticon" ? settings.providerDomain : settings.fallbackProviderDomain;
return Promise.resolve(host + "/icon?url=" + domain + "&size=32..64..256");
} },
"favicongrabber": { name: "Favicon Grabber", url: (domain) => __async(void 0, null, function* () {
const icons = JSON.parse(yield (0, import_obsidian.request)({
method: "GET",
url: "https://favicongrabber.com/api/grab/" + domain
}));
if (icons.length === 0)
return Promise.resolve("http://invalid.stuff");
return Promise.resolve(icons.icons[0].src);
}) }
};
// src/settings.ts
var DEFAULT_SETTINGS = {
provider: "duckduckgo",
fallbackProvider: "google",
providerDomain: "",
fallbackProviderDomain: "",
ignored: ""
};
var FaviconSettings = class extends import_obsidian2.PluginSettingTab {
constructor(app, plugin) {
super(app, plugin);
this.plugin = plugin;
}
display() {
const { containerEl } = this;
containerEl.empty();
containerEl.createEl("h2", { text: "Link Favicons" });
new import_obsidian2.Setting(containerEl).setName("Icon Provider").addDropdown((dropdown) => {
for (const id in providers) {
if (providers.hasOwnProperty(id)) {
dropdown.addOption(id, providers[id].name);
}
}
dropdown.setValue(this.plugin.settings.provider).onChange((value) => __async(this, null, function* () {
this.plugin.settings.provider = value;
yield this.plugin.saveSettings();
this.display();
}));
});
if (Array.of("besticon").includes(this.plugin.settings.provider)) {
new import_obsidian2.Setting(containerEl).setName("Provider Domain").setDesc("This Provider is be selfhosted, please specify your deployment url. Refer to the readme of the provider for deployment instructions.").addText((text) => text.setValue(this.plugin.settings.providerDomain).onChange((value) => __async(this, null, function* () {
this.plugin.settings.providerDomain = value;
yield this.plugin.saveSettings();
})));
}
new import_obsidian2.Setting(containerEl).setName("Fallback Icon Provider").addDropdown((dropdown) => {
for (const id in providers) {
if (providers.hasOwnProperty(id)) {
dropdown.addOption(id, providers[id].name);
}
}
dropdown.setValue(this.plugin.settings.fallbackProvider).onChange((value) => __async(this, null, function* () {
this.plugin.settings.fallbackProvider = value;
yield this.plugin.saveSettings();
this.display();
}));
});
if (Array.of("besticon").includes(this.plugin.settings.fallbackProvider)) {
new import_obsidian2.Setting(containerEl).setName("Fallback Provider Domain").setDesc("This Provider is be selfhosted, please specify your deployment url. Refer to the readme of the provider for deployment instructions.").addText((text) => text.setValue(this.plugin.settings.fallbackProviderDomain).onChange((value) => __async(this, null, function* () {
this.plugin.settings.fallbackProviderDomain = value;
yield this.plugin.saveSettings();
})));
}
new import_obsidian2.Setting(containerEl).setName("Ignored Domains").setDesc("Don't show an favicon for these domains(one per line)").addTextArea((text) => {
text.setValue(this.plugin.settings.ignored).onChange((value) => __async(this, null, function* () {
this.plugin.settings.ignored = value;
yield this.plugin.saveSettings();
}));
text.inputEl.setAttr("rows", 8);
});
}
};
// src/main.ts
var FaviconPlugin = class extends import_obsidian3.Plugin {
isDisabled(el) {
if (el.getAttribute("data-no-favicon"))
return true;
if (el.getAttribute("data-favicon"))
return true;
const style = getComputedStyle(el, ":before").getPropertyValue("background-url");
console.log(style);
}
onload() {
return __async(this, null, function* () {
console.log("enabling plugin: link favicons");
yield this.loadSettings();
this.addSettingTab(new FaviconSettings(this.app, this));
this.registerMarkdownPostProcessor((element, _) => __async(this, null, function* () {
const provider = providers[this.settings.provider];
const fallbackProvider = providers[this.settings.fallbackProvider];
if (!provider || !fallbackProvider) {
console.log("Link Favicons: misconfigured providers");
return;
}
const links = element.querySelectorAll("a.external-link:not([data-favicon])");
for (let index = 0; index < links.length; index++) {
const link = links.item(index);
if (!this.isDisabled(link)) {
link.dataset.favicon = "true";
try {
const domain = new URL(link.href);
if (!this.settings.ignored.split("\n").contains(domain.hostname)) {
const el = document.createElement("object");
el.addClass("link-favicon");
el.dataset.host = domain.hostname;
el.data = yield provider.url(domain.hostname, this.settings);
el.data.contains(".ico") ? el.type = "image/x-icon" : el.type = "image/png";
el.style.height = "0.8em";
el.style.display = "inline-block";
const img = el.createEl("img");
img.src = yield fallbackProvider.url(domain.hostname, this.settings);
img.addClass("link-favicon");
img.style.height = "0.8em";
img.style.display = "block";
link.prepend(el);
}
} catch (e) {
console.log("Link Favicons: invalid url: " + link.href);
}
}
}
}));
});
}
onunload() {
console.log("disabling plugin: link favicons");
}
loadSettings() {
return __async(this, null, function* () {
this.settings = Object.assign({}, DEFAULT_SETTINGS, yield this.loadData());
});
}
saveSettings() {
return __async(this, null, function* () {
yield this.saveData(this.settings);
});
}
};

@ -0,0 +1,10 @@
{
"id": "link-favicon",
"name": "Link Favicons",
"version": "1.2.2",
"minAppVersion": "0.12.0",
"description": "See the favicon for a linked website. ",
"author": "Johannes Theiner",
"authorUrl": "https://github.com/joethei",
"isDesktopOnly": false
}

@ -0,0 +1,8 @@
.link-favicon{
vertical-align: bottom;
margin-bottom: 0.3em;
margin-left: 0.1em;
margin-right: 0.1em;
cursor: pointer !important;
image-rendering: -webkit-optimize-contrast;
}

File diff suppressed because one or more lines are too long

@ -1,7 +1,7 @@
{
"id": "meld-encrypt",
"name": "Meld Encrypt",
"version": "1.5.1",
"version": "1.6.0",
"minAppVersion": "0.12.15",
"description": "Hide secrets in your notes",
"author": "meld-cp",

@ -36,3 +36,7 @@
margin: 0 0 0 1em;
width: auto;
}
.meld-e-hint{
flex: 20;
}

File diff suppressed because one or more lines are too long

@ -1,8 +1,8 @@
{
"id": "obsidian-advanced-uri",
"name": "Advanced Obsidian URI",
"name": "Advanced URI",
"description": "Advanced modes for Obsidian URI",
"isDesktopOnly": false,
"js": "main.js",
"version": "1.16.0"
"version": "1.16.1"
}

File diff suppressed because one or more lines are too long

@ -1,7 +1,7 @@
{
"id": "obsidian-dice-roller",
"name": "Dice Roller",
"version": "7.8.6",
"version": "7.10.1",
"minAppVersion": "0.12.15",
"description": "Inline dice rolling for Obsidian.md",
"author": "Jeremy Valentine",

@ -1,3 +1,4 @@
/* src/assets/main.css */
.dice-roller {
position: relative;
display: inline-block;
@ -19,22 +20,18 @@
font-size: inherit;
margin-left: 0.25em;
}
.dice-roller.has-embed .dice-roller-result {
width: 100%;
padding: 1rem;
}
.dice-roller.has-embed .dice-roller-result .markdown-embed {
display: flex;
margin-top: 0.5rem;
padding-right: 0;
}
.dice-roller.has-embed .dice-roller-button {
padding-top: 0.5rem;
}
.dice.tooltip {
max-width: unset !important;
}
@ -47,25 +44,18 @@
font-style: italic;
text-align: center;
}
.dice-roller.has-embed .internal-embed {
width: 100%;
}
.dice-roller.has-embed
.internal-embed
*:last-child:not(svg):not(.dice-content-copy) {
.dice-roller.has-embed .internal-embed *:last-child:not(svg):not(.dice-content-copy) {
margin-bottom: 15px;
}
.dice-roller.has-embed .dice-file-name {
font-style: italic;
}
.dice-section-result {
position: relative;
}
.dice-content-copy {
color: var(--text-faint);
cursor: pointer;
@ -74,26 +64,20 @@
.dice-content-copy.no-show {
display: none;
}
.dice-content-copy:hover {
color: var(--text-normal);
}
.dice-roller.has-embed .dice-section-result .dice-content-copy,
.dice-content-copy:hover {
opacity: 1;
}
.dice-roller-result {
position: relative;
}
.dice-roller-result .embedded-table-result p {
margin: 0;
display: inline-block;
}
/** Settings */
.dice-roller-settings .coffee {
width: 60%;
color: var(--text-faint);
@ -103,21 +87,17 @@
.dice-roller-settings .coffee img {
height: 30px;
}
.dice-roller-setting-additional-container
> .setting-item:not(.setting-item-heading) {
.dice-roller-setting-additional-container > .setting-item:not(.setting-item-heading) {
border: 0px;
}
.dice-roller-setting-additional-container {
border-bottom: 1px solid var(--background-modifier-border);
border-top: 1px solid var(--background-modifier-border);
padding: 18px 0;
}
.dice-roller-setting-additional-container > .setting-item-heading:only-child {
padding-bottom: 18px;
}
.dice-roller-setting-additional-container > .additional .no-formulas {
width: auto;
display: block;
@ -127,35 +107,26 @@
border-top: 0;
padding-top: 9px;
}
.dice-roller-setting-additional-container
> .additional
> .setting-item
> .setting-item-control
> *:first-child {
.dice-roller-setting-additional-container > .additional > .setting-item > .setting-item-control > *:first-child {
margin: 0 6px;
}
.dice-roller-setting-additional-container .add-new-formula {
margin: 0 1rem;
padding: 1rem 1rem 0 1rem;
border-radius: 0.5rem;
box-shadow: 0 0 0.25rem var(--background-modifier-box-shadow);
}
.dice-roller-setting-additional-container
.add-new-formula
.formula-data
.setting-item {
.dice-roller-setting-additional-container .add-new-formula .formula-data .setting-item {
border: 0;
}
/* src/view/view.css */
.renderer-container {
position: absolute;
top: 0;
left: 0;
width: 100vw;
height: 100vh;
pointer-events: none;
z-index: 9999999;
transition: opacity 1s ease-out;
@ -164,7 +135,6 @@
cursor: not-allowed;
opacity: 0.75;
}
/** Dice Roller View CSS */
.workspace-split.mod-right-split .view-content.dice-roller-view {
padding: 0.5rem;
display: flex;
@ -172,14 +142,12 @@
justify-content: flex-start;
gap: 12px;
}
.dice-roller-view .dice-roller-grid {
display: grid;
grid-template-rows: auto auto;
justify-content: center;
gap: 6px;
}
.dice-roller-view .dice-roller-grid .dice-buttons {
display: flex;
flex-flow: row wrap;
@ -197,16 +165,13 @@
justify-content: flex-start;
align-items: center;
}
.dice-roller-view .setting-editor-extra-setting-button {
width: fit-content;
}
.dice-roller-view .dice-button .clickable-icon > svg {
width: 36px;
height: 36px;
}
.dice-roller-view .dice-context {
display: grid;
grid-template-columns: 1fr auto;
@ -215,10 +180,10 @@
display: flex;
align-items: center;
}
.dice-roller-view/* .dice-context */ input, .dice-roller-view textarea {
.dice-roller-view input,
.dice-roller-view textarea {
width: 100%;
}
.dice-roller-view .dice-roller-grid .advantage-disadvantage {
display: flex;
justify-content: center;
@ -229,7 +194,6 @@
margin: 0;
min-width: 66px;
}
.dice-roller-view .dice-roller-formula {
display: flex;
flex-flow: column nowrap;
@ -237,21 +201,17 @@
align-items: flex-end;
gap: 12px;
}
.dice-roller-view .dice-roller-formula .action-buttons {
display: flex;
justify-content: flex-end;
}
.dice-roller-view .dice-roller-formula button {
margin-right: 0;
margin-left: 12px;
}
.dice-roller-view hr {
margin-bottom: 0;
}
.dice-roller-view .dice-roller-results-container .dice-roller-results-header {
display: flex;
justify-content: space-between;
@ -260,13 +220,9 @@
width: 100%;
border-bottom: 1px solid var(--background-modifier-border);
}
.dice-roller-view
.dice-roller-results-container
.dice-roller-results-header
h4 {
.dice-roller-view .dice-roller-results-container .dice-roller-results-header h4 {
margin: 0px;
}
.dice-roller-view .dice-roller-results {
display: flex;
flex-flow: column nowrap;
@ -281,7 +237,6 @@
border-radius: 0.25rem;
position: relative;
}
.dice-roller-view .dice-roller-results .view-result .dice-content-copy {
position: absolute;
top: 0;
@ -295,7 +250,6 @@
padding: 0.25rem;
margin: 0;
}
.dice-roller-view .dice-roller-results .view-result strong {
font-size: x-large;
}
@ -308,22 +262,17 @@
padding: 0.25rem;
font-size: x-small;
}
.dice-roller-view
.dice-roller-results
.view-result
.result-context
.clickable-icon {
.dice-roller-view .dice-roller-results .view-result .result-context .clickable-icon {
margin-right: 0;
}
.dice-roller-view .dice-roller-results > span {
color: var(--text-muted);
margin: 0 auto;
}
.dice-renderer {
position: absolute;
top: 0;
left: 0;
}
/* src/styles.css */

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

@ -1,7 +1,7 @@
{
"id": "rss-reader",
"name": "RSS Reader",
"version": "0.7.1",
"version": "0.8.0",
"minAppVersion": "0.9.12",
"description": "Read RSS Feeds from within obsidian",
"author": "Johannes Theiner",

@ -61,3 +61,11 @@ input.is-invalid {
.rss-tooltip:hover .tooltiptext {
visibility: visible;
}
.rss-content img {
max-width: 100%;
}
.rss-subtitle {
display: inline;
}

@ -4,18 +4,13 @@
"type": "split",
"children": [
{
"id": "48dd0a910a32e474",
"id": "f02b54d5135a4e7e",
"type": "leaf",
"state": {
"type": "map",
"type": "markdown",
"state": {
"version": 15,
"mapCenter": {
"lat": 40.713955826286046,
"lng": -180.70312500000003
},
"mapZoom": 1,
"tags": []
"file": "02.03 Zürich/@Bars Zürich.md",
"mode": "preview"
}
}
}
@ -73,6 +68,7 @@
"state": {
"type": "backlink",
"state": {
"file": "02.03 Zürich/@Bars Zürich.md",
"collapseAll": false,
"extraContext": false,
"sortOrder": "alphabetical",
@ -92,15 +88,15 @@
}
},
{
"id": "23ee6daffe147aea",
"id": "15bcb037002a76a7",
"type": "leaf",
"state": {
"type": "RSS_FEED",
"type": "FANTASY_CALENDAR",
"state": {}
}
},
{
"id": "bda35bb1b7e69269",
"id": "fc559232cdc23159",
"type": "leaf",
"state": {
"type": "DICE_ROLLER_VIEW",
@ -108,26 +104,27 @@
}
},
{
"id": "15bcb037002a76a7",
"id": "423db06a49dba199",
"type": "leaf",
"state": {
"type": "FANTASY_CALENDAR",
"type": "RSS_FEED",
"state": {}
}
}
]
],
"currentTab": 4
},
"active": "48dd0a910a32e474",
"active": "f02b54d5135a4e7e",
"lastOpenFiles": [
"01.03 Family/Pierre Bédier.md",
"01.03 Family/Philomène de Villeneuve.md",
"01.03 Family/Opportune de Villeneuve.md",
"01.03 Family/Ophélie Bédier.md",
"01.03 Family/Olympe Bédier.md",
"01.03 Family/Noémie de Villeneuve.md",
"01.03 Family/Marguerite de Villeneuve.md",
"01.03 Family/Louis Bédier.md",
"01.03 Family/Jérôme Bédier.md",
"01.03 Family/Laurence Bédier.md"
"02.03 Zürich/@Bars Zürich.md",
"02.03 Zürich/@Restaurants Zürich.md",
"02.03 Zürich/Razzia.md",
"02.03 Zürich/@@Zürich.md",
"00.01 Admin/Obsidian plugins.md",
"05.02 Networks/Server Tools.md",
"00.03 News/News.md",
"01.01 Life Orga/Lifestyle.md",
"06.02 Investments/Le Miel de Paris.md",
"01.03 Family/Pierre Bédier.md"
]
}

@ -43,14 +43,15 @@ style: number
- [ ] <mark style="background:grey">Plugin</mark>: crypto lookup
- [ ] <mark style="background:grey">Plugin</mark>: fix timetable
- [ ] <mark style="background:grey">Plugin</mark>: [wordpress](https://github.com/devbean/obsidian-wordpress)
- [x] <mark style="background:grey">App</mark>: Obsidian optimisation for iOS ✅ 2021-12-08
- [!] <mark style="background:grey">Export</mark>: Obsidian -> Email
- [x] <mark style="background:grey">Export</mark>: Obsidian -> Calendar ✅ 2021-12-08
- [x] <mark style="background:grey">Data</mark>: Queries within Tables ✅ 2021-10-23
- [x] <mark style="background:grey">Edit</mark>: Emoji Shortcodes for iOS ✅ 2021-10-23
- [x] <mark style="background:grey">Edit</mark>: Icon plugin for iOS ✅ 2021-10-23
- [?] <mark style="background:grey">Map</mark>: QuickAdd/getLocation for iOS
- [?] <mark style="background:grey">Map</mark>: Map rendering for iOS (Leaflet/Map View)
- [x] <mark style="background:grey">Map</mark>: QuickAdd/getLocation for iOS ✅ 2021-12-11
- [x] <mark style="background:grey">Map</mark>: Map rendering for iOS (Leaflet/Map View) ✅ 2021-12-11
&emsp;

@ -8,7 +8,7 @@ Priority: "Low"
Status: "In-progress"
StartDate: 2021-08-12
DueDate: 2021-12-31
NextReviewDate: &RD 2021-12-10
NextReviewDate: &RD 2022-01-10
TimeStamp: 2021-08-12
locations:
fc-calendar: "D2D Calendar"

@ -38,6 +38,8 @@ id CreateNote
```
^button-ParisNewNote
```button
name Save
type command

@ -56,10 +56,10 @@ style: number
&emsp;
#### Notting Hill
#### Bellevue
[[#^Top|TOP]]
```dataviewjs
dv.view("00.01 Admin/dv-views/query_place", {country: "Suisse", placetype: "Bar", area: "NottingHill"})
dv.view("00.01 Admin/dv-views/query_place", {country: "CH", placetype: "Bar", area: "Bellevue"})
```
&emsp;

@ -55,10 +55,10 @@ style: number
&emsp;
#### French
#### Swiss
[[#^Top|TOP]]
```dataviewjs
dv.view("00.01 Admin/dv-views/query_place", {country: "Suisse", placetype: "Restaurant", style: "French"})
dv.view("00.01 Admin/dv-views/query_place", {country: "CH", placetype: "Restaurant", style: "Swiss"})
```
&emsp;
@ -114,7 +114,7 @@ dv.view("00.01 Admin/dv-views/query_place", {country: "Suisse", placetype: "Rest
#### Marais
[[#^Top|TOP]]
```dataviewjs
dv.view("00.01 Admin/dv-views/query_place", {country: "Suisse", placetype: "Restaurant", area: "Marais"})
dv.view("00.01 Admin/dv-views/query_place", {country: "CH", placetype: "Restaurant", area: "Bellevue"})
```
&emsp;

@ -0,0 +1,91 @@
---
Tag: ["Restaurant"]
Date: 2021-12-11
DocType: "Place"
Hierarchy: "NonRoot"
TimeStamp:
location: [47.3607763,8.551603810962654]
Place:
Type: ["Restaurant", "Bar"]
SubType: Modern
Style: Swiss
Location: "Bellevue"
Country: "CH"
Status: "Prospect"
---
Parent:: [[@Restaurants Zürich|Restaurants in Zürich]]
---
&emsp;
```button
name Save
type command
action Save current file
id Save
```
^button-RazziaSave
&emsp;
# Razzia
&emsp;
```ad-abstract
title: Summary
collapse: open
1ere recommendation in Zürich
```
&emsp;
```toc
style: number
```
&emsp;
---
&emsp;
### Contact
&emsp;
```ad-address
~~~
Seefeldstrasse 82
8008 Zürich
Switzerland
~~~
```
&emsp;
Phone:: <a href="tel:++41442967070">044 296 70 70</a>
Email:: welcome@razzia-zuerich.ch
Website:: [razzia. restaurant & bar Zürich - home](https://razzia-zuerich.ch/)
&emsp;
---
&emsp;
### Notes
&emsp;
Loret ipsum
&emsp;
&emsp;
Loading…
Cancel
Save