main
iOS 2 years ago
parent d8761eb1aa
commit e988f45eeb

@ -95,6 +95,6 @@
"repelStrength": 10,
"linkStrength": 1,
"linkDistance": 250,
"scale": 0.18937201047670352,
"scale": 0.21574289733337787,
"close": true
}

File diff suppressed because one or more lines are too long

@ -1,7 +1,7 @@
{
"id": "dataview",
"name": "Dataview",
"version": "0.5.23",
"version": "0.5.31",
"minAppVersion": "0.13.11",
"description": "Complex data views for the data-obsessed.",
"author": "Michael Brenan <blacksmithgu@gmail.com>",

@ -43,6 +43,11 @@
margin: 0em !important;
}
.dataview-result-list-ul {
margin-block-start: 0.2em !important;
margin-block-end: 0.2em !important;
}
/** Generic grouping styling. */
.dataview.result-group {
padding-left: 8px;

@ -12,8 +12,8 @@
"checkpointList": [
{
"path": "/",
"date": "2022-06-05",
"size": 5089980
"date": "2022-06-08",
"size": 5105668
}
],
"activityHistory": [
@ -611,6 +611,18 @@
{
"date": "2022-06-05",
"value": 143316
},
{
"date": "2022-06-06",
"value": 13351
},
{
"date": "2022-06-07",
"value": 1263
},
{
"date": "2022-06-08",
"value": 1092
}
]
}

@ -6,5 +6,5 @@
"author": "Trevor Nichols",
"authorUrl": "https://github.com/tnichols217/obsidian-columns",
"isDesktopOnly": false,
"version": "1.1.4"
"version": "1.1.6"
}

@ -3,6 +3,9 @@
padding: 15px 20px;
flex-wrap: wrap;
gap: 20px;
}
:not(.admonition-content .columnParent).columnParent {
white-space: normal
}

@ -4183,14 +4183,34 @@
"size": 319,
"tags": 0,
"links": 1
},
"00.01 Admin/Calendars/2022-06-06.md": {
"size": 1016,
"tags": 0,
"links": 4
},
"00.03 News/Albert Camus The philosopher who resisted despair.md": {
"size": 12383,
"tags": 3,
"links": 2
},
"00.01 Admin/Calendars/2022-06-07.md": {
"size": 1014,
"tags": 0,
"links": 4
},
"00.01 Admin/Calendars/2022-06-08.md": {
"size": 1015,
"tags": 0,
"links": 4
}
},
"commitTypes": {
"/": {
"Refactor": 570,
"Create": 504,
"Link": 1026,
"Expand": 471
"Refactor": 571,
"Create": 508,
"Link": 1031,
"Expand": 474
}
},
"dailyCommits": {
@ -4202,17 +4222,17 @@
"4": 12,
"5": 6,
"6": 18,
"7": 182,
"8": 254,
"7": 183,
"8": 256,
"9": 199,
"10": 133,
"10": 135,
"11": 103,
"12": 121,
"13": 217,
"14": 145,
"15": 101,
"14": 147,
"15": 103,
"16": 94,
"17": 118,
"17": 122,
"18": 282,
"19": 109,
"20": 109,
@ -4223,9 +4243,9 @@
},
"weeklyCommits": {
"/": {
"Mon": 376,
"Tue": 205,
"Wed": 253,
"Mon": 383,
"Tue": 208,
"Wed": 256,
"Thu": 313,
"Fri": 228,
"Sat": 0,
@ -4235,6 +4255,9 @@
"recentCommits": {
"/": {
"Expanded": [
"<a class=\"internal-link\" href=\"00.01 Admin/Calendars/2022-06-08.md\"> 2022-06-08 </a>",
"<a class=\"internal-link\" href=\"00.01 Admin/Calendars/2022-06-07.md\"> 2022-06-07 </a>",
"<a class=\"internal-link\" href=\"00.01 Admin/Calendars/2022-06-06.md\"> 2022-06-06 </a>",
"<a class=\"internal-link\" href=\"00.01 Admin/Calendars/2022-06-05.md\"> 2022-06-05 </a>",
"<a class=\"internal-link\" href=\"00.01 Admin/Calendars/2022-06-04.md\"> 2022-06-04 </a>",
"<a class=\"internal-link\" href=\"00.01 Admin/Calendars/2022-06-04.md\"> 2022-06-04 </a>",
@ -4282,12 +4305,13 @@
"<a class=\"internal-link\" href=\"02.03 Zürich/Razzia.md\"> Razzia </a>",
"<a class=\"internal-link\" href=\"00.01 Admin/Calendars/2022-05-15.md\"> 2022-05-15 </a>",
"<a class=\"internal-link\" href=\"00.01 Admin/Calendars/2022-05-13.md\"> 2022-05-13 </a>",
"<a class=\"internal-link\" href=\"05.02 Networks/Configuring UFW.md\"> Configuring UFW </a>",
"<a class=\"internal-link\" href=\"00.01 Admin/Calendars/2022-05-14.md\"> 2022-05-14 </a>",
"<a class=\"internal-link\" href=\"00.01 Admin/Calendars/2022-05-13.md\"> 2022-05-13 </a>",
"<a class=\"internal-link\" href=\"00.01 Admin/Calendars/2022-05-12.md\"> 2022-05-12 </a>"
"<a class=\"internal-link\" href=\"05.02 Networks/Configuring UFW.md\"> Configuring UFW </a>"
],
"Created": [
"<a class=\"internal-link\" href=\"00.01 Admin/Calendars/2022-06-08.md\"> 2022-06-08 </a>",
"<a class=\"internal-link\" href=\"00.01 Admin/Calendars/2022-06-07.md\"> 2022-06-07 </a>",
"<a class=\"internal-link\" href=\"00.02 Inbox/Albert Camus The philosopher who resisted despair.md\"> Albert Camus The philosopher who resisted despair </a>",
"<a class=\"internal-link\" href=\"00.01 Admin/Calendars/2022-06-06.md\"> 2022-06-06 </a>",
"<a class=\"internal-link\" href=\"00.02 Inbox/Youtube - YouTube.md\"> Youtube - YouTube </a>",
"<a class=\"internal-link\" href=\"00.02 Inbox/Riding Londons Unexpectedly Fantastic Elizabeth Line.md\"> Riding Londons Unexpectedly Fantastic Elizabeth Line </a>",
"<a class=\"internal-link\" href=\"00.02 Inbox/He was my high school journalism teacher. Then I investigated his relationships with teenage girls..md\"> He was my high school journalism teacher. Then I investigated his relationships with teenage girls. </a>",
@ -4334,13 +4358,10 @@
"<a class=\"internal-link\" href=\"00.01 Admin/Calendars/2022-05-19.md\"> 2022-05-19 </a>",
"<a class=\"internal-link\" href=\"00.01 Admin/Calendars/2022-05-18.md\"> 2022-05-18 </a>",
"<a class=\"internal-link\" href=\"00.01 Admin/Calendars/2022-05-17.md\"> 2022-05-17 </a>",
"<a class=\"internal-link\" href=\"00.01 Admin/Calendars/2022-05-16.md\"> 2022-05-16 </a>",
"<a class=\"internal-link\" href=\"00.02 Inbox/The Untold Story of the White Houses Record Collection.md\"> The Untold Story of the White Houses Record Collection </a>",
"<a class=\"internal-link\" href=\"00.02 Inbox/North Korea Hacked Him. So He Took Down Its Internet.md\"> North Korea Hacked Him. So He Took Down Its Internet </a>",
"<a class=\"internal-link\" href=\"00.02 Inbox/The Clockwork Orgasm - Common Reader.md\"> The Clockwork Orgasm - Common Reader </a>",
"<a class=\"internal-link\" href=\"00.01 Admin/Calendars/2022-05-15.md\"> 2022-05-15 </a>"
"<a class=\"internal-link\" href=\"00.01 Admin/Calendars/2022-05-16.md\"> 2022-05-16 </a>"
],
"Renamed": [
"<a class=\"internal-link\" href=\"00.03 News/Albert Camus The philosopher who resisted despair.md\"> Albert Camus The philosopher who resisted despair </a>",
"<a class=\"internal-link\" href=\"00.05 Media/The Mafia, The CIA and George Bush.md\"> The Mafia, The CIA and George Bush </a>",
"<a class=\"internal-link\" href=\"00.02 Inbox/The Mafia, The CIA and George Bush.md\"> The Mafia, The CIA and George Bush </a>",
"<a class=\"internal-link\" href=\"00.03 News/Riding Londons Unexpectedly Fantastic Elizabeth Line.md\"> Riding Londons Unexpectedly Fantastic Elizabeth Line </a>",
@ -4390,10 +4411,10 @@
"<a class=\"internal-link\" href=\"03.01 Reading list/Lionel Asbo.md\"> Lionel Asbo </a>",
"<a class=\"internal-link\" href=\"03.03 Food & Wine/Spanakopia pie.md\"> Spanakopia pie </a>",
"<a class=\"internal-link\" href=\"00.03 News/The Unseen Scars of Those Who Kill Via Remote Control.md\"> The Unseen Scars of Those Who Kill Via Remote Control </a>",
"<a class=\"internal-link\" href=\"00.03 News/Down the Hatch.md\"> Down the Hatch </a>",
"<a class=\"internal-link\" href=\"00.02 Inbox/Down the Hatch.md\"> Down the Hatch </a>"
"<a class=\"internal-link\" href=\"00.03 News/Down the Hatch.md\"> Down the Hatch </a>"
],
"Tagged": [
"<a class=\"internal-link\" href=\"00.03 News/Albert Camus The philosopher who resisted despair.md\"> Albert Camus The philosopher who resisted despair </a>",
"<a class=\"internal-link\" href=\"00.03 News/He was my high school journalism teacher. Then I investigated his relationships with teenage girls..md\"> He was my high school journalism teacher. Then I investigated his relationships with teenage girls. </a>",
"<a class=\"internal-link\" href=\"00.03 News/Riding Londons Unexpectedly Fantastic Elizabeth Line.md\"> Riding Londons Unexpectedly Fantastic Elizabeth Line </a>",
"<a class=\"internal-link\" href=\"00.03 News/When Cars Kill Pedestrians.md\"> When Cars Kill Pedestrians </a>",
@ -4443,8 +4464,7 @@
"<a class=\"internal-link\" href=\"03.03 Food & Wine/Thai Basil Sauce Noodles with Jammy Eggs.md\"> Thai Basil Sauce Noodles with Jammy Eggs </a>",
"<a class=\"internal-link\" href=\"00.03 News/How an Ivy League School Turned Against a Student.md\"> How an Ivy League School Turned Against a Student </a>",
"<a class=\"internal-link\" href=\"Cantinetta Antinori.md\"> Cantinetta Antinori </a>",
"<a class=\"internal-link\" href=\"Café des Amis.md\"> Café des Amis </a>",
"<a class=\"internal-link\" href=\"00.02 Inbox/Big Shells With Spicy Lamb Sausage and Pistachios.md\"> Big Shells With Spicy Lamb Sausage and Pistachios </a>"
"<a class=\"internal-link\" href=\"Café des Amis.md\"> Café des Amis </a>"
],
"Refactored": [
"<a class=\"internal-link\" href=\"01.02 Home/@Main Dashboard.md\"> @Main Dashboard </a>",
@ -4538,6 +4558,10 @@
"<a class=\"internal-link\" href=\"00.04 IT/Wordle self hosting.md\"> Wordle self hosting </a>"
],
"Linked": [
"<a class=\"internal-link\" href=\"00.01 Admin/Calendars/2022-06-08.md\"> 2022-06-08 </a>",
"<a class=\"internal-link\" href=\"00.01 Admin/Calendars/2022-06-07.md\"> 2022-06-07 </a>",
"<a class=\"internal-link\" href=\"00.03 News/Albert Camus The philosopher who resisted despair.md\"> Albert Camus The philosopher who resisted despair </a>",
"<a class=\"internal-link\" href=\"00.01 Admin/Calendars/2022-06-06.md\"> 2022-06-06 </a>",
"<a class=\"internal-link\" href=\"00.03 News/He was my high school journalism teacher. Then I investigated his relationships with teenage girls..md\"> He was my high school journalism teacher. Then I investigated his relationships with teenage girls. </a>",
"<a class=\"internal-link\" href=\"00.03 News/When Cars Kill Pedestrians.md\"> When Cars Kill Pedestrians </a>",
"<a class=\"internal-link\" href=\"00.03 News/The making of Prince William.md\"> The making of Prince William </a>",
@ -4584,11 +4608,7 @@
"<a class=\"internal-link\" href=\"00.01 Admin/Calendars/2022-06-05 Retour a Zurich.md\"> 2022-06-05 Retour a Zurich </a>",
"<a class=\"internal-link\" href=\"00.01 Admin/Calendars/2022-05-25.md\"> 2022-05-25 </a>",
"<a class=\"internal-link\" href=\"00.01 Admin/Calendars/2022-05-24.md\"> 2022-05-24 </a>",
"<a class=\"internal-link\" href=\"00.01 Admin/Calendars/2022-05-24.md\"> 2022-05-24 </a>",
"<a class=\"internal-link\" href=\"00.01 Admin/Calendars/2022-05-23.md\"> 2022-05-23 </a>",
"<a class=\"internal-link\" href=\"00.03 News/The Clockwork Orgasm - Common Reader.md\"> The Clockwork Orgasm - Common Reader </a>",
"<a class=\"internal-link\" href=\"00.03 News/American Racism and the Buffalo Shooting.md\"> American Racism and the Buffalo Shooting </a>",
"<a class=\"internal-link\" href=\"00.03 News/Coffeezilla, the YouTuber Exposing Crypto Scams.md\"> Coffeezilla, the YouTuber Exposing Crypto Scams </a>"
"<a class=\"internal-link\" href=\"00.01 Admin/Calendars/2022-05-24.md\"> 2022-05-24 </a>"
],
"Removed Tags from": [
"<a class=\"internal-link\" href=\"06.02 Investments/Le Miel de Paris.md\"> Le Miel de Paris </a>",

File diff suppressed because one or more lines are too long

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

@ -1635,7 +1635,7 @@ var createPopper = /* @__PURE__ */ popperGenerator({
var pluginName = "obsidian-media-db-plugin";
var contactEmail = "m.projects.code@gmail.com";
var mediaDbTag = "mediaDB";
var mediaDbVersion = "0.1.11";
var mediaDbVersion = "0.2.0";
var debug = false;
function wrapAround(value, size) {
return (value % size + size) % size;
@ -1645,6 +1645,9 @@ function debugLog(o) {
console.log(o);
}
}
function containsOnlyLettersAndUnderscores(str) {
return /^[a-zA-Z_]+$/.test(str);
}
function replaceIllegalFileNameCharactersInString(string) {
return string.replace(/[\\,#%&{}/*<>$"@.?]*/g, "").replace(/:+/g, " -");
}
@ -1880,6 +1883,11 @@ var DEFAULT_SETTINGS = {
gameFileNameTemplate: "{{ title }} ({{ year }})",
wikiFileNameTemplate: "{{ title }}",
musicReleaseFileNameTemplate: "{{ title }} (by {{ ENUM:artists }} - {{ year }})",
moviePropertyConversionRules: "",
seriesPropertyConversionRules: "",
gamePropertyConversionRules: "",
wikiPropertyConversionRules: "",
musicReleasePropertyConversionRules: "",
templates: true
};
var MediaDbSettingTab = class extends import_obsidian4.PluginSettingTab {
@ -1953,36 +1961,77 @@ var MediaDbSettingTab = class extends import_obsidian4.PluginSettingTab {
});
});
containerEl.createEl("h3", { text: "File Name Settings" });
new import_obsidian4.Setting(containerEl).setName("Movie file name template").setDesc("Template for the file name used when creating a new note for a movie.").addSearch((cb) => {
new import_obsidian4.Setting(containerEl).setName("Movie file name template").setDesc("Template for the file name used when creating a new note for a movie.").addText((cb) => {
cb.setPlaceholder(`Example: ${DEFAULT_SETTINGS.movieFileNameTemplate}`).setValue(this.plugin.settings.movieFileNameTemplate).onChange((data) => {
this.plugin.settings.movieFileNameTemplate = data;
this.plugin.saveSettings();
});
});
new import_obsidian4.Setting(containerEl).setName("Series file name template").setDesc("Template for the file name used when creating a new note for a series.").addSearch((cb) => {
new import_obsidian4.Setting(containerEl).setName("Series file name template").setDesc("Template for the file name used when creating a new note for a series.").addText((cb) => {
cb.setPlaceholder(`Example: ${DEFAULT_SETTINGS.seriesFileNameTemplate}`).setValue(this.plugin.settings.seriesFileNameTemplate).onChange((data) => {
this.plugin.settings.seriesFileNameTemplate = data;
this.plugin.saveSettings();
});
});
new import_obsidian4.Setting(containerEl).setName("Game file name template").setDesc("Template for the file name used when creating a new note for a game.").addSearch((cb) => {
new import_obsidian4.Setting(containerEl).setName("Game file name template").setDesc("Template for the file name used when creating a new note for a game.").addText((cb) => {
cb.setPlaceholder(`Example: ${DEFAULT_SETTINGS.gameFileNameTemplate}`).setValue(this.plugin.settings.gameFileNameTemplate).onChange((data) => {
this.plugin.settings.gameFileNameTemplate = data;
this.plugin.saveSettings();
});
});
new import_obsidian4.Setting(containerEl).setName("Wiki file name template").setDesc("Template for the file name used when creating a new note for a wiki entry.").addSearch((cb) => {
new import_obsidian4.Setting(containerEl).setName("Wiki file name template").setDesc("Template for the file name used when creating a new note for a wiki entry.").addText((cb) => {
cb.setPlaceholder(`Example: ${DEFAULT_SETTINGS.wikiFileNameTemplate}`).setValue(this.plugin.settings.wikiFileNameTemplate).onChange((data) => {
this.plugin.settings.wikiFileNameTemplate = data;
this.plugin.saveSettings();
});
});
new import_obsidian4.Setting(containerEl).setName("Music Release file name template").setDesc("Template for the file name used when creating a new note for a music release.").addSearch((cb) => {
new import_obsidian4.Setting(containerEl).setName("Music Release file name template").setDesc("Template for the file name used when creating a new note for a music release.").addText((cb) => {
cb.setPlaceholder(`Example: ${DEFAULT_SETTINGS.musicReleaseFileNameTemplate}`).setValue(this.plugin.settings.musicReleaseFileNameTemplate).onChange((data) => {
this.plugin.settings.musicReleaseFileNameTemplate = data;
this.plugin.saveSettings();
});
});
containerEl.createEl("h3", { text: "Property Mappings" });
new import_obsidian4.Setting(containerEl).setName("Movie model property mappings").setDesc("Mappings for the property names of a movie.").addTextArea((cb) => {
cb.setPlaceholder(`Example:
title -> name
year -> releaseYear`).setValue(this.plugin.settings.moviePropertyConversionRules).onChange((data) => {
this.plugin.settings.moviePropertyConversionRules = data;
this.plugin.saveSettings();
});
});
new import_obsidian4.Setting(containerEl).setName("Series model property mappings").setDesc("Mappings for the property names of a series.").addTextArea((cb) => {
cb.setPlaceholder(`Example:
title -> name
year -> releaseYear`).setValue(this.plugin.settings.seriesPropertyConversionRules).onChange((data) => {
this.plugin.settings.seriesPropertyConversionRules = data;
this.plugin.saveSettings();
});
});
new import_obsidian4.Setting(containerEl).setName("Game model property mappings").setDesc("Mappings for the property names of a game.").addTextArea((cb) => {
cb.setPlaceholder(`Example:
title -> name
year -> releaseYear`).setValue(this.plugin.settings.gamePropertyConversionRules).onChange((data) => {
this.plugin.settings.gamePropertyConversionRules = data;
this.plugin.saveSettings();
});
});
new import_obsidian4.Setting(containerEl).setName("Wiki model property mappings").setDesc("Mappings for the property names of a wiki entry.").addTextArea((cb) => {
cb.setPlaceholder(`Example:
title -> name
year -> releaseYear`).setValue(this.plugin.settings.wikiPropertyConversionRules).onChange((data) => {
this.plugin.settings.wikiPropertyConversionRules = data;
this.plugin.saveSettings();
});
});
new import_obsidian4.Setting(containerEl).setName("Music Release model property mappings").setDesc("Mappings for the property names of a music release.").addTextArea((cb) => {
cb.setPlaceholder(`Example:
title -> name
year -> releaseYear`).setValue(this.plugin.settings.musicReleasePropertyConversionRules).onChange((data) => {
this.plugin.settings.musicReleasePropertyConversionRules = data;
this.plugin.saveSettings();
});
});
}
};
@ -2046,48 +2095,10 @@ var APIModel = class {
}
};
// src/utils/YAMLConverter.ts
var YAMLConverter = class {
static toYaml(obj) {
let output = "";
for (const [key, value] of Object.entries(obj)) {
output += `${key}: ${YAMLConverter.toYamlString(value, 0)}
`;
}
return output;
}
static toYamlString(value, indentation) {
if (typeof value === "boolean") {
return value ? "true" : "false";
} else if (typeof value === "number") {
return value.toString();
} else if (typeof value === "string") {
return '"' + value + '"';
} else if (typeof value === "object") {
let output = "";
if (Array.isArray(value)) {
for (const valueElement of value) {
output += `
${YAMLConverter.calculateSpacing(indentation)} - ${YAMLConverter.toYamlString(valueElement, indentation + 1)}`;
}
} else {
for (const [objKey, objValue] of Object.entries(value)) {
output += `
${YAMLConverter.calculateSpacing(indentation)} ${objKey}: ${YAMLConverter.toYamlString(objValue, indentation + 1)}`;
}
}
return output;
}
}
static calculateSpacing(indentation) {
return " ".repeat(indentation * 4);
}
};
// src/models/MediaTypeModel.ts
var MediaTypeModel = class {
toMetaData() {
return YAMLConverter.toYaml(__spreadProps(__spreadValues(__spreadValues({}, this.getWithOutUserData()), this.userData), { tags: "#" + this.getTags().join("/") }));
toMetaDataObject() {
return __spreadProps(__spreadValues(__spreadValues({}, this.getWithOutUserData()), this.userData), { tags: "#" + this.getTags().join("/") });
}
getWithOutUserData() {
const copy = JSON.parse(JSON.stringify(this));
@ -2652,6 +2663,12 @@ var WikiModel = class extends MediaTypeModel {
getMediaType() {
return MediaType.Wiki;
}
getWithOutUserData() {
const copy = JSON.parse(JSON.stringify(this));
delete copy.userData;
delete copy.article;
return copy;
}
};
// src/api/apis/WikipediaAPI.ts
@ -2930,7 +2947,7 @@ var SteamAPI = class extends APIModel {
debugLog(yield fetchData.json);
let result;
for (const [key, value] of Object.entries(yield fetchData.json)) {
if (key == id) {
if (key === String(id)) {
result = value.data;
}
}
@ -2961,6 +2978,145 @@ var SteamAPI = class extends APIModel {
}
};
// src/settings/ModelPropertyConversionRule.ts
var ModelPropertyConversionRule = class {
constructor(conversionRule) {
const conversionRuleParts = conversionRule.split("->");
if (conversionRuleParts.length !== 2) {
throw Error(`Conversion rule "${conversionRule}" may only have exactly one "->"`);
}
let property = conversionRuleParts[0].trim();
let newProperty = conversionRuleParts[1].trim();
if (!property || !containsOnlyLettersAndUnderscores(property)) {
throw Error(`Error in conversion rule "${conversionRule}": property may not be empty and only contain letters and underscores.`);
}
if (!newProperty || !containsOnlyLettersAndUnderscores(newProperty)) {
throw Error(`Error in conversion rule "${conversionRule}": new property may not be empty and only contain letters and underscores.`);
}
this.property = property;
this.newProperty = newProperty;
}
};
// src/settings/ModelPropertyMapper.ts
var ModelPropertyMapper = class {
constructor(settings) {
this.updateConversionRules(settings);
}
updateConversionRules(settings) {
this.conversionRulesMap = new Map();
this.conversionRulesMap.set(MediaType.Movie, settings.moviePropertyConversionRules);
this.conversionRulesMap.set(MediaType.Series, settings.seriesPropertyConversionRules);
this.conversionRulesMap.set(MediaType.Game, settings.gamePropertyConversionRules);
this.conversionRulesMap.set(MediaType.Wiki, settings.wikiPropertyConversionRules);
this.conversionRulesMap.set(MediaType.MusicRelease, settings.musicReleasePropertyConversionRules);
}
convertObject(obj) {
if (!obj.hasOwnProperty("type")) {
return obj;
}
const conversionRulesString = this.conversionRulesMap.get(obj["type"]);
if (!conversionRulesString) {
return obj;
}
const conversionRules = [];
for (const conversionRuleString of conversionRulesString.split("\n")) {
if (conversionRuleString) {
conversionRules.push(new ModelPropertyConversionRule(conversionRuleString));
}
}
const newObj = {};
for (const [key, value] of Object.entries(obj)) {
if (key === "type") {
newObj[key] = value;
continue;
}
let hasConversionRule = false;
for (const conversionRule of conversionRules) {
if (conversionRule.property === key) {
hasConversionRule = true;
newObj[conversionRule.newProperty] = value;
}
}
if (!hasConversionRule) {
newObj[key] = value;
}
}
return newObj;
}
convertObjectBack(obj) {
if (!obj.hasOwnProperty("type")) {
return obj;
}
const conversionRulesString = this.conversionRulesMap.get(obj["type"]);
if (!conversionRulesString) {
return obj;
}
const conversionRules = [];
for (const conversionRuleString of conversionRulesString.split("\n")) {
if (conversionRuleString) {
conversionRules.push(new ModelPropertyConversionRule(conversionRuleString));
}
}
const originalObj = {};
for (const [key, value] of Object.entries(obj)) {
if (key === "type") {
originalObj[key] = value;
continue;
}
let hasConversionRule = false;
for (const conversionRule of conversionRules) {
if (conversionRule.newProperty === key) {
hasConversionRule = true;
originalObj[conversionRule.property] = value;
}
}
if (!hasConversionRule) {
originalObj[key] = value;
}
}
return originalObj;
}
};
// src/utils/YAMLConverter.ts
var YAMLConverter = class {
static toYaml(obj) {
let output = "";
for (const [key, value] of Object.entries(obj)) {
output += `${key}: ${YAMLConverter.toYamlString(value, 0)}
`;
}
return output;
}
static toYamlString(value, indentation) {
if (typeof value === "boolean") {
return value ? "true" : "false";
} else if (typeof value === "number") {
return value.toString();
} else if (typeof value === "string") {
return '"' + value + '"';
} else if (typeof value === "object") {
let output = "";
if (Array.isArray(value)) {
for (const valueElement of value) {
output += `
${YAMLConverter.calculateSpacing(indentation)} - ${YAMLConverter.toYamlString(valueElement, indentation + 1)}`;
}
} else {
for (const [objKey, objValue] of Object.entries(value)) {
output += `
${YAMLConverter.calculateSpacing(indentation)} ${objKey}: ${YAMLConverter.toYamlString(objValue, indentation + 1)}`;
}
}
return output;
}
}
static calculateSpacing(indentation) {
return " ".repeat(indentation * 4);
}
};
// src/main.ts
var MediaDbPlugin = class extends import_obsidian10.Plugin {
onload() {
@ -2999,6 +3155,7 @@ var MediaDbPlugin = class extends import_obsidian10.Plugin {
this.apiManager.registerAPI(new MusicBrainzAPI(this));
this.apiManager.registerAPI(new SteamAPI(this));
this.mediaTypeManager = new MediaTypeManager(this.settings);
this.modelPropertyMapper = new ModelPropertyMapper(this.settings);
});
}
createMediaDbNote(modal) {
@ -3018,13 +3175,17 @@ var MediaDbPlugin = class extends import_obsidian10.Plugin {
try {
console.log("MDB | Creating new note...");
let fileContent = `---
${mediaTypeModel.toMetaData()}---
${YAMLConverter.toYaml(this.modelPropertyMapper.convertObject(mediaTypeModel.toMetaDataObject()))}---
`;
if (this.settings.templates) {
fileContent += yield this.mediaTypeManager.getContent(mediaTypeModel, this.app);
}
const fileName = replaceIllegalFileNameCharactersInString(this.mediaTypeManager.getFileName(mediaTypeModel));
const filePath = `${this.settings.folder.replace(/\/$/, "")}/${fileName}.md`;
const folder = this.app.vault.getAbstractFileByPath(this.settings.folder);
if (!folder) {
yield this.app.vault.createFolder(this.settings.folder.replace(/\/$/, ""));
}
const file = this.app.vault.getAbstractFileByPath(filePath);
if (file) {
yield this.app.vault.delete(file);
@ -3075,10 +3236,12 @@ ${mediaTypeModel.toMetaData()}---
throw new Error("MDB | there is no active note");
}
let metadata = this.app.metadataCache.getFileCache(activeFile).frontmatter;
delete metadata.position;
metadata = this.modelPropertyMapper.convertObjectBack(metadata);
console.log(metadata);
if (!(metadata == null ? void 0 : metadata.type) || !(metadata == null ? void 0 : metadata.dataSource) || !(metadata == null ? void 0 : metadata.id)) {
throw new Error("MDB | active note is not a Media DB entry or is missing metadata");
}
delete metadata.position;
let oldMediaTypeModel = this.mediaTypeManager.createMediaTypeModelFromMediaType(metadata, metadata.type);
let newMediaTypeModel = yield this.apiManager.queryDetailedInfoById(metadata.id, metadata.dataSource);
if (!newMediaTypeModel) {
@ -3098,6 +3261,7 @@ ${mediaTypeModel.toMetaData()}---
saveSettings() {
return __async(this, null, function* () {
this.mediaTypeManager.updateTemplates(this.settings);
this.modelPropertyMapper.updateConversionRules(this.settings);
yield this.saveData(this.settings);
});
}

@ -1,7 +1,7 @@
{
"id": "obsidian-media-db-plugin",
"name": "Media DB Plugin",
"version": "0.1.11",
"version": "0.2.0",
"minAppVersion": "0.14.0",
"description": "A plugin that can query multiple APIs for movies, series, anime, games, music and wiki articles, and import them into your vault. ",
"author": "Moritz Jung",

@ -333,28 +333,28 @@
"01.02 Home/Household.md": [
{
"title": "🛎 🧻 REMINDER [[Household]]: check need for toilet paper",
"time": "2022-06-06",
"rowNumber": 100
},
{
"title": "♻ [[Household]]: *Paper* recycling collection",
"time": "2022-06-07",
"rowNumber": 72
"time": "2022-06-13",
"rowNumber": 101
},
{
"title": "♻ [[Household]]: *Cardboard* recycling collection",
"time": "2022-06-14",
"rowNumber": 83
"rowNumber": 84
},
{
"title": ":bed: [[Household]] Change bedsheets",
"time": "2022-06-18",
"rowNumber": 102
"rowNumber": 104
},
{
"title": "♻ [[Household]]: *Paper* recycling collection",
"time": "2022-06-21",
"rowNumber": 72
},
{
"title": "🛎 🛍 REMINDER [[Household]]: Monthly shop in France",
"time": "2022-06-25",
"rowNumber": 99
"rowNumber": 100
}
],
"01.03 Family/Pia Bousquié.md": [

File diff suppressed because one or more lines are too long

@ -1,10 +1,10 @@
{
"id": "obsidian-tasks-plugin",
"name": "Tasks",
"version": "1.6.0",
"version": "1.7.0",
"minAppVersion": "0.13.21",
"description": "Task management for Obsidian",
"author": "Martin Schenck",
"authorUrl": "https://github.com/schemar",
"authorUrl": "https://github.com/obsidian-tasks-group",
"isDesktopOnly": false
}

@ -4,12 +4,12 @@
"type": "split",
"children": [
{
"id": "7bf826872ad549d5",
"id": "eee8aebfad9f25a3",
"type": "leaf",
"state": {
"type": "markdown",
"state": {
"file": "00.01 Admin/Calendars/2022-06-05.md",
"file": "01.02 Home/@Main Dashboard.md",
"mode": "preview",
"source": false
}
@ -77,7 +77,7 @@
"state": {
"type": "backlink",
"state": {
"file": "00.01 Admin/Calendars/2022-06-05.md",
"file": "01.02 Home/@Main Dashboard.md",
"collapseAll": false,
"extraContext": false,
"sortOrder": "alphabetical",
@ -94,7 +94,7 @@
"state": {
"type": "outgoing-link",
"state": {
"file": "00.01 Admin/Calendars/2022-06-05.md",
"file": "01.02 Home/@Main Dashboard.md",
"linksCollapsed": false,
"unlinkedCollapsed": false
}
@ -141,7 +141,7 @@
}
},
{
"id": "402f0794ee277cb6",
"id": "02dcebb38536f01a",
"type": "leaf",
"state": {
"type": "DICE_ROLLER_VIEW",
@ -151,17 +151,17 @@
],
"currentTab": 2
},
"active": "7bf826872ad549d5",
"active": "eee8aebfad9f25a3",
"lastOpenFiles": [
"00.01 Admin/Calendars/2022-06-05.md",
"01.02 Home/@Main Dashboard.md",
"00.03 News/He was my high school journalism teacher. Then I investigated his relationships with teenage girls..md",
"00.03 News/When Cars Kill Pedestrians.md",
"00.03 News/The making of Prince William.md",
"00.03 News/Riding Londons Unexpectedly Fantastic Elizabeth Line.md",
"00.05 Media/3 youths in Medellin.md",
"00.05 Media/Animals anticipate Natural Disasters.md",
"00.05 Media/Moneyland.md",
"00.05 Media/The Mafia, The CIA and George Bush.md"
"00.01 Admin/Calendars/2022-06-08.md",
"03.03 Food & Wine/Chilaquiles Casserole.md",
"00.01 Admin/Calendars/2022-06-07.md",
"00.01 Admin/Calendars/2022-06-06.md",
"00.03 News/Albert Camus The philosopher who resisted despair.md",
"00.01 Admin/Calendars/2022-06-02.md",
"00.01 Admin/Calendars/2022-06-03.md",
"00.01 Admin/Calendars/2022-06-04.md",
"00.01 Admin/Calendars/2022-06-05.md"
]
}

@ -15,7 +15,7 @@ EarHeadBar: 40
BackHeadBar: 30
Water: 1.73
Coffee: 2
Steps: 4319
Steps: 4671
Ski:
Riding:
Racket:

@ -15,7 +15,7 @@ EarHeadBar: 40
BackHeadBar: 30
Water: 0.83
Coffee: 3
Steps: 7597
Steps: 6349
Ski:
Riding:
Racket:

@ -15,7 +15,7 @@ EarHeadBar: 40
BackHeadBar: 30
Water: 1.33
Coffee: 2
Steps:
Steps: 7192
Ski:
Riding:
Racket:

@ -0,0 +1,104 @@
---
Date: 2022-06-06
DocType: Note
Hierarchy:
TimeStamp:
location:
CollapseMetaTable: Yes
Sleep: 9
Happiness: 90
Gratefulness: 90
Stress: 35
FrontHeadBar: 5
EarHeadBar: 40
BackHeadBar: 30
Water: 2
Coffee: 0
Steps: 2870
Ski:
Riding:
Racket:
Football:
title: "Daily Note"
allDay: true
date: 2022-06-06
---
%% Parent:: [[@Life Admin]] %%
---
[[2022-06-05|<< 🗓 Previous ]] &emsp; &emsp; &emsp; [[@Main Dashboard|Back]] &emsp; &emsp; &emsp; [[2022-06-07|🗓 Next >>]]
---
&emsp;
```button
name Record today's health
type command
action MetaEdit: Run MetaEdit
id EditMetaData
```
^button-2022-06-06Edit
```button
name Save
type command
action Save current file
id Save
```
^button-2022-06-06NSave
&emsp;
# 2022-06-06
&emsp;
```ad-abstract
title: Summary
collapse: open
Note Description
```
&emsp;
```toc
style: number
```
&emsp;
---
&emsp;
### Memos
&emsp;
#### Memos
This section does serve for quick memos.
&emsp;
%% ### %%
&emsp;
---
&emsp;
### Notes
&emsp;
Loret ipsum
&emsp;
&emsp;

@ -0,0 +1,104 @@
---
Date: 2022-06-07
DocType: Note
Hierarchy:
TimeStamp:
location:
CollapseMetaTable: Yes
Sleep: 7
Happiness: 90
Gratefulness: 90
Stress: 35
FrontHeadBar: 5
EarHeadBar: 40
BackHeadBar: 30
Water: 3
Coffee: 3
Steps: 9690
Ski:
Riding:
Racket:
Football:
title: "Daily Note"
allDay: true
date: 2022-06-07
---
%% Parent:: [[@Life Admin]] %%
---
[[2022-06-06|<< 🗓 Previous ]] &emsp; &emsp; &emsp; [[@Main Dashboard|Back]] &emsp; &emsp; &emsp; [[2022-06-08|🗓 Next >>]]
---
&emsp;
```button
name Record today's health
type command
action MetaEdit: Run MetaEdit
id EditMetaData
```
^button-2022-06-07Edit
```button
name Save
type command
action Save current file
id Save
```
^button-2022-06-07NSave
&emsp;
# 2022-06-07
&emsp;
```ad-abstract
title: Summary
collapse: open
Note Description
```
&emsp;
```toc
style: number
```
&emsp;
---
&emsp;
### Memos
&emsp;
#### Memos
This section does serve for quick memos.
&emsp;
%% ### %%
&emsp;
---
&emsp;
### Notes
&emsp;
Loret ipsum
&emsp;
&emsp;

@ -0,0 +1,105 @@
---
Date: 2022-06-08
DocType: Note
Hierarchy:
TimeStamp:
location:
CollapseMetaTable: Yes
Sleep: 7
Happiness: 90
Gratefulness: 90
Stress: 35
FrontHeadBar: 5
EarHeadBar: 40
BackHeadBar: 30
Water: 2.2
Coffee: 4
Steps:
Ski:
Riding:
Racket:
Football:
title: "Daily Note"
allDay: true
date: 2022-06-08
---
%% Parent:: [[@Life Admin]] %%
---
[[2022-06-07|<< 🗓 Previous ]] &emsp; &emsp; &emsp; [[@Main Dashboard|Back]] &emsp; &emsp; &emsp; [[2022-06-09|🗓 Next >>]]
---
&emsp;
```button
name Record today's health
type command
action MetaEdit: Run MetaEdit
id EditMetaData
```
^button-2022-06-08Edit
```button
name Save
type command
action Save current file
id Save
```
^button-2022-06-08NSave
&emsp;
# 2022-06-08
&emsp;
```ad-abstract
title: Summary
collapse: open
Note Description
```
&emsp;
```toc
style: number
```
&emsp;
---
&emsp;
### Memos
&emsp;
#### Memos
This section does serve for quick memos.
&emsp;
%% ### %%
&emsp;
- [ ] 20:24 [[Chilaquiles Casserole]] with [[MRCK|Meggi]] with Piadina bread
---
&emsp;
### Notes
&emsp;
Loret ipsum
&emsp;
&emsp;

@ -0,0 +1,103 @@
---
Tag: ["Art", "Literature", "France"]
Date: 2022-06-06
DocType: "WebClipping"
Hierarchy:
TimeStamp: 2022-06-06
Link: https://www.vox.com/features/22989761/vox-conversations-albert-camus-the-philosophers
location:
CollapseMetaTable: Yes
---
Parent:: [[@News|News]]
Read:: [[2022-06-06]]
---
&emsp;
```button
name Save
type command
action Save current file
id Save
```
^button-AlbertCamusThephilosopherwhoresisteddespairNSave
&emsp;
# Albert Camus: The philosopher who resisted despair
In March 1946, the French philosopher and novelist Albert Camus sailed across the Atlantic to deliver a speech at Columbia University. It was his first and only trip to America. Camus had achieved worldwide fame with the publication of his 1942 novel, *The Stranger,* and his stature as an artist and a member of the French resistance had grown considerably over the course of the war.
The Nazis had been defeated the year before and there was a belief that some kind of final victory over fascism had been achieved. But in his address, Camus did not oblige that sentiment. The philosopher, who was expected to talk about French theater and philosophy, lingered on the pathologies that produced Nazism. He went further, arguing that the postwar world had fallen into complacency. The war was over but a certain kind of plague persisted:
> Contemporary man tends more and more to put between himself and nature an abstract and complex machinery that casts him into solitude. … With so much paper, so many offices and functionaries, we are creating a world in which human warmth has disappeared. Where no one can come into contact with anyone else except across a maze of what we call formalities.
The point of the talk was to say that the entire Western world lived in a civilization that elevated abstractions over experience — that ultimately removed people from the reality of human suffering.
I doubt Camus would change his posture were he to give that talk today. The world of 2022 is different from the world of Nazi barbarity Camus was reacting against, but its not as different as we would hope. A great power in Europe is trying to conquer a weaker power driven by some claim to historical greatness and a notion of its geopolitical primacy. Its hard to look at the images of bombed-out apartment buildings and mass graves in Ukraine and not think of Europe in the aftermath of WWII.
Camuss earlier work, when he was writing books like *The Stranger* and *The Myth of Sisyphus*, was more about the strangeness of the human experience. But his oeuvre took a turn as he witnessed the horrors of the war, his attention fixed on the ways in which people justify violence and lawlessness. Indeed, Camuss whole philosophy became a response to human brutality, and thats what makes him such an essential voice at this historical moment.
### Against abstraction
Camus was one of the intellectual stars of midcentury Paris. But unlike contemporaries like Jean-Paul Sartre and Simone de Beauvoir, he was always an outsider. Most everyone in that milieu went to one of the elite universities, like the Sorbonne or the École normale supérieure. Camus grew up in a working-class neighborhood in French Algeria and went to a public university.
He was raised as a French citizen in Algeria, where most of the inhabitants were indigenous Arabs and Berbers who had lived there for centuries before the French showed up. Living as a French citizen in a colonized state helped give shape to his philosophy and politics. He loved the French people who were born in Algeria and made a home there, but he was also outraged by the treatment of Arabs and Berbers — hundreds of thousands of whom were killed by French forces **—** and spent years condemning it as a young reporter for a left-wing newspaper.
The Algerian experience made Camus wary of either-or approaches to politics. Having witnessed the extremism on both sides — French occupiers and their Arab resisters — and the cycles of violence and retaliation, he was determined to find a space for dialogue, or at least impose limits on the killing.
No one, he insisted, had a monopoly on truth or justice. “I want Arab militants to preserve the justice of their cause by condemning the massacres of civilians, just as I want the French to protect their rights and their future by openly condemning the massacres of the repression.” He was widely mocked as a moderate for this stance (even as he lobbied behind the scenes on behalf of countless political prisoners during Algerias war for independence). Im not sure Camus ever had an adequate response to the criticisms. The best he could muster was to say that the goal was to stop the spiral of violence and retaliation and that meant condemning the sorts of tactics that made resolution impossible.
In the spring of 1940, shortly after Camus had moved to Paris, the Germans invaded France. He tried to enlist in the army but was declined due to an early bout of tuberculosis. He instead became the editor of the French resistance newspaper, Combat, and produced some of his best work as a columnist there. Its really that period that crystallized so much of his thinking.
From the start of the war, Camus was preoccupied with the hazards of ideological politics and abstract ideals. “It was impossible,” he wrote, “to persuade people who were doing these things not to do them because they were sure of themselves and because there is no way to persuade an abstraction, or, to put it another way, the representative of an ideology.”
This is what he saw in Nazism: a political plague that obeyed its own implacable logic and destroyed the hosts — and everyone else. Beyond that specter, he could sense the impending battle between capitalist and Marxist ideologies, both of which, in their own ways, were based on unchallengeable ideas of progress.
After the war, Camuss philosophical work became even more political. He published his book-length essay *The Rebel* in 1951, which precipitated his public fallout with Sartre. Camus condemned the excesses on both sides of the Cold War — a stance that alienated Marxists like Sartre — but he was always interested in closing the gap between theory and action:
> The purpose of this essay is once again to face the reality of the present, which is logical crime, and to examine meticulously the arguments by which it is justified. ... One might think that a period which, in a space of fifty years, uproots, enslaves, or kills seventy million human beings should be condemned out of hand. But its culpability must still be understood.
*The Rebel* is a flawed book, and it does, at times, feel too removed from historical realities. But the weaknesses of the book reflect the doubt at the core of Camuss political philosophy. It wasnt about drawing some kind of moral equivalence between fascism and communism. It was an attempt to understand a peculiar form of nihilism that had come to dominate the 20th century.
For Camus, nihilism wasnt so much about belief in nothing; it was about refusing to believe in the world as it is. And killing in service to some idea is just as nihilistic as believing that nothing is true and therefore everything is permitted.
### The persistence of compassion
That human tendency toward nihilism was on Camuss mind when he spoke at Columbia in 1946. “Nihilism has been replaced by absolute rationalism,” Camus said, “and in both cases, the results are the same.”
The upshot of Camuss speech at Columbia was to take all the anguish over the atrocities of World War II and turn it into something ennobling. Its natural to be indignant in the face of such horror, but there was a sliver of consolation here. Camus asks us to reflect on that common outrage, realize what it says about the value of human life, and commit to being a more engaged human being.
Camuss 1947 novel *The Plague* is all about our shared vulnerability to loss and suffering. Something like a pandemic sweeps into our lives and disrupts our reality. The routines, the diversions, the daily comforts — it all explodes under the intensity of emergency. Suddenly, everyone is facing the same situation and theres nothing to do but resist. “I know its an absurd situation,” the protagonist Rieux says at one point, “but were all involved in it, and weve got to accept it as it is.” The same is true of war (Camus himself insisted that the plague in the novel was an allegory for the Nazi occupation).
Camus has been much on my mind these last few months. The great irony of Putins war is that it seems to have reinforced the very thing it was [intended to destroy](https://www.businessinsider.com/putin-denies-reviving-russian-empire-says-ukraine-not-real-country-2022-2): the Ukrainian identity. In *The Rebel*, Camus says we can see the roots of human solidarity in moments of crisis, when people have to resist whats taking place, whether its a biological plague or a military occupation. And when that happens, we look around and see others doing the same thing. We see others saying “no” and “yes” at the same time — no to the destruction of human life, yes to the community that emerges out of that refusal.
Amid the horror is solace — theres something deeply satisfying about doing things in the world with other people. The immediacy of a war or a natural disaster collapses the barriers between us because its so clear what has to be done. And while nothing redeems a tragedy, theres at least some comfort in the solidarity that emerges from it.
The problem is that solidarity often slips away in the mechanics of everyday life. But the empathy and love fueling that desire to help in a crisis is a constant possibility. Camus thought this didnt happen automatically — it was a choice we each had to make — and that we could carry the spirit of collective action into the post-crisis world. He also thought that acting with other people, caring about other people, made us happy and was thus an antidote to despair.
The striking thing about Camus is that he imagines life itself as a kind of emergency in the sense that it can end at any moment. The decision to live in spite of that awareness carries a moral obligation: to not add to the already random suffering in the world. Seeing that principle transgressed has a way of renewing our commitment to it.
### The antidote to despair
Camus always said that he was pessimistic about the human condition and optimistic about humankind. Maybe thats a contradiction. But I always thought the deeper point was much simpler: Were born into a world that doesnt seem to have any purpose, that we know will end, and yet we go on living anyway.
For Camus, that meant that there is something in humanity that transcends the fact of our condition. Thats the source of our collective dignity — and its the part of humanity that always has to be defended.
This can all sound a bit abstract from a distance. Whats the average person supposed to do about all the horrors in the world? You can look anywhere — from the conflicts in Ukraine and Yemen and Syria to the barbarity of mass shootings in places like [Uvalde, Texas](https://www.vox.com/policy-and-politics/23140441/uvalde-shooting-robb-elementary-school-texas) — and be horrified by the suffering, but you cant do anything about it.
That outrage you feel, though — thats the spark of common humanity that Camus was always affirming.
At the end of his speech, he told the audience that their job was to take that spark and commit to being a more attentive human being. That meant seeing people as people, not as abstractions or obstacles. It meant not letting our ideas about the world become more important than our experience of the world.
Camus always returned to the myth of Sisyphus as the model of human defiance. The problem wasnt that Sisyphus had to roll his boulder up a hill forever; its that he had to roll it alone. His point was that were all rolling our boulders up a hill, and that life is most meaningful when we push together.
&emsp;
&emsp;
---
`$= dv.el('center', 'Source: ' + dv.current().Link + ', ' + dv.current().Date.toLocaleString("fr-FR"))`

@ -70,7 +70,8 @@ This section on different household obligations.
#### Garbage collection
- [ ] ♻ [[Household]]: *Paper* recycling collection 🔁 every 2 weeks on Tuesday 📅 2022-06-07
- [ ] ♻ [[Household]]: *Paper* recycling collection 🔁 every 2 weeks on Tuesday 📅 2022-06-21
- [x] ♻ [[Household]]: *Paper* recycling collection 🔁 every 2 weeks on Tuesday 📅 2022-06-07 ✅ 2022-06-07
- [x] [[Household]]: *Paper* recycling collection 🔁 every 2 weeks on Tuesday 📅 2022-05-24 ✅ 2022-05-23
- [x] [[Household]]: *Paper* recycling collection 🔁 every 2 weeks on Tuesday 📅 2022-05-10 ✅ 2022-05-09
- [x] [[Household]]: *Paper* recycling collection 🔁 every 2 weeks on Tuesday 📅 2022-04-26 ✅ 2022-04-25
@ -98,7 +99,8 @@ This section on different household obligations.
#### House chores
- [ ] 🛎 🛍 REMINDER [[Household]]: Monthly shop in France 🔁 every month on the last Saturday 🛫 2022-05-30 📅 2022-06-25
- [ ] 🛎 🧻 REMINDER [[Household]]: check need for toilet paper 🔁 every week 📅 2022-06-06
- [ ] 🛎 🧻 REMINDER [[Household]]: check need for toilet paper 🔁 every week 📅 2022-06-13
- [x] 🛎 🧻 REMINDER [[Household]]: check need for toilet paper 🔁 every week 📅 2022-06-06 ✅ 2022-06-07
- [x] 🛎 🧻 REMINDER [[Household]]: check need for toilet paper 🔁 every week 📅 2022-05-30 ✅ 2022-05-29
- [ ] :bed: [[Household]] Change bedsheets 🔁 every 2 weeks on Saturday 📅 2022-06-18
- [x] :bed: [[Household]] Change bedsheets 🔁 every 2 weeks on Saturday 📅 2022-06-04 ✅ 2022-05-29

@ -1,8 +1,8 @@
---
ServingSize: 8
ServingSize: 2
cssclass: recipeTable
Tag: ["NotYetTested"]
Tag: ["Quick"]
Date: 2022-02-08
DocType: "Recipe"
Hierarchy: "NonRoot"
@ -10,7 +10,7 @@ location:
CollapseMetaTable: Yes
Meta:
IsFavourite: False
Rating:
Rating: 3
Recipe:
Courses: "Main dish"
Categories: Baked

Loading…
Cancel
Save