forked from sam/fedifeed
Uhhhhh
Signed-off-by: Sam Therapy <sam@samtherapy.net>
This commit is contained in:
parent
e7ef7e4d7d
commit
61463ff239
50 changed files with 2782 additions and 5613 deletions
28
.drone.yml
28
.drone.yml
|
@ -3,19 +3,19 @@ type: docker
|
|||
name: default
|
||||
|
||||
steps:
|
||||
- name: dependencies
|
||||
image: node
|
||||
commands:
|
||||
- yarn
|
||||
- name: dependencies
|
||||
image: node
|
||||
commands:
|
||||
- yarn
|
||||
|
||||
- name: lint
|
||||
image: node
|
||||
commands:
|
||||
- yarn lint
|
||||
depends: [dependencies]
|
||||
- name: lint
|
||||
image: node
|
||||
commands:
|
||||
- yarn lint:ci
|
||||
depends: [dependencies]
|
||||
|
||||
- name: test
|
||||
image: node
|
||||
commands:
|
||||
- yarn test
|
||||
depends: [lint]
|
||||
- name: test
|
||||
image: node
|
||||
commands:
|
||||
- yarn test
|
||||
depends: [lint]
|
||||
|
|
|
@ -1 +1,2 @@
|
|||
src/public/infinite-scroll.js
|
||||
src/public/lib/infinite-scroll.pkgd.min.js
|
||||
.yarn/
|
|
@ -1,30 +1,19 @@
|
|||
{
|
||||
"env": {
|
||||
"browser": true,
|
||||
"es2021": true,
|
||||
"node": true
|
||||
},
|
||||
"extends": "eslint:recommended",
|
||||
"parserOptions": {
|
||||
"ecmaVersion": "latest",
|
||||
"sourceType": "module"
|
||||
},
|
||||
"rules": {
|
||||
"indent": [
|
||||
"error",
|
||||
4
|
||||
],
|
||||
"linebreak-style": [
|
||||
"error",
|
||||
"unix"
|
||||
],
|
||||
"quotes": [
|
||||
"error",
|
||||
"double"
|
||||
],
|
||||
"semi": [
|
||||
"error",
|
||||
"always"
|
||||
]
|
||||
}
|
||||
"env": {
|
||||
"browser": true,
|
||||
"es2021": true,
|
||||
"node": true
|
||||
},
|
||||
"parserOptions": {
|
||||
"ecmaVersion": "latest",
|
||||
"sourceType": "module"
|
||||
},
|
||||
"plugins": ["prettier"],
|
||||
"rules": {
|
||||
"linebreak-style": ["error", "unix"],
|
||||
"quotes": ["error", "double"],
|
||||
"semi": ["error", "always"],
|
||||
"prettier/prettier": ["error", { "singleQuote": false }]
|
||||
},
|
||||
"extends": ["eslint:recommended", "plugin:prettier/recommended"]
|
||||
}
|
||||
|
|
4
.gitignore
vendored
4
.gitignore
vendored
|
@ -127,4 +127,6 @@ dist
|
|||
.yarn/unplugged
|
||||
.yarn/build-state.yml
|
||||
.yarn/install-state.gz
|
||||
.pnp.*
|
||||
.pnp.*
|
||||
|
||||
.dccache
|
2
.prettierignore
Normal file
2
.prettierignore
Normal file
|
@ -0,0 +1,2 @@
|
|||
src/public/lib/infinite-scroll.pkgd.min.js
|
||||
.yarn/
|
27
README.md
27
README.md
|
@ -9,7 +9,7 @@ https://www.fedifeed.com
|
|||
|
||||
## User guide
|
||||
|
||||
The homepage has a tool for generating iframe code for you, with a sensible `sandbox` attribute. The feeds fit comfortably in a 400px wide area.
|
||||
The homepage has a tool for generating iframe code for you, with a sensible `sandbox` attribute. The feeds fit comfortably in a 400px wide area.
|
||||
|
||||
## API
|
||||
|
||||
|
@ -19,28 +19,29 @@ The homepage has a tool for generating iframe code for you, with a sensible `san
|
|||
|
||||
> example: `/api/v1/feed?userurl=https%3A%2F%2Foctodon.social%2Fusers%2Ffenwick67&scale=90&theme=masto-light`
|
||||
|
||||
Returns a html page which displays a feed for a user URL. Note that URLs must be URI encoded (i.e. `encodeURIComponent('https://octodon.social/users/fenwick67')` ).
|
||||
Returns a html page which displays a feed for a user URL. Note that URLs must be URI encoded (i.e. `encodeURIComponent('https://octodon.social/users/fenwick67')` ).
|
||||
|
||||
Querystring options:
|
||||
|
||||
| option | required | description |
|
||||
| ------ | -------- | ----------- |
|
||||
| `userurl` | **\*** | Mastodon/Pleroma/Misskey account URL (usually `https://${instance}/users/${username}` for MastoAPI or `https://${instance}/@${username}` for Misskey) |
|
||||
| `instance` | **\*\***| Mastodon/Pleroma/Misskey instance URL (usually `https://${instance}`) |
|
||||
| `user` | **\*\*** | Mastodon/Pleroma/Misskey user ID (usually `${username}`) |
|
||||
| `feedurl` | no | a URL to a page of an ActivityPub post collection. Only used for pages beyond the first. |
|
||||
| `theme` | no | either `masto-dark`, `masto-light` or `masto-auto`, to select the UI theme (default is `masto-dark`). `auto` will appear masto-light unless the user sets up masto-dark mode on their device. |
|
||||
| `boosts` | no | whether to show boosts or not |
|
||||
| `replies` | no | whether to show replies or not |
|
||||
| `size` | no | the scale of the UI in percent. |
|
||||
| option | required | description |
|
||||
| ---------- | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
||||
| `userurl` | **\*** | Mastodon/Pleroma/Misskey account URL (usually `https://${instance}/users/${username}` for MastoAPI or `https://${instance}/@${username}` for Misskey) |
|
||||
| `instance` | **\*\*** | Mastodon/Pleroma/Misskey instance URL (usually `https://${instance}`) |
|
||||
| `user` | **\*\*** | Mastodon/Pleroma/Misskey user ID (usually `${username}`) |
|
||||
| `feedurl` | no | a URL to a page of an ActivityPub post collection. Only used for pages beyond the first. |
|
||||
| `theme` | no | either `masto-dark`, `masto-light` or `masto-auto`, to select the UI theme (default is `masto-dark`). `auto` will appear masto-light unless the user sets up masto-dark mode on their device. |
|
||||
| `boosts` | no | whether to show boosts or not |
|
||||
| `replies` | no | whether to show replies or not |
|
||||
| `size` | no | the scale of the UI in percent. |
|
||||
|
||||
\* `userurl` is required if `instance` and `user` are not specified.\*\*\* \
|
||||
\*\* `instance` **and** `user` are required if `userurl` is not specified.\*\*\*
|
||||
|
||||
\*\*\* **`userurl` and `instance`/`user` are mutually exclusive.**
|
||||
|
||||
## Server Installation
|
||||
|
||||
This is a straightforward node project with zero databases or anything, you should just be able to run `yarn install` and then `yarn start` to get up and running. Set your `PORT` environment variable to change the port it listens on.
|
||||
This is a straightforward node project with zero databases or anything, you should just be able to run `yarn install` and then `yarn start` to get up and running. Set your `PORT` environment variable to change the port it listens on.
|
||||
|
||||
## Improve me
|
||||
|
||||
|
|
160
index.js
Normal file
160
index.js
Normal file
|
@ -0,0 +1,160 @@
|
|||
import Express from "express";
|
||||
// v2 api
|
||||
import convertv2 from "./lib/convert.js";
|
||||
import serveStatic from "serve-static";
|
||||
import cors from "cors";
|
||||
import errorPage from "./lib/errorPage.js";
|
||||
import morgan from "morgan";
|
||||
import { detector } from "megalodon";
|
||||
import helmet from "helmet";
|
||||
|
||||
const app = Express();
|
||||
app.use(
|
||||
helmet({
|
||||
contentSecurityPolicy: false,
|
||||
crossOriginEmbedderPolicy: false,
|
||||
crossOriginResourcePolicy: false,
|
||||
})
|
||||
);
|
||||
|
||||
const logger = morgan(":method :url :status via :referrer - :response-time ms");
|
||||
|
||||
app.use(
|
||||
serveStatic("public", {
|
||||
maxAge: "1d",
|
||||
})
|
||||
);
|
||||
|
||||
function doCache(res, durationSecs) {
|
||||
res.set({
|
||||
"Cache-Control": "max-age=" + durationSecs,
|
||||
});
|
||||
}
|
||||
|
||||
// this just redirects to the
|
||||
app.options("/api/feed", cors());
|
||||
app.get("/api/feed", cors(), logger, function (req, res) {
|
||||
// get feed url
|
||||
const feedUrl = req.query.url;
|
||||
if (!feedUrl) {
|
||||
res
|
||||
.status(400)
|
||||
.send(errorPage(400, "You need to specify a feed URL", null));
|
||||
return;
|
||||
}
|
||||
|
||||
const userUrl = feedUrl.replace(/\.atom.*/i, "");
|
||||
|
||||
const redirectUrl = "/api/v1/feed?";
|
||||
const qs = ["userurl=" + encodeURIComponent(userUrl), "api=v1"];
|
||||
|
||||
["size", "theme", "boosts", "replies"].forEach((key) => {
|
||||
if (typeof req.query[key] != "undefined") {
|
||||
qs.push(key + "=" + encodeURIComponent(req.query[key]));
|
||||
}
|
||||
});
|
||||
|
||||
res.redirect(redirectUrl + qs.join("&"));
|
||||
});
|
||||
|
||||
app.options("/api/v1/feed", cors());
|
||||
app.get("/api/v1/feed", cors(), logger, async function (req, res) {
|
||||
// get feed url
|
||||
// userUrl
|
||||
let type = req.query.instance_type;
|
||||
let userUrl = req.query.userurl;
|
||||
if (userUrl === "" || userUrl === undefined) {
|
||||
const user = req.query.user;
|
||||
const instance = req.query.instance;
|
||||
if (type === "" || type === undefined) {
|
||||
type = await detector(instance).catch(() => "");
|
||||
}
|
||||
if (type === "mastodon" || type === "pleroma")
|
||||
userUrl = instance + "/users/" + user;
|
||||
else if (type === "misskey") userUrl = instance + "/@" + user;
|
||||
else {
|
||||
res
|
||||
.status(400)
|
||||
.send(errorPage(400, "You need to specify a user URL", null));
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
const feedUrl = req.query.feedurl;
|
||||
|
||||
const opts = {};
|
||||
if (req.query.size) {
|
||||
opts.size = req.query.size;
|
||||
}
|
||||
if (req.query.theme) {
|
||||
opts.theme = req.query.theme;
|
||||
if (opts.theme === "auto-auto") {
|
||||
switch (type) {
|
||||
case "mastodon":
|
||||
opts.theme = "masto-auto";
|
||||
break;
|
||||
case "pleroma":
|
||||
opts.theme = "pleroma";
|
||||
break;
|
||||
case "misskey":
|
||||
opts.theme = "misskey-auto";
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
} else if (opts.theme === "auto-light") {
|
||||
switch (type) {
|
||||
case "mastodon":
|
||||
opts.theme = "masto-light";
|
||||
break;
|
||||
case "misskey":
|
||||
opts.theme = "misskey-light";
|
||||
break;
|
||||
case "pleroma":
|
||||
opts.theme = "pleroma-light";
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
} else if (opts.theme === "auto-dark") {
|
||||
switch (type) {
|
||||
case "mastodon":
|
||||
opts.theme = "masto-dark";
|
||||
break;
|
||||
case "misskey":
|
||||
opts.theme = "misskey-dark";
|
||||
break;
|
||||
case "pleroma":
|
||||
opts.theme = "pleroma-dark";
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
if (req.query.header) opts.header = req.query.header.toLowerCase() === "true";
|
||||
if (req.query.boosts) opts.boosts = req.query.boosts.toLowerCase() === "true";
|
||||
if (req.query.replies)
|
||||
opts.replies = req.query.replies.toLowerCase() === "true";
|
||||
opts.instance_type = type;
|
||||
opts.userUrl = userUrl;
|
||||
opts.feedUrl = feedUrl;
|
||||
opts.mastofeedUrl = req.url;
|
||||
|
||||
convertv2(opts)
|
||||
.then((data) => {
|
||||
doCache(res, 60 * 60);
|
||||
res.status(200).send(data);
|
||||
})
|
||||
.catch((er) => {
|
||||
res
|
||||
.status(500)
|
||||
.send(errorPage(500, null, { theme: opts.theme, size: opts.size }));
|
||||
// TODO log the error
|
||||
console.error(er, er.stack);
|
||||
});
|
||||
});
|
||||
|
||||
app.listen(process.env.PORT || 8000, "127.0.0.1", function () {
|
||||
console.log("Server started, listening on " + (process.env.PORT || 8000));
|
||||
});
|
400
lib/convert.js
400
lib/convert.js
|
@ -12,238 +12,258 @@ const hour = 3600000;
|
|||
|
||||
// note: rejects on HTTP 4xx or 5xx
|
||||
async function apGet(url) {
|
||||
|
||||
return new Promise(function(resolve,reject){
|
||||
return new Promise(function (resolve, reject) {
|
||||
// fail early
|
||||
if (!url) {
|
||||
reject(new Error("URL is invalid"));
|
||||
}
|
||||
|
||||
// fail early
|
||||
if (!url){
|
||||
reject(new Error("URL is invalid"));
|
||||
}
|
||||
|
||||
got( {
|
||||
url:url,
|
||||
cache:map,
|
||||
headers: {
|
||||
"accept": "application/activity+json"
|
||||
}
|
||||
})
|
||||
.then(response=>JSON.parse(response.body))
|
||||
.then(resolve)
|
||||
.catch(reject);
|
||||
|
||||
});
|
||||
|
||||
got({
|
||||
url: url,
|
||||
cache: map,
|
||||
headers: {
|
||||
accept: "application/activity+json",
|
||||
},
|
||||
})
|
||||
.then((response) => JSON.parse(response.body))
|
||||
.then(resolve)
|
||||
.catch(reject);
|
||||
});
|
||||
}
|
||||
|
||||
// like Promise.all except returns null on error instead of failing all the promises
|
||||
async function promiseSome(proms){
|
||||
|
||||
function noRejectWrap(prom){
|
||||
return new Promise(function(resolve){
|
||||
|
||||
prom // it's already been called
|
||||
.then(resolve)
|
||||
.catch( ()=>{
|
||||
// console.warn(e);// for debugging
|
||||
resolve(null);
|
||||
});
|
||||
|
||||
async function promiseSome(proms) {
|
||||
function noRejectWrap(prom) {
|
||||
return new Promise(function (resolve) {
|
||||
prom // it's already been called
|
||||
.then(resolve)
|
||||
.catch(() => {
|
||||
// console.warn(e);// for debugging
|
||||
resolve(null);
|
||||
});
|
||||
}
|
||||
|
||||
return await Promise.all(proms.map(noRejectWrap));
|
||||
});
|
||||
}
|
||||
|
||||
return await Promise.all(proms.map(noRejectWrap));
|
||||
}
|
||||
|
||||
export default async function (opts) {
|
||||
// let opts = opts;
|
||||
// let opts = opts;
|
||||
|
||||
let feedUrl = opts.feedUrl;
|
||||
let userUrl = opts.userUrl;
|
||||
let isIndex = false;
|
||||
let feedUrl = opts.feedUrl;
|
||||
let userUrl = opts.userUrl;
|
||||
let isIndex = false;
|
||||
|
||||
if (!userUrl) {
|
||||
throw new Error("need user URL");
|
||||
if (!userUrl) {
|
||||
throw new Error("need user URL");
|
||||
}
|
||||
|
||||
let user, feed;
|
||||
|
||||
// get user and feed in parallel if I have both URLs.
|
||||
// can cache feed aggressively since it is a specific start and end.
|
||||
if (userUrl && feedUrl) {
|
||||
[user, feed] = await Promise.all([apGet(userUrl), apGet(feedUrl)]);
|
||||
} else {
|
||||
// get user, then outbox, then feed
|
||||
|
||||
user = await apGet(userUrl);
|
||||
isIndex = true;
|
||||
let outbox = await apGet(user.outbox);
|
||||
|
||||
// outbox.first can be a string for a URL, or an object with stuffs in it
|
||||
if (typeof outbox.first == "object") {
|
||||
feed = outbox.first;
|
||||
} else {
|
||||
feed = await apGet(outbox.first);
|
||||
}
|
||||
}
|
||||
|
||||
let user, feed;
|
||||
|
||||
// get user and feed in parallel if I have both URLs.
|
||||
// can cache feed aggressively since it is a specific start and end.
|
||||
if (userUrl && feedUrl){
|
||||
[user, feed] = await Promise.all([ apGet(userUrl), apGet(feedUrl) ]);
|
||||
}else{
|
||||
// get user, then outbox, then feed
|
||||
|
||||
user = await apGet(userUrl,24 * hour);
|
||||
isIndex = true;
|
||||
let outbox = await apGet(user.outbox, 1 * hour);
|
||||
|
||||
// outbox.first can be a string for a URL, or an object with stuffs in it
|
||||
if (typeof outbox.first == "object"){
|
||||
feed = outbox.first;
|
||||
} else {
|
||||
feed = await apGet(outbox.first, hour/6);// 10 mins. Because the base feed URL can get new toots quickly.
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
let templateData = {
|
||||
opts: opts,// from the request
|
||||
meta: metaForUser(user),
|
||||
items: await itemsForFeed(opts,user,feed),
|
||||
nextPageLink: getNextPage(opts,user,feed),
|
||||
isIndex: isIndex
|
||||
};
|
||||
|
||||
return template(templateData);
|
||||
let templateData = {
|
||||
opts: opts, // from the request
|
||||
meta: metaForUser(user),
|
||||
items: await itemsForFeed(opts, user, feed),
|
||||
nextPageLink: getNextPage(opts, user, feed),
|
||||
isIndex: isIndex,
|
||||
};
|
||||
|
||||
return template(templateData);
|
||||
}
|
||||
|
||||
function metaForUser(user) {
|
||||
return {
|
||||
avatar: user.icon && user.icon.url?user.icon.url:null,
|
||||
headerImage:user.image && user.image.url?user.image.url:null,
|
||||
title: user.name||user.preferredUsername||null,
|
||||
description: user.summary||null,
|
||||
link:user.url||"#"
|
||||
};
|
||||
return {
|
||||
avatar: user.icon && user.icon.url ? user.icon.url : null,
|
||||
headerImage: user.image && user.image.url ? user.image.url : null,
|
||||
title: user.name || user.preferredUsername || null,
|
||||
description: user.summary || null,
|
||||
link: user.url || "#",
|
||||
};
|
||||
}
|
||||
|
||||
async function itemsForFeed(opts,user,feed) {
|
||||
async function itemsForFeed(opts, user, feed) {
|
||||
let items = feed.orderedItems;
|
||||
|
||||
let items = feed.orderedItems;
|
||||
|
||||
if (opts.boosts){
|
||||
// yes, I have to fetch all the fucking boosts for this whole feed apparently >:/
|
||||
let boostData = [];
|
||||
let boostUrls = feed.orderedItems.filter(i=>i.type=="Announce").map(i=>i.object);
|
||||
// console.log(boostUrls);
|
||||
boostData = await promiseSome(boostUrls.map(apGet));
|
||||
if (opts.boosts) {
|
||||
// yes, I have to fetch all the fucking boosts for this whole feed apparently >:/
|
||||
let boostData = [];
|
||||
let boostUrls = feed.orderedItems
|
||||
.filter((i) => i.type == "Announce")
|
||||
.map((i) => i.object);
|
||||
// console.log(boostUrls);
|
||||
boostData = await promiseSome(boostUrls.map(apGet));
|
||||
|
||||
// now get user data for each of those
|
||||
let userData = await promiseSome(boostData.map(d=>d?d.attributedTo||"":null).map(apGet));
|
||||
// now get user data for each of those
|
||||
let userData = await promiseSome(
|
||||
boostData.map((d) => (d ? d.attributedTo || "" : null)).map(apGet)
|
||||
);
|
||||
|
||||
// put a ._userdata key on the item object if this is a boost
|
||||
for (let i = 0; i < boostData.length; i ++){
|
||||
if (userData[i] && boostData[i]){
|
||||
boostData[i]._userdata = userData[i];
|
||||
}
|
||||
}
|
||||
|
||||
// some URLs may have failed but IDGAF
|
||||
|
||||
// console.log(boostData[0]);
|
||||
|
||||
boostData.forEach((boostToot)=>{
|
||||
|
||||
if (!boostToot){// failed request
|
||||
return;
|
||||
}
|
||||
|
||||
// inject in-place into items
|
||||
|
||||
let index = -1;
|
||||
for (var i = 0; i < items.length; i ++){
|
||||
if (items[i].object == boostToot.id){
|
||||
index = i;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (index == -1){
|
||||
console.warn("warning: couldn't match boost to item: ",boostToot);
|
||||
return;
|
||||
}
|
||||
|
||||
boostToot.object = boostToot;// this lets the later stage parser access object without errors :)
|
||||
items[i] = boostToot;
|
||||
});
|
||||
// put a ._userdata key on the item object if this is a boost
|
||||
for (let i = 0; i < boostData.length; i++) {
|
||||
if (userData[i] && boostData[i]) {
|
||||
boostData[i]._userdata = userData[i];
|
||||
}
|
||||
}
|
||||
|
||||
// some URLs may have failed but IDGAF
|
||||
|
||||
return items.filter((item)=>{
|
||||
return typeof item.object == "object";// handle weird cases
|
||||
}).map((item)=>{
|
||||
// console.log(boostData[0]);
|
||||
|
||||
let enclosures = (item.object.attachment||[]).filter((a)=>{
|
||||
return a.type == "Document";
|
||||
}).map((a)=>{
|
||||
return {
|
||||
name:a.name,
|
||||
type:a.mediaType,
|
||||
url:a.url
|
||||
};
|
||||
boostData.forEach((boostToot) => {
|
||||
if (!boostToot) {
|
||||
// failed request
|
||||
return;
|
||||
}
|
||||
|
||||
// inject in-place into items
|
||||
|
||||
let index = -1;
|
||||
for (var i = 0; i < items.length; i++) {
|
||||
if (items[i].object == boostToot.id) {
|
||||
index = i;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (index == -1) {
|
||||
console.warn(`warning: couldn't match boost to item: ${boostToot}`);
|
||||
return;
|
||||
}
|
||||
|
||||
boostToot.object = boostToot; // this lets the later stage parser access object without errors :)
|
||||
items[i] = boostToot;
|
||||
});
|
||||
}
|
||||
|
||||
return items
|
||||
.filter((item) => {
|
||||
return typeof item.object == "object"; // handle weird cases
|
||||
})
|
||||
.map((item) => {
|
||||
let enclosures = (item.object.attachment || [])
|
||||
.filter((a) => {
|
||||
return a.type == "Document";
|
||||
})
|
||||
.map((a) => {
|
||||
return {
|
||||
name: a.name,
|
||||
type: a.mediaType,
|
||||
url: a.url,
|
||||
};
|
||||
});
|
||||
|
||||
let op = item._userdata?item._userdata:user;
|
||||
let op = item._userdata ? item._userdata : user;
|
||||
|
||||
return {
|
||||
isBoost:!!item._userdata,
|
||||
title:item._userdata?user.preferredUsername+" shared a status by "+op.preferredUsername:"",
|
||||
isReply:!!(item.object && item.object.inReplyTo),
|
||||
hasCw:item.object.sensitive||false,
|
||||
cw:item.object.summary,
|
||||
content: item.object&&item.object.content?item.object.content:"",//TODO sanitize then render without entity escapes
|
||||
atomHref:item.published?item.published.replace(/\W+/g,""):Math.random().toString().replace(".",""),// used for IDs
|
||||
enclosures:enclosures,
|
||||
stringDate:item.published?getTimeDisplay(Date.parse(item.published)):"",
|
||||
permalink:item.object.id?item.object.id:"#",
|
||||
author:{
|
||||
uri:op.url,// link to author page
|
||||
avatar:op.icon&&op.icon.url?op.icon.url:"",
|
||||
displayName:op.name || op.preferredUsername,
|
||||
fullName:op.preferredUsername+"@"+(new URL(op.url).hostname),
|
||||
}
|
||||
};
|
||||
return {
|
||||
isBoost: !!item._userdata,
|
||||
title: item._userdata
|
||||
? user.preferredUsername +
|
||||
" shared a status by " +
|
||||
op.preferredUsername
|
||||
: "",
|
||||
isReply: !!(item.object && item.object.inReplyTo),
|
||||
hasCw: item.object.sensitive || false,
|
||||
cw: item.object.summary,
|
||||
content: item.object && item.object.content ? item.object.content : "", //TODO sanitize then render without entity escapes
|
||||
atomHref: item.published
|
||||
? item.published.replace(/\W+/g, "")
|
||||
: Math.random().toString().replace("./g", ""), // used for IDs
|
||||
enclosures: enclosures,
|
||||
stringDate: item.published
|
||||
? getTimeDisplay(Date.parse(item.published))
|
||||
: "",
|
||||
permalink: item.object.id ? item.object.id : "#",
|
||||
author: {
|
||||
uri: op.url, // link to author page
|
||||
avatar: op.icon && op.icon.url ? op.icon.url : "",
|
||||
displayName: op.name || op.preferredUsername,
|
||||
fullName: op.preferredUsername + "@" + new URL(op.url).hostname,
|
||||
},
|
||||
};
|
||||
});
|
||||
}
|
||||
|
||||
function getNextPage(opts,user,feed){
|
||||
//based on feed.next
|
||||
if (!feed.next){return null;}
|
||||
// take feed.next, uriencode it, then take user url, then take options.mastofeedUrl
|
||||
//let base = opts.mastofeedUrl.slice(0,opts.mastofeedUrl.indexOf("?"));
|
||||
function getNextPage(opts, user, feed) {
|
||||
//based on feed.next
|
||||
if (!feed.next) {
|
||||
return null;
|
||||
}
|
||||
// take feed.next, uriencode it, then take user url, then take options.mastofeedUrl
|
||||
//let base = opts.mastofeedUrl.slice(0,opts.mastofeedUrl.indexOf("?"));
|
||||
|
||||
let ret = "/api/v1/feed?userurl=" + encodeURIComponent(opts.userUrl) + "&feedurl=" +encodeURIComponent(feed.next) + "&instance_type=" + opts.instance_type;
|
||||
|
||||
// add other params to the end
|
||||
(["theme","header","size","boosts","replies"]).forEach((k)=>{
|
||||
if (typeof opts[k] != "undefined"){
|
||||
ret+=`&${k}=${ opts[k].toString() }`;
|
||||
}
|
||||
});
|
||||
return ret;
|
||||
let ret =
|
||||
"/api/v1/feed?userurl=" +
|
||||
encodeURIComponent(opts.userUrl) +
|
||||
"&feedurl=" +
|
||||
encodeURIComponent(feed.next) +
|
||||
"&instance_type=" +
|
||||
opts.instance_type;
|
||||
|
||||
// add other params to the end
|
||||
["theme", "header", "size", "boosts", "replies"].forEach((k) => {
|
||||
if (typeof opts[k] != "undefined") {
|
||||
ret += `&${k}=${opts[k].toString()}`;
|
||||
}
|
||||
});
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
||||
// utilities below
|
||||
|
||||
function getTimeDisplay(d) {
|
||||
// let d = d;
|
||||
if (typeof d !== "object") {
|
||||
d = new Date(d);
|
||||
}
|
||||
// convert to number
|
||||
let dt = d.getTime();
|
||||
let now = Date.now();
|
||||
// let d = d;
|
||||
if (typeof d !== "object") {
|
||||
d = new Date(d);
|
||||
}
|
||||
// convert to number
|
||||
let dt = d.getTime();
|
||||
let now = Date.now();
|
||||
|
||||
let delta = now - dt;
|
||||
|
||||
// over 6 days ago
|
||||
if (delta > 1000 * 60 * 60 * 24 * 6) {
|
||||
return isoDateToEnglish(d.toISOString());
|
||||
} else {
|
||||
return format(dt);
|
||||
}
|
||||
let delta = now - dt;
|
||||
|
||||
// over 6 days ago
|
||||
if (delta > 1000 * 60 * 60 * 24 * 6) {
|
||||
return isoDateToEnglish(d.toISOString());
|
||||
} else {
|
||||
return format(dt);
|
||||
}
|
||||
}
|
||||
|
||||
function isoDateToEnglish(d) {
|
||||
let dt = d.split(/[t-]/gi);
|
||||
let months = [
|
||||
"January",
|
||||
"February",
|
||||
"March",
|
||||
"April",
|
||||
"May",
|
||||
"June",
|
||||
"July",
|
||||
"August",
|
||||
"September",
|
||||
"October",
|
||||
"November",
|
||||
"December",
|
||||
];
|
||||
|
||||
let dt = d.split(/[t-]/ig);
|
||||
let months = ["January", "February", "March", "April", "May", "June",
|
||||
"July", "August", "September", "October", "November", "December"];
|
||||
|
||||
return months[Number(dt[1]) - 1] + " " + dt[2] + ", " + dt[0];
|
||||
return months[Number(dt[1]) - 1] + " " + dt[2] + ", " + dt[0];
|
||||
}
|
||||
|
|
|
@ -2,35 +2,34 @@ import { compile } from "ejs";
|
|||
import { readFileSync } from "fs";
|
||||
let template = compile(readFileSync("./lib/template.ejs", "utf8"));
|
||||
|
||||
export default function(code,message,displayOptions){
|
||||
export default function (code, message, displayOptions) {
|
||||
let msg;
|
||||
// const displayOptions = displayOptions || {};
|
||||
|
||||
let msg;
|
||||
// const displayOptions = displayOptions || {};
|
||||
if (code == 500 && !message) {
|
||||
msg =
|
||||
"<p>Sorry, we are having trouble fetching posts for this user. Please try again later.</p><br><p>If the issue persists, <a href=`https://git.froth.zone/Sam/fedifeed/issues`>please open an issue on Gitea</a>, or message sam@froth.zone</p>";
|
||||
} else {
|
||||
msg = message || "";
|
||||
}
|
||||
|
||||
if (code == 500 && !message){
|
||||
msg = "<p>Sorry, we are having trouble fetching posts for this user. Please try again later.</p><br><p>If the issue persists, <a href=\"https://git.froth.zone/Sam/fedifeed/issues\">please open an issue on Gitea</a>, or message sam@froth.zone</p>";
|
||||
}else{
|
||||
msg = message||"";
|
||||
}
|
||||
let options = {
|
||||
opts: {
|
||||
header: true,
|
||||
theme: displayOptions?.theme || null,
|
||||
size: displayOptions?.size || null,
|
||||
},
|
||||
meta: {
|
||||
title: code.toString(),
|
||||
description: msg,
|
||||
link: "#",
|
||||
// avatar:'',
|
||||
// headerImage:''
|
||||
},
|
||||
items: [],
|
||||
nextPageLink: null,
|
||||
isIndex: true,
|
||||
};
|
||||
|
||||
|
||||
let options = {
|
||||
opts:{
|
||||
header:true,
|
||||
theme:displayOptions.theme||null,
|
||||
size:displayOptions.size||null
|
||||
},
|
||||
meta:{
|
||||
title:code.toString(),
|
||||
description:msg,
|
||||
link:"#"
|
||||
// avatar:'',
|
||||
// headerImage:''
|
||||
},
|
||||
items:[],
|
||||
nextPageLink:null,
|
||||
isIndex:true
|
||||
};
|
||||
|
||||
return template(options);
|
||||
}
|
||||
return template(options);
|
||||
}
|
||||
|
|
|
@ -1,3 +1,4 @@
|
|||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="UTF-8"></meta>
|
||||
|
@ -6,7 +7,7 @@
|
|||
|
||||
<% if (opts.theme && opts.theme.toLowerCase() == 'masto-light'){ %>
|
||||
<link rel="stylesheet" href="/css/masto-light.css"></link>
|
||||
<% } else if (opts.theme && opts.theme.toLowerCase() == 'auto'){ %>
|
||||
<% } else if (opts.theme && opts.theme.toLowerCase() == 'masto-auto'){ %>
|
||||
<link rel="stylesheet" href="/css/masto-auto.css"></link>
|
||||
<% } else if (opts.theme && opts.theme.toLowerCase() == 'misskey-dark'){ %>
|
||||
<link rel="stylesheet" href="/css/misskey-dark.css"></link>
|
||||
|
@ -113,7 +114,7 @@
|
|||
<% } %>
|
||||
|
||||
<% if ( isIndex ){ %>
|
||||
<script src="/infinite-scroll.js"></script>
|
||||
<script src="/lib/infinite-scroll.pkgd.min.js"></script>
|
||||
<script type="text/javascript">
|
||||
|
||||
let lastPageLoaded = null;
|
||||
|
|
57
package.json
57
package.json
|
@ -1,26 +1,31 @@
|
|||
{
|
||||
"dependencies": {
|
||||
"cors": "^2.8.5",
|
||||
"ejs": "^3.1.6",
|
||||
"express": "^4.17.2",
|
||||
"feedparser": "^2.2.10",
|
||||
"got": "^12.0.1",
|
||||
"megalodon": "^4.0.0",
|
||||
"morgan": "^1.10.0",
|
||||
"serve-static": "^1.14.2",
|
||||
"timeago.js": "^4.0.2"
|
||||
},
|
||||
"main": "index.js",
|
||||
"type": "module",
|
||||
"license": "MIT",
|
||||
"scripts": {
|
||||
"start": "yarn build-styles && node src/index.js",
|
||||
"build-styles": "node src/build-styles.js",
|
||||
"lint": "eslint --ext .js src lib",
|
||||
"test": "echo \"Error: no test specified\" && exit 0"
|
||||
},
|
||||
"devDependencies": {
|
||||
"eslint": "8.15.0",
|
||||
"node-sass": "7.0.1"
|
||||
}
|
||||
}
|
||||
{
|
||||
"dependencies": {
|
||||
"cors": "2.8.5",
|
||||
"ejs": "3.1.7",
|
||||
"express": "4.18.1",
|
||||
"feedparser": "2.2.10",
|
||||
"got": "12.0.4",
|
||||
"helmet": "5.0.2",
|
||||
"megalodon": "4.0.1",
|
||||
"morgan": "1.10.0",
|
||||
"serve-static": "1.15.0",
|
||||
"timeago.js": "4.0.2"
|
||||
},
|
||||
"main": "index.js",
|
||||
"type": "module",
|
||||
"license": "MIT",
|
||||
"scripts": {
|
||||
"start": "yarn node index.js",
|
||||
"lint": "eslint --fix . && prettier --write .",
|
||||
"lint:ci": "eslint . && prettier . --check",
|
||||
"test": "echo \"Error: no test specified\" && exit 0"
|
||||
},
|
||||
"devDependencies": {
|
||||
"eslint": "8.15.0",
|
||||
"eslint-config-prettier": "8.5.0",
|
||||
"eslint-plugin-prettier": "4.0.0",
|
||||
"prettier": "2.6.2",
|
||||
"sass": "1.51.0"
|
||||
},
|
||||
"packageManager": "yarn@3.2.0"
|
||||
}
|
||||
|
|
|
@ -1,132 +1,162 @@
|
|||
html,
|
||||
body {
|
||||
background-color: #ffffff;
|
||||
font-family: 'Roboto', roboto, Arial, sans-serif;
|
||||
font-family: "Roboto", roboto, Arial, sans-serif;
|
||||
color: #282c37;
|
||||
font-weight: lighter;
|
||||
overflow-x: hidden;
|
||||
font-size: 100%;
|
||||
word-break: break-word; }
|
||||
word-break: break-word;
|
||||
}
|
||||
|
||||
* {
|
||||
margin: 0;
|
||||
padding: 0; }
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
a,
|
||||
a * {
|
||||
color: #2b90d9; }
|
||||
color: #2b90d9;
|
||||
}
|
||||
|
||||
.meta {
|
||||
background-color: #ecf0f4; }
|
||||
background-color: #ecf0f4;
|
||||
}
|
||||
|
||||
.header {
|
||||
display: flex;
|
||||
background-size: cover;
|
||||
min-height: 8rem;
|
||||
color: #282c37; }
|
||||
.header .header-left, .header .header-right {
|
||||
margin: 0; }
|
||||
.header .header-left {
|
||||
min-width: 8rem;
|
||||
position: relative;
|
||||
text-align: center;
|
||||
background: rgba(255, 255, 255, 0.3); }
|
||||
.header .header-left .avatar {
|
||||
width: 6rem;
|
||||
height: 6rem;
|
||||
position: relative;
|
||||
top: calc(50% - 3rem); }
|
||||
.header .header-right {
|
||||
flex-grow: 1;
|
||||
font-size: 0.9rem;
|
||||
padding: 0.9rem;
|
||||
background: rgba(255, 255, 255, 0.85); }
|
||||
.header .header-title {
|
||||
font-size: 1.3rem; }
|
||||
color: #282c37;
|
||||
}
|
||||
.header .header-left,
|
||||
.header .header-right {
|
||||
margin: 0;
|
||||
}
|
||||
.header .header-left {
|
||||
min-width: 8rem;
|
||||
position: relative;
|
||||
text-align: center;
|
||||
background: rgba(255, 255, 255, 0.3);
|
||||
}
|
||||
.header .header-left .avatar {
|
||||
width: 6rem;
|
||||
height: 6rem;
|
||||
position: relative;
|
||||
top: calc(50% - 3rem);
|
||||
}
|
||||
.header .header-right {
|
||||
flex-grow: 1;
|
||||
font-size: 0.9rem;
|
||||
padding: 0.9rem;
|
||||
background: rgba(255, 255, 255, 0.85);
|
||||
}
|
||||
.header .header-title {
|
||||
font-size: 1.3rem;
|
||||
}
|
||||
|
||||
.item {
|
||||
padding: 1rem;
|
||||
border-top: solid 1px #8494ab; }
|
||||
border-top: solid 1px #8494ab;
|
||||
}
|
||||
|
||||
.item-content,
|
||||
.cw,
|
||||
.title {
|
||||
font-size: 1.1rem;
|
||||
font-weight: lighter; }
|
||||
font-weight: lighter;
|
||||
}
|
||||
|
||||
.item-content *, .cw {
|
||||
.item-content *,
|
||||
.cw {
|
||||
margin: 1rem 0;
|
||||
line-height: 1.4rem; }
|
||||
line-height: 1.4rem;
|
||||
}
|
||||
|
||||
.item-title,
|
||||
.date,
|
||||
.author-fullname {
|
||||
color: #90a1ba;
|
||||
font-size: 0.9rem; }
|
||||
font-size: 0.9rem;
|
||||
}
|
||||
|
||||
.date {
|
||||
margin: 1rem 0 0 0;
|
||||
text-decoration: none;
|
||||
display: block; }
|
||||
display: block;
|
||||
}
|
||||
|
||||
.date:hover {
|
||||
text-decoration: underline; }
|
||||
text-decoration: underline;
|
||||
}
|
||||
|
||||
.item-title {
|
||||
margin-bottom: 0.7rem; }
|
||||
margin-bottom: 0.7rem;
|
||||
}
|
||||
|
||||
.author {
|
||||
display: flex;
|
||||
margin-bottom: 1rem; }
|
||||
margin-bottom: 1rem;
|
||||
}
|
||||
|
||||
.author-info {
|
||||
margin: 0 1rem;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
justify-content: space-around; }
|
||||
.author-info .author-displayname {
|
||||
font-size: 1.2rem;
|
||||
color: #282c37;
|
||||
text-decoration: none;
|
||||
display: block;
|
||||
font-weight: bolder; }
|
||||
justify-content: space-around;
|
||||
}
|
||||
.author-info .author-displayname {
|
||||
font-size: 1.2rem;
|
||||
color: #282c37;
|
||||
text-decoration: none;
|
||||
display: block;
|
||||
font-weight: bolder;
|
||||
}
|
||||
|
||||
.avatar {
|
||||
width: 3rem;
|
||||
height: 3rem;
|
||||
border: none;
|
||||
border-radius: 10%; }
|
||||
.avatar.circular {
|
||||
border-radius: 100%; }
|
||||
border-radius: 10%;
|
||||
}
|
||||
.avatar.circular {
|
||||
border-radius: 100%;
|
||||
}
|
||||
|
||||
.enclosures {
|
||||
padding: 0.5em 0;
|
||||
display: flex;
|
||||
flex-wrap: wrap;
|
||||
flex-direction: row;
|
||||
overflow: hidden; }
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
.enclosure {
|
||||
display: flex;
|
||||
flex: 1 1 auto;
|
||||
width: 50%;
|
||||
border: none;
|
||||
max-height: 12rem; }
|
||||
max-height: 12rem;
|
||||
}
|
||||
|
||||
a.enclosure {
|
||||
cursor: zoom-in; }
|
||||
cursor: zoom-in;
|
||||
}
|
||||
|
||||
.enclosure > * {
|
||||
flex: 1 1 auto;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
object-fit: cover; }
|
||||
object-fit: cover;
|
||||
}
|
||||
|
||||
.meta .title {
|
||||
font-weight: bold; }
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
.hidden {
|
||||
display: none; }
|
||||
display: none;
|
||||
}
|
||||
|
||||
.button {
|
||||
padding: 0.5rem 1rem;
|
||||
|
@ -140,145 +170,182 @@ a.enclosure {
|
|||
font-weight: 400;
|
||||
cursor: pointer;
|
||||
text-transform: uppercase;
|
||||
user-select: none; }
|
||||
user-select: none;
|
||||
}
|
||||
|
||||
label.button {
|
||||
padding: 0.25rem 0.5rem;
|
||||
margin: 0.4rem;
|
||||
background: #8494ab;
|
||||
color: #ffffff;
|
||||
font-size: 0.8rem; }
|
||||
font-size: 0.8rem;
|
||||
}
|
||||
|
||||
input[type=checkbox] {
|
||||
input[type="checkbox"] {
|
||||
position: absolute;
|
||||
left: -9999px; }
|
||||
left: -9999px;
|
||||
}
|
||||
|
||||
input[type=checkbox]:checked ~ label::after {
|
||||
content: " Less"; }
|
||||
input[type="checkbox"]:checked ~ label::after {
|
||||
content: " Less";
|
||||
}
|
||||
|
||||
input[type=checkbox]:not(:checked) ~ label::after {
|
||||
content: " More"; }
|
||||
input[type="checkbox"]:not(:checked) ~ label::after {
|
||||
content: " More";
|
||||
}
|
||||
|
||||
input[type=checkbox]:not(:checked) ~ div {
|
||||
display: none; }
|
||||
input[type="checkbox"]:not(:checked) ~ div {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.item-content,
|
||||
.description,
|
||||
.title,
|
||||
html,
|
||||
body {
|
||||
font-weight: normal; }
|
||||
font-weight: normal;
|
||||
}
|
||||
|
||||
@media (prefers-color-scheme: masto-dark) {
|
||||
html,
|
||||
body {
|
||||
background-color: #282c37;
|
||||
font-family: 'Roboto', roboto, Arial, sans-serif;
|
||||
font-family: "Roboto", roboto, Arial, sans-serif;
|
||||
color: #ffffff;
|
||||
font-weight: lighter;
|
||||
overflow-x: hidden;
|
||||
font-size: 100%;
|
||||
word-break: break-word; }
|
||||
word-break: break-word;
|
||||
}
|
||||
* {
|
||||
margin: 0;
|
||||
padding: 0; }
|
||||
padding: 0;
|
||||
}
|
||||
a,
|
||||
a * {
|
||||
color: #2b90d9; }
|
||||
color: #2b90d9;
|
||||
}
|
||||
.meta {
|
||||
background-color: #39404d; }
|
||||
background-color: #39404d;
|
||||
}
|
||||
.header {
|
||||
display: flex;
|
||||
background-size: cover;
|
||||
min-height: 8rem;
|
||||
color: #ffffff; }
|
||||
.header .header-left, .header .header-right {
|
||||
margin: 0; }
|
||||
.header .header-left {
|
||||
min-width: 8rem;
|
||||
position: relative;
|
||||
text-align: center;
|
||||
background: rgba(40, 44, 55, 0.3); }
|
||||
.header .header-left .avatar {
|
||||
width: 6rem;
|
||||
height: 6rem;
|
||||
position: relative;
|
||||
top: calc(50% - 3rem); }
|
||||
.header .header-right {
|
||||
flex-grow: 1;
|
||||
font-size: 0.9rem;
|
||||
padding: 0.9rem;
|
||||
background: rgba(40, 44, 55, 0.85); }
|
||||
.header .header-title {
|
||||
font-size: 1.3rem; }
|
||||
color: #ffffff;
|
||||
}
|
||||
.header .header-left,
|
||||
.header .header-right {
|
||||
margin: 0;
|
||||
}
|
||||
.header .header-left {
|
||||
min-width: 8rem;
|
||||
position: relative;
|
||||
text-align: center;
|
||||
background: rgba(40, 44, 55, 0.3);
|
||||
}
|
||||
.header .header-left .avatar {
|
||||
width: 6rem;
|
||||
height: 6rem;
|
||||
position: relative;
|
||||
top: calc(50% - 3rem);
|
||||
}
|
||||
.header .header-right {
|
||||
flex-grow: 1;
|
||||
font-size: 0.9rem;
|
||||
padding: 0.9rem;
|
||||
background: rgba(40, 44, 55, 0.85);
|
||||
}
|
||||
.header .header-title {
|
||||
font-size: 1.3rem;
|
||||
}
|
||||
.item {
|
||||
padding: 1rem;
|
||||
border-top: solid 1px #626d80; }
|
||||
border-top: solid 1px #626d80;
|
||||
}
|
||||
.item-content,
|
||||
.cw,
|
||||
.title {
|
||||
font-size: 1.1rem;
|
||||
font-weight: lighter; }
|
||||
.item-content *, .cw {
|
||||
font-weight: lighter;
|
||||
}
|
||||
.item-content *,
|
||||
.cw {
|
||||
margin: 1rem 0;
|
||||
line-height: 1.4rem; }
|
||||
line-height: 1.4rem;
|
||||
}
|
||||
.item-title,
|
||||
.date,
|
||||
.author-fullname {
|
||||
color: #9baec8;
|
||||
font-size: 0.9rem; }
|
||||
font-size: 0.9rem;
|
||||
}
|
||||
.date {
|
||||
margin: 1rem 0 0 0;
|
||||
text-decoration: none;
|
||||
display: block; }
|
||||
display: block;
|
||||
}
|
||||
.date:hover {
|
||||
text-decoration: underline; }
|
||||
text-decoration: underline;
|
||||
}
|
||||
.item-title {
|
||||
margin-bottom: 0.7rem; }
|
||||
margin-bottom: 0.7rem;
|
||||
}
|
||||
.author {
|
||||
display: flex;
|
||||
margin-bottom: 1rem; }
|
||||
margin-bottom: 1rem;
|
||||
}
|
||||
.author-info {
|
||||
margin: 0 1rem;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
justify-content: space-around; }
|
||||
.author-info .author-displayname {
|
||||
font-size: 1.2rem;
|
||||
color: #ffffff;
|
||||
text-decoration: none;
|
||||
display: block;
|
||||
font-weight: bolder; }
|
||||
justify-content: space-around;
|
||||
}
|
||||
.author-info .author-displayname {
|
||||
font-size: 1.2rem;
|
||||
color: #ffffff;
|
||||
text-decoration: none;
|
||||
display: block;
|
||||
font-weight: bolder;
|
||||
}
|
||||
.avatar {
|
||||
width: 3rem;
|
||||
height: 3rem;
|
||||
border: none;
|
||||
border-radius: 10%; }
|
||||
.avatar.circular {
|
||||
border-radius: 100%; }
|
||||
border-radius: 10%;
|
||||
}
|
||||
.avatar.circular {
|
||||
border-radius: 100%;
|
||||
}
|
||||
.enclosures {
|
||||
padding: 0.5em 0;
|
||||
display: flex;
|
||||
flex-wrap: wrap;
|
||||
flex-direction: row;
|
||||
overflow: hidden; }
|
||||
overflow: hidden;
|
||||
}
|
||||
.enclosure {
|
||||
display: flex;
|
||||
flex: 1 1 auto;
|
||||
width: 50%;
|
||||
border: none;
|
||||
max-height: 12rem; }
|
||||
max-height: 12rem;
|
||||
}
|
||||
a.enclosure {
|
||||
cursor: zoom-in; }
|
||||
cursor: zoom-in;
|
||||
}
|
||||
.enclosure > * {
|
||||
flex: 1 1 auto;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
object-fit: cover; }
|
||||
object-fit: cover;
|
||||
}
|
||||
.meta .title {
|
||||
font-weight: bold; }
|
||||
font-weight: bold;
|
||||
}
|
||||
.hidden {
|
||||
display: none; }
|
||||
display: none;
|
||||
}
|
||||
.button {
|
||||
padding: 0.5rem 1rem;
|
||||
border: none;
|
||||
|
@ -291,19 +358,26 @@ body {
|
|||
font-weight: 400;
|
||||
cursor: pointer;
|
||||
text-transform: uppercase;
|
||||
user-select: none; }
|
||||
user-select: none;
|
||||
}
|
||||
label.button {
|
||||
padding: 0.25rem 0.5rem;
|
||||
margin: 0.4rem;
|
||||
background: #626d80;
|
||||
color: #282c37;
|
||||
font-size: 0.8rem; }
|
||||
input[type=checkbox] {
|
||||
font-size: 0.8rem;
|
||||
}
|
||||
input[type="checkbox"] {
|
||||
position: absolute;
|
||||
left: -9999px; }
|
||||
input[type=checkbox]:checked ~ label::after {
|
||||
content: " Less"; }
|
||||
input[type=checkbox]:not(:checked) ~ label::after {
|
||||
content: " More"; }
|
||||
input[type=checkbox]:not(:checked) ~ div {
|
||||
display: none; } }
|
||||
left: -9999px;
|
||||
}
|
||||
input[type="checkbox"]:checked ~ label::after {
|
||||
content: " Less";
|
||||
}
|
||||
input[type="checkbox"]:not(:checked) ~ label::after {
|
||||
content: " More";
|
||||
}
|
||||
input[type="checkbox"]:not(:checked) ~ div {
|
||||
display: none;
|
||||
}
|
||||
}
|
199
public/css/masto-dark.css
Normal file
199
public/css/masto-dark.css
Normal file
|
@ -0,0 +1,199 @@
|
|||
html,
|
||||
body {
|
||||
background-color: #282c37;
|
||||
font-family: "Roboto", roboto, Arial, sans-serif;
|
||||
color: #ffffff;
|
||||
font-weight: lighter;
|
||||
overflow-x: hidden;
|
||||
font-size: 100%;
|
||||
word-break: break-word;
|
||||
}
|
||||
|
||||
* {
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
a,
|
||||
a * {
|
||||
color: #2b90d9;
|
||||
}
|
||||
|
||||
.meta {
|
||||
background-color: #39404d;
|
||||
}
|
||||
|
||||
.header {
|
||||
display: flex;
|
||||
background-size: cover;
|
||||
min-height: 8rem;
|
||||
color: #ffffff;
|
||||
}
|
||||
.header .header-left,
|
||||
.header .header-right {
|
||||
margin: 0;
|
||||
}
|
||||
.header .header-left {
|
||||
min-width: 8rem;
|
||||
position: relative;
|
||||
text-align: center;
|
||||
background: rgba(40, 44, 55, 0.3);
|
||||
}
|
||||
.header .header-left .avatar {
|
||||
width: 6rem;
|
||||
height: 6rem;
|
||||
position: relative;
|
||||
top: calc(50% - 3rem);
|
||||
}
|
||||
.header .header-right {
|
||||
flex-grow: 1;
|
||||
font-size: 0.9rem;
|
||||
padding: 0.9rem;
|
||||
background: rgba(40, 44, 55, 0.85);
|
||||
}
|
||||
.header .header-title {
|
||||
font-size: 1.3rem;
|
||||
}
|
||||
|
||||
.item {
|
||||
padding: 1rem;
|
||||
border-top: solid 1px #626d80;
|
||||
}
|
||||
|
||||
.item-content,
|
||||
.cw,
|
||||
.title {
|
||||
font-size: 1.1rem;
|
||||
font-weight: lighter;
|
||||
}
|
||||
|
||||
.item-content *,
|
||||
.cw {
|
||||
margin: 1rem 0;
|
||||
line-height: 1.4rem;
|
||||
}
|
||||
|
||||
.item-title,
|
||||
.date,
|
||||
.author-fullname {
|
||||
color: #9baec8;
|
||||
font-size: 0.9rem;
|
||||
}
|
||||
|
||||
.date {
|
||||
margin: 1rem 0 0 0;
|
||||
text-decoration: none;
|
||||
display: block;
|
||||
}
|
||||
|
||||
.date:hover {
|
||||
text-decoration: underline;
|
||||
}
|
||||
|
||||
.item-title {
|
||||
margin-bottom: 0.7rem;
|
||||
}
|
||||
|
||||
.author {
|
||||
display: flex;
|
||||
margin-bottom: 1rem;
|
||||
}
|
||||
|
||||
.author-info {
|
||||
margin: 0 1rem;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
justify-content: space-around;
|
||||
}
|
||||
.author-info .author-displayname {
|
||||
font-size: 1.2rem;
|
||||
color: #ffffff;
|
||||
text-decoration: none;
|
||||
display: block;
|
||||
font-weight: bolder;
|
||||
}
|
||||
|
||||
.avatar {
|
||||
width: 3rem;
|
||||
height: 3rem;
|
||||
border: none;
|
||||
border-radius: 10%;
|
||||
}
|
||||
.avatar.circular {
|
||||
border-radius: 100%;
|
||||
}
|
||||
|
||||
.enclosures {
|
||||
padding: 0.5em 0;
|
||||
display: flex;
|
||||
flex-wrap: wrap;
|
||||
flex-direction: row;
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
.enclosure {
|
||||
display: flex;
|
||||
flex: 1 1 auto;
|
||||
width: 50%;
|
||||
border: none;
|
||||
max-height: 12rem;
|
||||
}
|
||||
|
||||
a.enclosure {
|
||||
cursor: zoom-in;
|
||||
}
|
||||
|
||||
.enclosure > * {
|
||||
flex: 1 1 auto;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
object-fit: cover;
|
||||
}
|
||||
|
||||
.meta .title {
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
.hidden {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.button {
|
||||
padding: 0.5rem 1rem;
|
||||
border: none;
|
||||
margin: 1rem;
|
||||
border-radius: 0.5rem;
|
||||
display: inline-block;
|
||||
text-decoration: none;
|
||||
background: #2b90d9;
|
||||
color: #ffffff;
|
||||
font-weight: 400;
|
||||
cursor: pointer;
|
||||
text-transform: uppercase;
|
||||
user-select: none;
|
||||
}
|
||||
|
||||
label.button {
|
||||
padding: 0.25rem 0.5rem;
|
||||
margin: 0.4rem;
|
||||
background: #626d80;
|
||||
color: #282c37;
|
||||
font-size: 0.8rem;
|
||||
}
|
||||
|
||||
input[type="checkbox"] {
|
||||
position: absolute;
|
||||
left: -9999px;
|
||||
}
|
||||
|
||||
input[type="checkbox"]:checked ~ label::after {
|
||||
content: " Less";
|
||||
}
|
||||
|
||||
input[type="checkbox"]:not(:checked) ~ label::after {
|
||||
content: " More";
|
||||
}
|
||||
|
||||
input[type="checkbox"]:not(:checked) ~ div {
|
||||
display: none;
|
||||
}
|
207
public/css/masto-light.css
Normal file
207
public/css/masto-light.css
Normal file
|
@ -0,0 +1,207 @@
|
|||
html,
|
||||
body {
|
||||
background-color: #ffffff;
|
||||
font-family: "Roboto", roboto, Arial, sans-serif;
|
||||
color: #282c37;
|
||||
font-weight: lighter;
|
||||
overflow-x: hidden;
|
||||
font-size: 100%;
|
||||
word-break: break-word;
|
||||
}
|
||||
|
||||
* {
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
a,
|
||||
a * {
|
||||
color: #2b90d9;
|
||||
}
|
||||
|
||||
.meta {
|
||||
background-color: #ecf0f4;
|
||||
}
|
||||
|
||||
.header {
|
||||
display: flex;
|
||||
background-size: cover;
|
||||
min-height: 8rem;
|
||||
color: #282c37;
|
||||
}
|
||||
.header .header-left,
|
||||
.header .header-right {
|
||||
margin: 0;
|
||||
}
|
||||
.header .header-left {
|
||||
min-width: 8rem;
|
||||
position: relative;
|
||||
text-align: center;
|
||||
background: rgba(255, 255, 255, 0.3);
|
||||
}
|
||||
.header .header-left .avatar {
|
||||
width: 6rem;
|
||||
height: 6rem;
|
||||
position: relative;
|
||||
top: calc(50% - 3rem);
|
||||
}
|
||||
.header .header-right {
|
||||
flex-grow: 1;
|
||||
font-size: 0.9rem;
|
||||
padding: 0.9rem;
|
||||
background: rgba(255, 255, 255, 0.85);
|
||||
}
|
||||
.header .header-title {
|
||||
font-size: 1.3rem;
|
||||
}
|
||||
|
||||
.item {
|
||||
padding: 1rem;
|
||||
border-top: solid 1px #8494ab;
|
||||
}
|
||||
|
||||
.item-content,
|
||||
.cw,
|
||||
.title {
|
||||
font-size: 1.1rem;
|
||||
font-weight: lighter;
|
||||
}
|
||||
|
||||
.item-content *,
|
||||
.cw {
|
||||
margin: 1rem 0;
|
||||
line-height: 1.4rem;
|
||||
}
|
||||
|
||||
.item-title,
|
||||
.date,
|
||||
.author-fullname {
|
||||
color: #90a1ba;
|
||||
font-size: 0.9rem;
|
||||
}
|
||||
|
||||
.date {
|
||||
margin: 1rem 0 0 0;
|
||||
text-decoration: none;
|
||||
display: block;
|
||||
}
|
||||
|
||||
.date:hover {
|
||||
text-decoration: underline;
|
||||
}
|
||||
|
||||
.item-title {
|
||||
margin-bottom: 0.7rem;
|
||||
}
|
||||
|
||||
.author {
|
||||
display: flex;
|
||||
margin-bottom: 1rem;
|
||||
}
|
||||
|
||||
.author-info {
|
||||
margin: 0 1rem;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
justify-content: space-around;
|
||||
}
|
||||
.author-info .author-displayname {
|
||||
font-size: 1.2rem;
|
||||
color: #282c37;
|
||||
text-decoration: none;
|
||||
display: block;
|
||||
font-weight: bolder;
|
||||
}
|
||||
|
||||
.avatar {
|
||||
width: 3rem;
|
||||
height: 3rem;
|
||||
border: none;
|
||||
border-radius: 10%;
|
||||
}
|
||||
.avatar.circular {
|
||||
border-radius: 100%;
|
||||
}
|
||||
|
||||
.enclosures {
|
||||
padding: 0.5em 0;
|
||||
display: flex;
|
||||
flex-wrap: wrap;
|
||||
flex-direction: row;
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
.enclosure {
|
||||
display: flex;
|
||||
flex: 1 1 auto;
|
||||
width: 50%;
|
||||
border: none;
|
||||
max-height: 12rem;
|
||||
}
|
||||
|
||||
a.enclosure {
|
||||
cursor: zoom-in;
|
||||
}
|
||||
|
||||
.enclosure > * {
|
||||
flex: 1 1 auto;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
object-fit: cover;
|
||||
}
|
||||
|
||||
.meta .title {
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
.hidden {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.button {
|
||||
padding: 0.5rem 1rem;
|
||||
border: none;
|
||||
margin: 1rem;
|
||||
border-radius: 0.5rem;
|
||||
display: inline-block;
|
||||
text-decoration: none;
|
||||
background: #2b90d9;
|
||||
color: #282c37;
|
||||
font-weight: 400;
|
||||
cursor: pointer;
|
||||
text-transform: uppercase;
|
||||
user-select: none;
|
||||
}
|
||||
|
||||
label.button {
|
||||
padding: 0.25rem 0.5rem;
|
||||
margin: 0.4rem;
|
||||
background: #8494ab;
|
||||
color: #ffffff;
|
||||
font-size: 0.8rem;
|
||||
}
|
||||
|
||||
input[type="checkbox"] {
|
||||
position: absolute;
|
||||
left: -9999px;
|
||||
}
|
||||
|
||||
input[type="checkbox"]:checked ~ label::after {
|
||||
content: " Less";
|
||||
}
|
||||
|
||||
input[type="checkbox"]:not(:checked) ~ label::after {
|
||||
content: " More";
|
||||
}
|
||||
|
||||
input[type="checkbox"]:not(:checked) ~ div {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.item-content,
|
||||
.description,
|
||||
.title,
|
||||
html,
|
||||
body {
|
||||
font-weight: normal;
|
||||
}
|
428
public/css/misskey-auto.css
Normal file
428
public/css/misskey-auto.css
Normal file
|
@ -0,0 +1,428 @@
|
|||
html,
|
||||
body {
|
||||
background-color: rgb(249, 249, 249);
|
||||
font-family: "Roboto", roboto, Arial, sans-serif;
|
||||
color: #282c37;
|
||||
font-weight: lighter;
|
||||
overflow-x: hidden;
|
||||
font-size: 100%;
|
||||
word-break: break-word;
|
||||
}
|
||||
|
||||
* {
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
a,
|
||||
a * {
|
||||
color: rgb(68, 164, 193);
|
||||
}
|
||||
|
||||
a[rel="tag"] {
|
||||
color: rgb(255, 145, 86);
|
||||
}
|
||||
|
||||
.meta {
|
||||
background-color: #ecf0f4;
|
||||
}
|
||||
|
||||
.header {
|
||||
display: flex;
|
||||
background-size: cover;
|
||||
min-height: 8rem;
|
||||
color: #282c37;
|
||||
}
|
||||
.header .header-left,
|
||||
.header .header-right {
|
||||
margin: 0;
|
||||
}
|
||||
.header .header-left {
|
||||
min-width: 8rem;
|
||||
position: relative;
|
||||
text-align: center;
|
||||
background: rgba(255, 255, 255, 0.3);
|
||||
}
|
||||
.header .header-left .avatar {
|
||||
width: 6rem;
|
||||
height: 6rem;
|
||||
position: relative;
|
||||
top: calc(50% - 3rem);
|
||||
}
|
||||
.header .header-right {
|
||||
flex-grow: 1;
|
||||
font-size: 0.9rem;
|
||||
padding: 0.9rem;
|
||||
background: rgba(255, 255, 255, 0.85);
|
||||
}
|
||||
.header .header-title {
|
||||
font-size: 1.3rem;
|
||||
}
|
||||
|
||||
.item {
|
||||
padding: 1rem;
|
||||
border-top: solid 1px #8494ab;
|
||||
}
|
||||
|
||||
.item-content,
|
||||
.cw,
|
||||
.title {
|
||||
font-size: 1.1rem;
|
||||
font-weight: lighter;
|
||||
}
|
||||
|
||||
.item-content *,
|
||||
.cw {
|
||||
margin: 1rem 0;
|
||||
line-height: 1.4rem;
|
||||
}
|
||||
|
||||
.item-title,
|
||||
.date,
|
||||
.author-fullname {
|
||||
color: #90a1ba;
|
||||
font-size: 0.9rem;
|
||||
}
|
||||
|
||||
.date {
|
||||
margin: 1rem 0 0 0;
|
||||
text-decoration: none;
|
||||
display: block;
|
||||
}
|
||||
|
||||
.date:hover {
|
||||
text-decoration: underline;
|
||||
}
|
||||
|
||||
.item-title {
|
||||
margin-bottom: 0.7rem;
|
||||
}
|
||||
|
||||
.author {
|
||||
display: flex;
|
||||
margin-bottom: 1rem;
|
||||
}
|
||||
|
||||
.author-info {
|
||||
margin: 0 1rem;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
justify-content: space-around;
|
||||
}
|
||||
.author-info .author-displayname {
|
||||
font-size: 1.2rem;
|
||||
color: #282c37;
|
||||
text-decoration: none;
|
||||
display: block;
|
||||
font-weight: bolder;
|
||||
}
|
||||
|
||||
.avatar {
|
||||
width: 3rem;
|
||||
height: 3rem;
|
||||
border: none;
|
||||
border-radius: 10%;
|
||||
}
|
||||
.avatar.circular {
|
||||
border-radius: 100%;
|
||||
}
|
||||
|
||||
.enclosures {
|
||||
padding: 0.5em 0;
|
||||
display: flex;
|
||||
flex-wrap: wrap;
|
||||
flex-direction: row;
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
.enclosure {
|
||||
display: flex;
|
||||
flex: 1 1 auto;
|
||||
width: 50%;
|
||||
border: none;
|
||||
max-height: 12rem;
|
||||
}
|
||||
|
||||
a.enclosure {
|
||||
cursor: zoom-in;
|
||||
}
|
||||
|
||||
.enclosure > * {
|
||||
flex: 1 1 auto;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
object-fit: cover;
|
||||
}
|
||||
|
||||
.meta .title {
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
.hidden {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.u-url,
|
||||
.mention {
|
||||
color: #86b300;
|
||||
}
|
||||
|
||||
.button {
|
||||
padding: 0.5rem 1rem;
|
||||
border: none;
|
||||
margin: 1rem;
|
||||
border-radius: 0.5rem;
|
||||
display: inline-block;
|
||||
text-decoration: none;
|
||||
background: #2b90d9;
|
||||
color: #282c37;
|
||||
font-weight: 400;
|
||||
cursor: pointer;
|
||||
text-transform: uppercase;
|
||||
user-select: none;
|
||||
}
|
||||
|
||||
label.button {
|
||||
padding: 0.25rem 0.5rem;
|
||||
margin: 0.4rem;
|
||||
background: #8494ab;
|
||||
color: #ffffff;
|
||||
font-size: 0.8rem;
|
||||
}
|
||||
|
||||
input[type="checkbox"] {
|
||||
position: absolute;
|
||||
left: -9999px;
|
||||
}
|
||||
|
||||
input[type="checkbox"]:checked ~ label::after {
|
||||
content: " Less";
|
||||
}
|
||||
|
||||
input[type="checkbox"]:not(:checked) ~ label::after {
|
||||
content: " More";
|
||||
}
|
||||
|
||||
input[type="checkbox"]:not(:checked) ~ div {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.item-content,
|
||||
.description,
|
||||
.title,
|
||||
html,
|
||||
body {
|
||||
font-weight: normal;
|
||||
}
|
||||
|
||||
@media (prefers-color-scheme: misskey-dark) {
|
||||
html,
|
||||
body {
|
||||
background-color: #232323;
|
||||
font-family: "Roboto", roboto, Arial, sans-serif;
|
||||
color: #dadada;
|
||||
font-weight: lighter;
|
||||
overflow-x: hidden;
|
||||
font-size: 100%;
|
||||
word-break: break-word;
|
||||
}
|
||||
|
||||
* {
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
a,
|
||||
a * {
|
||||
color: rgb(134, 179, 0);
|
||||
}
|
||||
|
||||
a[rel="tag"] {
|
||||
color: rgb(76, 184, 212);
|
||||
}
|
||||
|
||||
.meta {
|
||||
background-color: #39404d;
|
||||
}
|
||||
|
||||
.header {
|
||||
display: flex;
|
||||
background-size: cover;
|
||||
min-height: 8rem;
|
||||
color: rgb(199, 209, 216);
|
||||
}
|
||||
.header .header-left,
|
||||
.header .header-right {
|
||||
margin: 0;
|
||||
}
|
||||
.header .header-left {
|
||||
min-width: 8rem;
|
||||
position: relative;
|
||||
text-align: center;
|
||||
background: rgba(45, 45, 45, 0.3);
|
||||
}
|
||||
.header .header-left .avatar {
|
||||
width: 6rem;
|
||||
height: 6rem;
|
||||
position: relative;
|
||||
top: calc(50% - 3rem);
|
||||
}
|
||||
.header .header-right {
|
||||
flex-grow: 1;
|
||||
font-size: 0.9rem;
|
||||
padding: 0.9rem;
|
||||
background: rgba(45, 45, 45, 0.85);
|
||||
}
|
||||
.header .header-title {
|
||||
font-size: 1.3rem;
|
||||
}
|
||||
|
||||
.item {
|
||||
padding: 1rem;
|
||||
border-top: solid 1px #626d80;
|
||||
}
|
||||
|
||||
.item-content,
|
||||
.cw,
|
||||
.title {
|
||||
font-size: 1.1rem;
|
||||
font-weight: lighter;
|
||||
}
|
||||
|
||||
.item-content *,
|
||||
.cw {
|
||||
margin: 1rem 0;
|
||||
line-height: 1.4rem;
|
||||
}
|
||||
|
||||
.item-title,
|
||||
.date,
|
||||
.author-fullname {
|
||||
color: #9baec8;
|
||||
font-size: 0.9rem;
|
||||
opacity: 0.5;
|
||||
}
|
||||
|
||||
.date {
|
||||
margin: 1rem 0 0 0;
|
||||
text-decoration: none;
|
||||
display: block;
|
||||
}
|
||||
|
||||
.date:hover {
|
||||
text-decoration: underline;
|
||||
}
|
||||
|
||||
.item-title {
|
||||
margin-bottom: 0.7rem;
|
||||
}
|
||||
|
||||
.author {
|
||||
display: flex;
|
||||
margin-bottom: 1rem;
|
||||
}
|
||||
|
||||
.author-info {
|
||||
margin: 0 1rem;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
justify-content: space-around;
|
||||
}
|
||||
.author-info .author-displayname {
|
||||
font-size: 1.2rem;
|
||||
color: #dadada;
|
||||
text-decoration: none;
|
||||
display: block;
|
||||
font-weight: bolder;
|
||||
}
|
||||
|
||||
.avatar {
|
||||
width: 3rem;
|
||||
height: 3rem;
|
||||
border: none;
|
||||
border-radius: 10%;
|
||||
}
|
||||
.avatar.circular {
|
||||
border-radius: 100%;
|
||||
}
|
||||
|
||||
.enclosures {
|
||||
padding: 0.5em 0;
|
||||
display: flex;
|
||||
flex-wrap: wrap;
|
||||
flex-direction: row;
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
.enclosure {
|
||||
display: flex;
|
||||
flex: 1 1 auto;
|
||||
width: 50%;
|
||||
border: none;
|
||||
max-height: 12rem;
|
||||
}
|
||||
|
||||
a.enclosure {
|
||||
cursor: zoom-in;
|
||||
}
|
||||
|
||||
.enclosure > * {
|
||||
flex: 1 1 auto;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
object-fit: cover;
|
||||
}
|
||||
|
||||
.meta .title {
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
.hidden {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.u-url,
|
||||
.mention {
|
||||
color: #86b300;
|
||||
}
|
||||
|
||||
.button {
|
||||
padding: 0.5rem 1rem;
|
||||
border: none;
|
||||
margin: 1rem;
|
||||
border-radius: 0.5rem;
|
||||
display: inline-block;
|
||||
text-decoration: none;
|
||||
background: rgba(255, 255, 255, 0.05);
|
||||
color: rgba(255, 255, 255, 0.1);
|
||||
font-weight: 400;
|
||||
cursor: pointer;
|
||||
text-transform: uppercase;
|
||||
user-select: none;
|
||||
}
|
||||
|
||||
label.button {
|
||||
padding: 0.25rem 0.5rem;
|
||||
margin: 0.4rem;
|
||||
background: #626d80;
|
||||
color: #282c37;
|
||||
font-size: 0.8rem;
|
||||
}
|
||||
|
||||
input[type="checkbox"] {
|
||||
position: absolute;
|
||||
left: -9999px;
|
||||
}
|
||||
|
||||
input[type="checkbox"]:checked ~ label::after {
|
||||
content: " Less";
|
||||
}
|
||||
|
||||
input[type="checkbox"]:not(:checked) ~ label::after {
|
||||
content: " More";
|
||||
}
|
||||
|
||||
input[type="checkbox"]:not(:checked) ~ div {
|
||||
display: none;
|
||||
}
|
||||
}
|
209
public/css/misskey-dark.css
Normal file
209
public/css/misskey-dark.css
Normal file
|
@ -0,0 +1,209 @@
|
|||
html,
|
||||
body {
|
||||
background-color: #232323;
|
||||
font-family: "Roboto", roboto, Arial, sans-serif;
|
||||
color: #dadada;
|
||||
font-weight: lighter;
|
||||
overflow-x: hidden;
|
||||
font-size: 100%;
|
||||
word-break: break-word;
|
||||
}
|
||||
|
||||
* {
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
a,
|
||||
a * {
|
||||
color: rgb(134, 179, 0);
|
||||
}
|
||||
|
||||
a[rel="tag"] {
|
||||
color: rgb(76, 184, 212);
|
||||
}
|
||||
|
||||
.meta {
|
||||
background-color: #39404d;
|
||||
}
|
||||
|
||||
.header {
|
||||
display: flex;
|
||||
background-size: cover;
|
||||
min-height: 8rem;
|
||||
color: rgb(199, 209, 216);
|
||||
}
|
||||
.header .header-left,
|
||||
.header .header-right {
|
||||
margin: 0;
|
||||
}
|
||||
.header .header-left {
|
||||
min-width: 8rem;
|
||||
position: relative;
|
||||
text-align: center;
|
||||
background: rgba(45, 45, 45, 0.3);
|
||||
}
|
||||
.header .header-left .avatar {
|
||||
width: 6rem;
|
||||
height: 6rem;
|
||||
position: relative;
|
||||
top: calc(50% - 3rem);
|
||||
}
|
||||
.header .header-right {
|
||||
flex-grow: 1;
|
||||
font-size: 0.9rem;
|
||||
padding: 0.9rem;
|
||||
background: rgba(45, 45, 45, 0.85);
|
||||
}
|
||||
.header .header-title {
|
||||
font-size: 1.3rem;
|
||||
}
|
||||
|
||||
.item {
|
||||
padding: 1rem;
|
||||
border-top: solid 1px #626d80;
|
||||
}
|
||||
|
||||
.item-content,
|
||||
.cw,
|
||||
.title {
|
||||
font-size: 1.1rem;
|
||||
font-weight: lighter;
|
||||
}
|
||||
|
||||
.item-content *,
|
||||
.cw {
|
||||
margin: 1rem 0;
|
||||
line-height: 1.4rem;
|
||||
}
|
||||
|
||||
.item-title,
|
||||
.date,
|
||||
.author-fullname {
|
||||
color: #9baec8;
|
||||
font-size: 0.9rem;
|
||||
opacity: 0.5;
|
||||
}
|
||||
|
||||
.date {
|
||||
margin: 1rem 0 0 0;
|
||||
text-decoration: none;
|
||||
display: block;
|
||||
}
|
||||
|
||||
.date:hover {
|
||||
text-decoration: underline;
|
||||
}
|
||||
|
||||
.item-title {
|
||||
margin-bottom: 0.7rem;
|
||||
}
|
||||
|
||||
.author {
|
||||
display: flex;
|
||||
margin-bottom: 1rem;
|
||||
}
|
||||
|
||||
.author-info {
|
||||
margin: 0 1rem;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
justify-content: space-around;
|
||||
}
|
||||
.author-info .author-displayname {
|
||||
font-size: 1.2rem;
|
||||
color: #dadada;
|
||||
text-decoration: none;
|
||||
display: block;
|
||||
font-weight: bolder;
|
||||
}
|
||||
|
||||
.avatar {
|
||||
width: 3rem;
|
||||
height: 3rem;
|
||||
border: none;
|
||||
border-radius: 10%;
|
||||
}
|
||||
.avatar.circular {
|
||||
border-radius: 100%;
|
||||
}
|
||||
|
||||
.enclosures {
|
||||
padding: 0.5em 0;
|
||||
display: flex;
|
||||
flex-wrap: wrap;
|
||||
flex-direction: row;
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
.enclosure {
|
||||
display: flex;
|
||||
flex: 1 1 auto;
|
||||
width: 50%;
|
||||
border: none;
|
||||
max-height: 12rem;
|
||||
}
|
||||
|
||||
a.enclosure {
|
||||
cursor: zoom-in;
|
||||
}
|
||||
|
||||
.enclosure > * {
|
||||
flex: 1 1 auto;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
object-fit: cover;
|
||||
}
|
||||
|
||||
.meta .title {
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
.hidden {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.u-url,
|
||||
.mention {
|
||||
color: #86b300;
|
||||
}
|
||||
|
||||
.button {
|
||||
padding: 0.5rem 1rem;
|
||||
border: none;
|
||||
margin: 1rem;
|
||||
border-radius: 0.5rem;
|
||||
display: inline-block;
|
||||
text-decoration: none;
|
||||
background: rgba(255, 255, 255, 0.05);
|
||||
color: rgba(255, 255, 255, 0.1);
|
||||
font-weight: 400;
|
||||
cursor: pointer;
|
||||
text-transform: uppercase;
|
||||
user-select: none;
|
||||
}
|
||||
|
||||
label.button {
|
||||
padding: 0.25rem 0.5rem;
|
||||
margin: 0.4rem;
|
||||
background: #626d80;
|
||||
color: #282c37;
|
||||
font-size: 0.8rem;
|
||||
}
|
||||
|
||||
input[type="checkbox"] {
|
||||
position: absolute;
|
||||
left: -9999px;
|
||||
}
|
||||
|
||||
input[type="checkbox"]:checked ~ label::after {
|
||||
content: " Less";
|
||||
}
|
||||
|
||||
input[type="checkbox"]:not(:checked) ~ label::after {
|
||||
content: " More";
|
||||
}
|
||||
|
||||
input[type="checkbox"]:not(:checked) ~ div {
|
||||
display: none;
|
||||
}
|
216
public/css/misskey-light.css
Normal file
216
public/css/misskey-light.css
Normal file
|
@ -0,0 +1,216 @@
|
|||
html,
|
||||
body {
|
||||
background-color: rgb(249, 249, 249);
|
||||
font-family: "Roboto", roboto, Arial, sans-serif;
|
||||
color: #282c37;
|
||||
font-weight: lighter;
|
||||
overflow-x: hidden;
|
||||
font-size: 100%;
|
||||
word-break: break-word;
|
||||
}
|
||||
|
||||
* {
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
a,
|
||||
a * {
|
||||
color: rgb(68, 164, 193);
|
||||
}
|
||||
|
||||
a[rel="tag"] {
|
||||
color: rgb(255, 145, 86);
|
||||
}
|
||||
|
||||
.meta {
|
||||
background-color: #ecf0f4;
|
||||
}
|
||||
|
||||
.header {
|
||||
display: flex;
|
||||
background-size: cover;
|
||||
min-height: 8rem;
|
||||
color: #282c37;
|
||||
}
|
||||
.header .header-left,
|
||||
.header .header-right {
|
||||
margin: 0;
|
||||
}
|
||||
.header .header-left {
|
||||
min-width: 8rem;
|
||||
position: relative;
|
||||
text-align: center;
|
||||
background: rgba(255, 255, 255, 0.3);
|
||||
}
|
||||
.header .header-left .avatar {
|
||||
width: 6rem;
|
||||
height: 6rem;
|
||||
position: relative;
|
||||
top: calc(50% - 3rem);
|
||||
}
|
||||
.header .header-right {
|
||||
flex-grow: 1;
|
||||
font-size: 0.9rem;
|
||||
padding: 0.9rem;
|
||||
background: rgba(255, 255, 255, 0.85);
|
||||
}
|
||||
.header .header-title {
|
||||
font-size: 1.3rem;
|
||||
}
|
||||
|
||||
.item {
|
||||
padding: 1rem;
|
||||
border-top: solid 1px #8494ab;
|
||||
}
|
||||
|
||||
.item-content,
|
||||
.cw,
|
||||
.title {
|
||||
font-size: 1.1rem;
|
||||
font-weight: lighter;
|
||||
}
|
||||
|
||||
.item-content *,
|
||||
.cw {
|
||||
margin: 1rem 0;
|
||||
line-height: 1.4rem;
|
||||
}
|
||||
|
||||
.item-title,
|
||||
.date,
|
||||
.author-fullname {
|
||||
color: #90a1ba;
|
||||
font-size: 0.9rem;
|
||||
}
|
||||
|
||||
.date {
|
||||
margin: 1rem 0 0 0;
|
||||
text-decoration: none;
|
||||
display: block;
|
||||
}
|
||||
|
||||
.date:hover {
|
||||
text-decoration: underline;
|
||||
}
|
||||
|
||||
.item-title {
|
||||
margin-bottom: 0.7rem;
|
||||
}
|
||||
|
||||
.author {
|
||||
display: flex;
|
||||
margin-bottom: 1rem;
|
||||
}
|
||||
|
||||
.author-info {
|
||||
margin: 0 1rem;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
justify-content: space-around;
|
||||
}
|
||||
.author-info .author-displayname {
|
||||
font-size: 1.2rem;
|
||||
color: #282c37;
|
||||
text-decoration: none;
|
||||
display: block;
|
||||
font-weight: bolder;
|
||||
}
|
||||
|
||||
.avatar {
|
||||
width: 3rem;
|
||||
height: 3rem;
|
||||
border: none;
|
||||
border-radius: 10%;
|
||||
}
|
||||
.avatar.circular {
|
||||
border-radius: 100%;
|
||||
}
|
||||
|
||||
.enclosures {
|
||||
padding: 0.5em 0;
|
||||
display: flex;
|
||||
flex-wrap: wrap;
|
||||
flex-direction: row;
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
.enclosure {
|
||||
display: flex;
|
||||
flex: 1 1 auto;
|
||||
width: 50%;
|
||||
border: none;
|
||||
max-height: 12rem;
|
||||
}
|
||||
|
||||
a.enclosure {
|
||||
cursor: zoom-in;
|
||||
}
|
||||
|
||||
.enclosure > * {
|
||||
flex: 1 1 auto;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
object-fit: cover;
|
||||
}
|
||||
|
||||
.meta .title {
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
.hidden {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.u-url,
|
||||
.mention {
|
||||
color: #86b300;
|
||||
}
|
||||
|
||||
.button {
|
||||
padding: 0.5rem 1rem;
|
||||
border: none;
|
||||
margin: 1rem;
|
||||
border-radius: 0.5rem;
|
||||
display: inline-block;
|
||||
text-decoration: none;
|
||||
background: #2b90d9;
|
||||
color: #282c37;
|
||||
font-weight: 400;
|
||||
cursor: pointer;
|
||||
text-transform: uppercase;
|
||||
user-select: none;
|
||||
}
|
||||
|
||||
label.button {
|
||||
padding: 0.25rem 0.5rem;
|
||||
margin: 0.4rem;
|
||||
background: #8494ab;
|
||||
color: #ffffff;
|
||||
font-size: 0.8rem;
|
||||
}
|
||||
|
||||
input[type="checkbox"] {
|
||||
position: absolute;
|
||||
left: -9999px;
|
||||
}
|
||||
|
||||
input[type="checkbox"]:checked ~ label::after {
|
||||
content: " Less";
|
||||
}
|
||||
|
||||
input[type="checkbox"]:not(:checked) ~ label::after {
|
||||
content: " More";
|
||||
}
|
||||
|
||||
input[type="checkbox"]:not(:checked) ~ div {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.item-content,
|
||||
.description,
|
||||
.title,
|
||||
html,
|
||||
body {
|
||||
font-weight: normal;
|
||||
}
|
199
public/css/pleroma.css
Normal file
199
public/css/pleroma.css
Normal file
|
@ -0,0 +1,199 @@
|
|||
html,
|
||||
body {
|
||||
background-color: rgba(15, 22, 30, 1);
|
||||
font-family: "Roboto", roboto, Arial, sans-serif;
|
||||
color: rgba(185, 185, 186, 1);
|
||||
font-weight: lighter;
|
||||
overflow-x: hidden;
|
||||
font-size: 100%;
|
||||
word-break: break-word;
|
||||
}
|
||||
|
||||
* {
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
a,
|
||||
a * {
|
||||
color: #e2b188;
|
||||
}
|
||||
|
||||
.meta {
|
||||
background-color: #39404d;
|
||||
}
|
||||
|
||||
.header {
|
||||
display: flex;
|
||||
background-size: cover;
|
||||
min-height: 8rem;
|
||||
color: rgba(185, 185, 186, 1);
|
||||
}
|
||||
.header .header-left,
|
||||
.header .header-right {
|
||||
margin: 0;
|
||||
}
|
||||
.header .header-left {
|
||||
min-width: 8rem;
|
||||
position: relative;
|
||||
text-align: center;
|
||||
background: rgba(40, 44, 55, 0.3);
|
||||
}
|
||||
.header .header-left .avatar {
|
||||
width: 6rem;
|
||||
height: 6rem;
|
||||
position: relative;
|
||||
top: calc(50% - 3rem);
|
||||
}
|
||||
.header .header-right {
|
||||
flex-grow: 1;
|
||||
font-size: 0.9rem;
|
||||
padding: 0.9rem;
|
||||
background: rgba(40, 44, 55, 0.85);
|
||||
}
|
||||
.header .header-title {
|
||||
font-size: 1.3rem;
|
||||
}
|
||||
|
||||
.item {
|
||||
padding: 1rem;
|
||||
border-top: solid 1px #626d80;
|
||||
}
|
||||
|
||||
.item-content,
|
||||
.cw,
|
||||
.title {
|
||||
font-size: 1.1rem;
|
||||
font-weight: lighter;
|
||||
}
|
||||
|
||||
.item-content *,
|
||||
.cw {
|
||||
margin: 1rem 0;
|
||||
line-height: 1.4rem;
|
||||
}
|
||||
|
||||
.item-title,
|
||||
.date,
|
||||
.author-fullname {
|
||||
color: rgba(185, 185, 186, 0.5);
|
||||
font-size: 0.9rem;
|
||||
}
|
||||
|
||||
.date {
|
||||
margin: 1rem 0 0 0;
|
||||
text-decoration: none;
|
||||
display: block;
|
||||
}
|
||||
|
||||
.date:hover {
|
||||
text-decoration: underline;
|
||||
}
|
||||
|
||||
.item-title {
|
||||
margin-bottom: 0.7rem;
|
||||
}
|
||||
|
||||
.author {
|
||||
display: flex;
|
||||
margin-bottom: 1rem;
|
||||
}
|
||||
|
||||
.author-info {
|
||||
margin: 0 1rem;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
justify-content: space-around;
|
||||
}
|
||||
.author-info .author-displayname {
|
||||
font-size: 1.2rem;
|
||||
color: rgba(185, 185, 186, 1);
|
||||
text-decoration: none;
|
||||
display: block;
|
||||
font-weight: bolder;
|
||||
}
|
||||
|
||||
.avatar {
|
||||
width: 3rem;
|
||||
height: 3rem;
|
||||
border: none;
|
||||
border-radius: 10%;
|
||||
}
|
||||
.avatar.circular {
|
||||
border-radius: 100%;
|
||||
}
|
||||
|
||||
.enclosures {
|
||||
padding: 0.5em 0;
|
||||
display: flex;
|
||||
flex-wrap: wrap;
|
||||
flex-direction: row;
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
.enclosure {
|
||||
display: flex;
|
||||
flex: 1 1 auto;
|
||||
width: 50%;
|
||||
border: none;
|
||||
max-height: 12rem;
|
||||
}
|
||||
|
||||
a.enclosure {
|
||||
cursor: zoom-in;
|
||||
}
|
||||
|
||||
.enclosure > * {
|
||||
flex: 1 1 auto;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
object-fit: cover;
|
||||
}
|
||||
|
||||
.meta .title {
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
.hidden {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.button {
|
||||
padding: 0.5rem 1rem;
|
||||
border: none;
|
||||
margin: 1rem;
|
||||
border-radius: 0.5rem;
|
||||
display: inline-block;
|
||||
text-decoration: none;
|
||||
background: #2b90d9;
|
||||
color: rgba(185, 185, 186, 1);
|
||||
font-weight: 400;
|
||||
cursor: pointer;
|
||||
text-transform: uppercase;
|
||||
user-select: none;
|
||||
}
|
||||
|
||||
label.button {
|
||||
padding: 0.25rem 0.5rem;
|
||||
margin: 0.4rem;
|
||||
background: #626d80;
|
||||
color: #282c37;
|
||||
font-size: 0.8rem;
|
||||
}
|
||||
|
||||
input[type="checkbox"] {
|
||||
position: absolute;
|
||||
left: -9999px;
|
||||
}
|
||||
|
||||
input[type="checkbox"]:checked ~ label::after {
|
||||
content: " Less";
|
||||
}
|
||||
|
||||
input[type="checkbox"]:not(:checked) ~ label::after {
|
||||
content: " More";
|
||||
}
|
||||
|
||||
input[type="checkbox"]:not(:checked) ~ div {
|
||||
display: none;
|
||||
}
|
206
public/css/stylesheet.css
Normal file
206
public/css/stylesheet.css
Normal file
|
@ -0,0 +1,206 @@
|
|||
/*
|
||||
* Based on .css file from https://joinmastodon.org (by Gargron and latrani)
|
||||
*/
|
||||
|
||||
@import url(https://fonts.googleapis.com/css?family=Quando|Judson|Montserrat:500|Roboto:400,500);
|
||||
a,
|
||||
abbr,
|
||||
acronym,
|
||||
address,
|
||||
applet,
|
||||
article,
|
||||
aside,
|
||||
audio,
|
||||
b,
|
||||
big,
|
||||
blockquote,
|
||||
body,
|
||||
canvas,
|
||||
caption,
|
||||
center,
|
||||
cite,
|
||||
code,
|
||||
dd,
|
||||
del,
|
||||
details,
|
||||
dfn,
|
||||
div,
|
||||
dl,
|
||||
dt,
|
||||
em,
|
||||
embed,
|
||||
fieldset,
|
||||
figcaption,
|
||||
figure,
|
||||
footer,
|
||||
form,
|
||||
h1,
|
||||
h2,
|
||||
h3,
|
||||
h4,
|
||||
h5,
|
||||
h6,
|
||||
header,
|
||||
hgroup,
|
||||
html,
|
||||
i,
|
||||
iframe,
|
||||
img,
|
||||
ins,
|
||||
kbd,
|
||||
label,
|
||||
legend,
|
||||
li,
|
||||
mark,
|
||||
menu,
|
||||
nav,
|
||||
object,
|
||||
ol,
|
||||
output,
|
||||
p,
|
||||
pre,
|
||||
q,
|
||||
ruby,
|
||||
s,
|
||||
samp,
|
||||
section,
|
||||
small,
|
||||
span,
|
||||
strike,
|
||||
strong,
|
||||
sub,
|
||||
summary,
|
||||
sup,
|
||||
table,
|
||||
tbody,
|
||||
td,
|
||||
tfoot,
|
||||
th,
|
||||
thead,
|
||||
time,
|
||||
tr,
|
||||
tt,
|
||||
u,
|
||||
ul,
|
||||
var,
|
||||
video {
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
border: 0;
|
||||
font-size: 100%;
|
||||
font: inherit;
|
||||
vertical-align: baseline;
|
||||
}
|
||||
|
||||
article,
|
||||
aside,
|
||||
details,
|
||||
figcaption,
|
||||
figure,
|
||||
footer,
|
||||
header,
|
||||
hgroup,
|
||||
menu,
|
||||
nav,
|
||||
section {
|
||||
display: block;
|
||||
}
|
||||
|
||||
a {
|
||||
outline: 0;
|
||||
}
|
||||
|
||||
label,
|
||||
h3 {
|
||||
color: #607ea7;
|
||||
margin-bottom: 26px;
|
||||
font-size: 16px;
|
||||
line-height: 24px;
|
||||
}
|
||||
|
||||
body {
|
||||
text-rendering: optimizelegibility;
|
||||
-webkit-font-feature-settings: "kern";
|
||||
font-feature-settings: "kern";
|
||||
-webkit-text-size-adjust: none;
|
||||
-ms-text-size-adjust: none;
|
||||
text-size-adjust: none;
|
||||
box-sizing: border-box;
|
||||
font-family: Roboto, sans-serif;
|
||||
background-color: #000000;
|
||||
color: #5f6b84;
|
||||
font-size: 13px;
|
||||
line-height: 18px;
|
||||
font-weight: 400;
|
||||
margin: 1em;
|
||||
}
|
||||
|
||||
h1 {
|
||||
font-family: Montserrat, sans-serif;
|
||||
font-size: 26px;
|
||||
margin-bottom: 20px;
|
||||
}
|
||||
|
||||
input[type="text"],
|
||||
input[type="number"],
|
||||
select {
|
||||
outline: 0;
|
||||
box-sizing: border-box;
|
||||
border-radius: 4px;
|
||||
display: block;
|
||||
width: 100%;
|
||||
border: none;
|
||||
padding: 10px;
|
||||
padding-right: 30px;
|
||||
font-family: inherit;
|
||||
background: #0e1013;
|
||||
color: #9baec8;
|
||||
font-size: 14px;
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
h4 {
|
||||
font-family: Montserrat, sans-serif;
|
||||
font-size: 16px;
|
||||
line-height: 24px;
|
||||
margin-bottom: 20px;
|
||||
color: #9baec8;
|
||||
}
|
||||
|
||||
img {
|
||||
width: 25px;
|
||||
height: 25px;
|
||||
opacity: 0.5;
|
||||
-webkit-transition: opacity 0.25s linear;
|
||||
transition: opacity 0.25s linear;
|
||||
}
|
||||
|
||||
div {
|
||||
max-width: 800px;
|
||||
margin: 0 auto;
|
||||
}
|
||||
|
||||
.iframe-contain {
|
||||
display: block;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
button,
|
||||
a {
|
||||
display: inline-block;
|
||||
text-align: center;
|
||||
font-size: 16px;
|
||||
text-decoration: none;
|
||||
line-height: 36px;
|
||||
padding: 4px 16px;
|
||||
background: transparent;
|
||||
border: 1px solid #9baec8;
|
||||
border-radius: 4px;
|
||||
padding: 3px 15px;
|
||||
color: #9baec8;
|
||||
cursor: pointer;
|
||||
}
|
||||
button:hover,
|
||||
a:hover {
|
||||
background-color: #394150;
|
||||
}
|
1
public/img/gitea-logo.svg
Normal file
1
public/img/gitea-logo.svg
Normal file
|
@ -0,0 +1 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 640 640" style="enable-background:new 0 0 640 640" xml:space="preserve" width="32" height="32"><path style="fill:#fff" d="m395.9 484.2-126.9-61c-12.5-6-17.9-21.2-11.8-33.8l61-126.9c6-12.5 21.2-17.9 33.8-11.8 17.2 8.3 27.1 13 27.1 13l-.1-109.2 16.7-.1.1 117.1s57.4 24.2 83.1 40.1c3.7 2.3 10.2 6.8 12.9 14.4 2.1 6.1 2 13.1-1 19.3l-61 126.9c-6.2 12.7-21.4 18.1-33.9 12z"/><path style="fill:#609926" d="M622.7 149.8c-4.1-4.1-9.6-4-9.6-4s-117.2 6.6-177.9 8c-13.3.3-26.5.6-39.6.7v117.2c-5.5-2.6-11.1-5.3-16.6-7.9 0-36.4-.1-109.2-.1-109.2-29 .4-89.2-2.2-89.2-2.2s-141.4-7.1-156.8-8.5c-9.8-.6-22.5-2.1-39 1.5-8.7 1.8-33.5 7.4-53.8 26.9C-4.9 212.4 6.6 276.2 8 285.8c1.7 11.7 6.9 44.2 31.7 72.5 45.8 56.1 144.4 54.8 144.4 54.8s12.1 28.9 30.6 55.5c25 33.1 50.7 58.9 75.7 62 63 0 188.9-.1 188.9-.1s12 .1 28.3-10.3c14-8.5 26.5-23.4 26.5-23.4S547 483 565 451.5c5.5-9.7 10.1-19.1 14.1-28 0 0 55.2-117.1 55.2-231.1-1.1-34.5-9.6-40.6-11.6-42.6zM125.6 353.9c-25.9-8.5-36.9-18.7-36.9-18.7S69.6 321.8 60 295.4c-16.5-44.2-1.4-71.2-1.4-71.2s8.4-22.5 38.5-30c13.8-3.7 31-3.1 31-3.1s7.1 59.4 15.7 94.2c7.2 29.2 24.8 77.7 24.8 77.7s-26.1-3.1-43-9.1zm300.3 107.6s-6.1 14.5-19.6 15.4c-5.8.4-10.3-1.2-10.3-1.2s-.3-.1-5.3-2.1l-112.9-55s-10.9-5.7-12.8-15.6c-2.2-8.1 2.7-18.1 2.7-18.1L322 273s4.8-9.7 12.2-13c.6-.3 2.3-1 4.5-1.5 8.1-2.1 18 2.8 18 2.8L467.4 315s12.6 5.7 15.3 16.2c1.9 7.4-.5 14-1.8 17.2-6.3 15.4-55 113.1-55 113.1z"/><path style="fill:#609926" d="M326.8 380.1c-8.2.1-15.4 5.8-17.3 13.8-1.9 8 2 16.3 9.1 20 7.7 4 17.5 1.8 22.7-5.4 5.1-7.1 4.3-16.9-1.8-23.1l24-49.1c1.5.1 3.7.2 6.2-.5 4.1-.9 7.1-3.6 7.1-3.6 4.2 1.8 8.6 3.8 13.2 6.1 4.8 2.4 9.3 4.9 13.4 7.3.9.5 1.8 1.1 2.8 1.9 1.6 1.3 3.4 3.1 4.7 5.5 1.9 5.5-1.9 14.9-1.9 14.9-2.3 7.6-18.4 40.6-18.4 40.6-8.1-.2-15.3 5-17.7 12.5-2.6 8.1 1.1 17.3 8.9 21.3 7.8 4 17.4 1.7 22.5-5.3 5-6.8 4.6-16.3-1.1-22.6 1.9-3.7 3.7-7.4 5.6-11.3 5-10.4 13.5-30.4 13.5-30.4.9-1.7 5.7-10.3 2.7-21.3-2.5-11.4-12.6-16.7-12.6-16.7-12.2-7.9-29.2-15.2-29.2-15.2s0-4.1-1.1-7.1c-1.1-3.1-2.8-5.1-3.9-6.3 4.7-9.7 9.4-19.3 14.1-29-4.1-2-8.1-4-12.2-6.1-4.8 9.8-9.7 19.7-14.5 29.5-6.7-.1-12.9 3.5-16.1 9.4-3.4 6.3-2.7 14.1 1.9 19.8l-24.6 50.4z"/></svg>
|
After Width: | Height: | Size: 2.2 KiB |
Before Width: | Height: | Size: 1.5 KiB After Width: | Height: | Size: 1.5 KiB |
128
public/index.html
Normal file
128
public/index.html
Normal file
|
@ -0,0 +1,128 @@
|
|||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
<meta name="viewport" content="initial-scale=1" />
|
||||
<title>Fedifeed - embeddable ActivityPub feeds</title>
|
||||
<link rel="stylesheet" href="./css/stylesheet.css" />
|
||||
<script src="./js/script.js" defer></script>
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<br />
|
||||
<div>
|
||||
<h1>Fedifeed</h1>
|
||||
<h4>Embedded ActivityPub feeds for blogs, websites, etc.</h4>
|
||||
<a href="https://git.froth.zone/sam/fedifeed" class="cta button alt"
|
||||
>Fork on Gitea
|
||||
<img class="link-logo after" src="img/gitea-logo.svg" alt="Gitea Logo"
|
||||
/></a>
|
||||
<br />
|
||||
<br />
|
||||
<hr />
|
||||
<br />
|
||||
<form action="javascript:genUrl()">
|
||||
<label
|
||||
>Instance URL:<input
|
||||
required
|
||||
type="text"
|
||||
id="urlin"
|
||||
placeholder="froth.zone"
|
||||
oninvalid="this.setCustomValidity('Insert your instance URL. Example: mastodon.social')"
|
||||
oninput="this.setCustomValidity('')"
|
||||
/></label>
|
||||
<br />
|
||||
<label
|
||||
>Username:<input
|
||||
required
|
||||
type="text"
|
||||
id="usernamein"
|
||||
placeholder="sam"
|
||||
oninvalid="this.setCustomValidity('Insert your username. Example: gargron')"
|
||||
oninput="this.setCustomValidity('')"
|
||||
/></label>
|
||||
<br />
|
||||
<label
|
||||
>Width (px):<input
|
||||
required
|
||||
type="number"
|
||||
id="width"
|
||||
value="400"
|
||||
oninvalid="this.setCustomValidity('Insert width of generated feed. Default: 400')"
|
||||
oninput="this.setCustomValidity('')"
|
||||
/></label>
|
||||
<br />
|
||||
<label
|
||||
>Height (px):<input
|
||||
required
|
||||
type="number"
|
||||
id="height"
|
||||
value="800"
|
||||
oninvalid="this.setCustomValidity('Insert height of generated feed. Default: 800')"
|
||||
oninput="this.setCustomValidity('')"
|
||||
/></label>
|
||||
<br />
|
||||
<label
|
||||
>UI Scale (percent):<input
|
||||
required
|
||||
type="number"
|
||||
id="size"
|
||||
value="100"
|
||||
oninvalid="this.setCustomValidity('Insert UI scale. Default: 100')"
|
||||
oninput="this.setCustomValidity('')"
|
||||
/></label>
|
||||
<br />
|
||||
<label
|
||||
>Theme:
|
||||
<select id="theme">
|
||||
<option value="auto-auto">auto-auto (depends on instance, automatic)</option>
|
||||
<option value="auto-dark">auto-dark (depends on instance, use dark)</option>
|
||||
<option value="auto-light">auto-light (depends on instance, use light)</option>
|
||||
<option value="masto-dark">masto-dark</option>
|
||||
<option value="masto-light">masto-light</option>
|
||||
<option value="masto-auto">
|
||||
masto-auto (based on css prefers-color-scheme)
|
||||
</option>
|
||||
<option value="misskey-dark">misskey-dark</option>
|
||||
<option value="misskey-light">misskey-light</option>
|
||||
<option value="misskey-auto">
|
||||
misskey-auto (based on css prefers-color-scheme)
|
||||
</option>
|
||||
<option value="pleroma">pleroma</option>
|
||||
</select>
|
||||
</label>
|
||||
<br />
|
||||
<label
|
||||
>Show Header?<input id="header" type="checkbox" checked="checked"
|
||||
/></label>
|
||||
<br />
|
||||
<label>Hide replies?<input type="checkbox" id="hidereplies" /></label>
|
||||
<br />
|
||||
<label>Hide boosts?<input type="checkbox" id="hideboosts" /></label>
|
||||
<br />
|
||||
<br />
|
||||
<button value="generate">Generate</button>
|
||||
</form>
|
||||
<br /><br />
|
||||
<label
|
||||
>Use this markup in your HTML: <br /><textarea
|
||||
id="result"
|
||||
placeholder="result will go here"
|
||||
></textarea>
|
||||
</label>
|
||||
<br /><br />
|
||||
<h3>Live Preview:</h3>
|
||||
<span class="iframe-contain">
|
||||
<iframe
|
||||
id="frame"
|
||||
allowfullscreen
|
||||
sandbox="allow-top-navigation allow-scripts"
|
||||
width="400"
|
||||
height="800"
|
||||
src="/api/v1/feed?user=sam&instance=https%3A%2F%2Ffroth.zone&instance_type=&theme=pleroma&size=100&header=true&replies=true&boosts=true"
|
||||
></iframe>
|
||||
</span>
|
||||
<br />
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
41
public/js/script.js
Normal file
41
public/js/script.js
Normal file
|
@ -0,0 +1,41 @@
|
|||
window.genUrl = function genUrl() {
|
||||
function val(id) {
|
||||
return document.getElementById(id).value;
|
||||
}
|
||||
|
||||
let user = val("usernamein");
|
||||
let instance = "https://" + val("urlin");
|
||||
|
||||
let showBoosts = (!document.getElementById("hideboosts").checked).toString();
|
||||
let showReplies = (!document.getElementById("hidereplies")
|
||||
.checked).toString();
|
||||
let showHeader = document.getElementById("header").checked.toString();
|
||||
let portStr =
|
||||
window.location.port && window.location.port != 80
|
||||
? ":" + window.location.port
|
||||
: "";
|
||||
|
||||
// Generate the URL for the iframe
|
||||
// Prettier, WHY
|
||||
let iframeUrl = `${window.location.protocol}//${
|
||||
window.location.hostname
|
||||
}${portStr}/api/v1/feed?user=${encodeURIComponent(
|
||||
user
|
||||
)}&instance=${encodeURIComponent(instance)}&instance_type=&theme=${val(
|
||||
"theme"
|
||||
)}&size=${val(
|
||||
"size"
|
||||
)}&header=${showHeader}&replies=${showReplies}&boosts=${showBoosts}`;
|
||||
|
||||
// Prettier, WHY
|
||||
document.getElementById(
|
||||
"result"
|
||||
).value = `<iframe allowfullscreen sandbox="allow-top-navigation allow-scripts" width="${val(
|
||||
"width"
|
||||
)}" height="${val("height")}" src="${iframeUrl}"></iframe>`;
|
||||
|
||||
let iframe = document.getElementById("frame");
|
||||
iframe.src = iframeUrl;
|
||||
iframe.width = val("width");
|
||||
iframe.height = val("height");
|
||||
};
|
17
public/lib/infinite-scroll.pkgd.min.js
vendored
Normal file
17
public/lib/infinite-scroll.pkgd.min.js
vendored
Normal file
File diff suppressed because one or more lines are too long
|
@ -1,6 +1,4 @@
|
|||
{
|
||||
"$schema": "https://docs.renovatebot.com/renovate-schema.json",
|
||||
"extends": [
|
||||
"config:base"
|
||||
]
|
||||
"extends": ["config:base"]
|
||||
}
|
||||
|
|
|
@ -1,22 +0,0 @@
|
|||
// build the styles
|
||||
import { readFileSync, writeFileSync } from "fs";
|
||||
import { renderSync } from "node-sass";
|
||||
|
||||
let staticDir = "./src/public/";
|
||||
let srcDir = "./src/stylesrc/";
|
||||
let themes = ["masto-light","masto-dark","masto-auto"];
|
||||
|
||||
|
||||
themes.forEach(function(s){
|
||||
let sassFile = srcDir+s+".scss";
|
||||
let cssFile = staticDir+s+".css";
|
||||
let result = renderSync({
|
||||
data: readFileSync(sassFile,"utf8"),
|
||||
includePaths:[srcDir]
|
||||
});
|
||||
|
||||
writeFileSync(cssFile,result.css,"utf8");
|
||||
|
||||
});
|
||||
|
||||
console.log("ok");
|
130
src/index.js
130
src/index.js
|
@ -1,130 +0,0 @@
|
|||
import Express from "express";
|
||||
// v2 api
|
||||
import convertv2 from "../lib/convert.js";
|
||||
import serveStatic from "serve-static";
|
||||
import cors from "cors";
|
||||
import errorPage from "../lib/errorPage.js";
|
||||
import morgan from "morgan";
|
||||
import { detector } from "megalodon";
|
||||
|
||||
const app = Express();
|
||||
|
||||
const logger = morgan(":method :url :status via :referrer - :response-time ms");
|
||||
|
||||
app.use(
|
||||
serveStatic("src/public", {
|
||||
maxAge: "1d",
|
||||
}),
|
||||
);
|
||||
|
||||
function doCache(res, durationSecs) {
|
||||
res.set({
|
||||
"Cache-Control": "max-age=" + durationSecs,
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
// this just redirects to the
|
||||
app.options("/api/feed", cors());
|
||||
app.get("/api/feed", cors(), logger, function (req, res) {
|
||||
// get feed url
|
||||
const feedUrl = req.query.url;
|
||||
if (!feedUrl) {
|
||||
res.status(400);
|
||||
res.send(errorPage(400, "You need to specify a feed URL"));
|
||||
return;
|
||||
}
|
||||
|
||||
const userUrl = feedUrl.replace(/\.atom.*/i, "");
|
||||
|
||||
const redirectUrl = "/api/v1/feed?";
|
||||
const qs = [ "userurl=" + encodeURIComponent(userUrl), "api=v1" ];
|
||||
|
||||
([ "size", "theme", "boosts", "replies" ]).forEach((key) => {
|
||||
if (typeof req.query[ key ] != "undefined") {
|
||||
qs.push(key + "=" + encodeURIComponent(req.query[ key ]));
|
||||
}
|
||||
});
|
||||
|
||||
res.redirect(redirectUrl + qs.join("&"));
|
||||
});
|
||||
|
||||
app.options("/api/v1/feed", cors());
|
||||
// http://localhost:8000/api/v1/feed?userurl=https%3A%2F%2Foctodon.social%2Fusers%2Ffenwick67
|
||||
app.get("/api/v1/feed", cors(), logger, async function (req, res) {
|
||||
// get feed url
|
||||
// userUrl
|
||||
let type = req.query.instance_type;
|
||||
let userUrl = req.query.userurl;
|
||||
if (userUrl === "" || userUrl === undefined) {
|
||||
const user = req.query.user;
|
||||
const instance = req.query.instance;
|
||||
if (type === "" || type === undefined) {
|
||||
type = await detector(instance).catch(() =>
|
||||
"",
|
||||
);
|
||||
}
|
||||
if (type === "mastodon" || type === "pleroma")
|
||||
userUrl = instance + "/users/" + user;
|
||||
else if (type === "misskey")
|
||||
userUrl = instance + "/@" + user;
|
||||
else {
|
||||
res.status(400);
|
||||
res.send(errorPage(400, "You need to specify a user URL"));
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
const feedUrl = req.query.feedurl;
|
||||
|
||||
const opts = {};
|
||||
if (req.query.size) {
|
||||
opts.size = req.query.size;
|
||||
}
|
||||
if (req.query.theme) {
|
||||
opts.theme = req.query.theme;
|
||||
}
|
||||
if (req.query.header) {
|
||||
if (req.query.header.toLowerCase() == "no" || req.query.header.toLowerCase() == "false") {
|
||||
opts.header = false;
|
||||
} else {
|
||||
opts.header = true;
|
||||
}
|
||||
}
|
||||
opts.instance_type = type;
|
||||
opts.boosts = true;
|
||||
if (req.query.boosts) {
|
||||
if (req.query.boosts.toLowerCase() == "no" || req.query.boosts.toLowerCase() == "false") {
|
||||
opts.boosts = false;
|
||||
} else {
|
||||
opts.boosts = true;
|
||||
}
|
||||
}
|
||||
|
||||
opts.replies = true;
|
||||
if (req.query.replies) {
|
||||
if (req.query.replies.toLowerCase() == "no" || req.query.replies.toLowerCase() == "false") {
|
||||
opts.replies = false;
|
||||
} else {
|
||||
opts.replies = true;
|
||||
}
|
||||
}
|
||||
opts.userUrl = userUrl;
|
||||
opts.feedUrl = feedUrl;
|
||||
opts.mastofeedUrl = req.url;
|
||||
|
||||
convertv2(opts).then((data) => {
|
||||
res.status(200);
|
||||
doCache(res, 60 * 60);
|
||||
res.send(data);
|
||||
}).catch((er) => {
|
||||
res.status(500);
|
||||
res.send(errorPage(500, null, { theme: opts.theme, size: opts.size }));
|
||||
// TODO log the error
|
||||
console.error(er, er.stack);
|
||||
});
|
||||
});
|
||||
|
||||
app.listen(process.env.PORT || 8000, "127.0.0.1", function () {
|
||||
console.log("Server started, listening on " + (process.env.PORT || 8000));
|
||||
});
|
|
@ -1,309 +0,0 @@
|
|||
html,
|
||||
body {
|
||||
background-color: #ffffff;
|
||||
font-family: 'Roboto', roboto, Arial, sans-serif;
|
||||
color: #282c37;
|
||||
font-weight: lighter;
|
||||
overflow-x: hidden;
|
||||
font-size: 100%;
|
||||
word-break: break-word; }
|
||||
|
||||
* {
|
||||
margin: 0;
|
||||
padding: 0; }
|
||||
|
||||
a,
|
||||
a * {
|
||||
color: #2b90d9; }
|
||||
|
||||
.meta {
|
||||
background-color: #ecf0f4; }
|
||||
|
||||
.header {
|
||||
display: flex;
|
||||
background-size: cover;
|
||||
min-height: 8rem;
|
||||
color: #282c37; }
|
||||
.header .header-left, .header .header-right {
|
||||
margin: 0; }
|
||||
.header .header-left {
|
||||
min-width: 8rem;
|
||||
position: relative;
|
||||
text-align: center;
|
||||
background: rgba(255, 255, 255, 0.3); }
|
||||
.header .header-left .avatar {
|
||||
width: 6rem;
|
||||
height: 6rem;
|
||||
position: relative;
|
||||
top: calc(50% - 3rem); }
|
||||
.header .header-right {
|
||||
flex-grow: 1;
|
||||
font-size: 0.9rem;
|
||||
padding: 0.9rem;
|
||||
background: rgba(255, 255, 255, 0.85); }
|
||||
.header .header-title {
|
||||
font-size: 1.3rem; }
|
||||
|
||||
.item {
|
||||
padding: 1rem;
|
||||
border-top: solid 1px #8494ab; }
|
||||
|
||||
.item-content,
|
||||
.cw,
|
||||
.title {
|
||||
font-size: 1.1rem;
|
||||
font-weight: lighter; }
|
||||
|
||||
.item-content *, .cw {
|
||||
margin: 1rem 0;
|
||||
line-height: 1.4rem; }
|
||||
|
||||
.item-title,
|
||||
.date,
|
||||
.author-fullname {
|
||||
color: #90a1ba;
|
||||
font-size: 0.9rem; }
|
||||
|
||||
.date {
|
||||
margin: 1rem 0 0 0;
|
||||
text-decoration: none;
|
||||
display: block; }
|
||||
|
||||
.date:hover {
|
||||
text-decoration: underline; }
|
||||
|
||||
.item-title {
|
||||
margin-bottom: 0.7rem; }
|
||||
|
||||
.author {
|
||||
display: flex;
|
||||
margin-bottom: 1rem; }
|
||||
|
||||
.author-info {
|
||||
margin: 0 1rem;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
justify-content: space-around; }
|
||||
.author-info .author-displayname {
|
||||
font-size: 1.2rem;
|
||||
color: #282c37;
|
||||
text-decoration: none;
|
||||
display: block;
|
||||
font-weight: bolder; }
|
||||
|
||||
.avatar {
|
||||
width: 3rem;
|
||||
height: 3rem;
|
||||
border: none;
|
||||
border-radius: 10%; }
|
||||
.avatar.circular {
|
||||
border-radius: 100%; }
|
||||
|
||||
.enclosures {
|
||||
padding: 0.5em 0;
|
||||
display: flex;
|
||||
flex-wrap: wrap;
|
||||
flex-direction: row;
|
||||
overflow: hidden; }
|
||||
|
||||
.enclosure {
|
||||
display: flex;
|
||||
flex: 1 1 auto;
|
||||
width: 50%;
|
||||
border: none;
|
||||
max-height: 12rem; }
|
||||
|
||||
a.enclosure {
|
||||
cursor: zoom-in; }
|
||||
|
||||
.enclosure > * {
|
||||
flex: 1 1 auto;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
object-fit: cover; }
|
||||
|
||||
.meta .title {
|
||||
font-weight: bold; }
|
||||
|
||||
.hidden {
|
||||
display: none; }
|
||||
|
||||
.button {
|
||||
padding: 0.5rem 1rem;
|
||||
border: none;
|
||||
margin: 1rem;
|
||||
border-radius: 0.5rem;
|
||||
display: inline-block;
|
||||
text-decoration: none;
|
||||
background: #2b90d9;
|
||||
color: #282c37;
|
||||
font-weight: 400;
|
||||
cursor: pointer;
|
||||
text-transform: uppercase;
|
||||
user-select: none; }
|
||||
|
||||
label.button {
|
||||
padding: 0.25rem 0.5rem;
|
||||
margin: 0.4rem;
|
||||
background: #8494ab;
|
||||
color: #ffffff;
|
||||
font-size: 0.8rem; }
|
||||
|
||||
input[type=checkbox] {
|
||||
position: absolute;
|
||||
left: -9999px; }
|
||||
|
||||
input[type=checkbox]:checked ~ label::after {
|
||||
content: " Less"; }
|
||||
|
||||
input[type=checkbox]:not(:checked) ~ label::after {
|
||||
content: " More"; }
|
||||
|
||||
input[type=checkbox]:not(:checked) ~ div {
|
||||
display: none; }
|
||||
|
||||
.item-content,
|
||||
.description,
|
||||
.title,
|
||||
html,
|
||||
body {
|
||||
font-weight: normal; }
|
||||
|
||||
@media (prefers-color-scheme: masto-dark) {
|
||||
html,
|
||||
body {
|
||||
background-color: #282c37;
|
||||
font-family: 'Roboto', roboto, Arial, sans-serif;
|
||||
color: #ffffff;
|
||||
font-weight: lighter;
|
||||
overflow-x: hidden;
|
||||
font-size: 100%;
|
||||
word-break: break-word; }
|
||||
* {
|
||||
margin: 0;
|
||||
padding: 0; }
|
||||
a,
|
||||
a * {
|
||||
color: #2b90d9; }
|
||||
.meta {
|
||||
background-color: #39404d; }
|
||||
.header {
|
||||
display: flex;
|
||||
background-size: cover;
|
||||
min-height: 8rem;
|
||||
color: #ffffff; }
|
||||
.header .header-left, .header .header-right {
|
||||
margin: 0; }
|
||||
.header .header-left {
|
||||
min-width: 8rem;
|
||||
position: relative;
|
||||
text-align: center;
|
||||
background: rgba(40, 44, 55, 0.3); }
|
||||
.header .header-left .avatar {
|
||||
width: 6rem;
|
||||
height: 6rem;
|
||||
position: relative;
|
||||
top: calc(50% - 3rem); }
|
||||
.header .header-right {
|
||||
flex-grow: 1;
|
||||
font-size: 0.9rem;
|
||||
padding: 0.9rem;
|
||||
background: rgba(40, 44, 55, 0.85); }
|
||||
.header .header-title {
|
||||
font-size: 1.3rem; }
|
||||
.item {
|
||||
padding: 1rem;
|
||||
border-top: solid 1px #626d80; }
|
||||
.item-content,
|
||||
.cw,
|
||||
.title {
|
||||
font-size: 1.1rem;
|
||||
font-weight: lighter; }
|
||||
.item-content *, .cw {
|
||||
margin: 1rem 0;
|
||||
line-height: 1.4rem; }
|
||||
.item-title,
|
||||
.date,
|
||||
.author-fullname {
|
||||
color: #9baec8;
|
||||
font-size: 0.9rem; }
|
||||
.date {
|
||||
margin: 1rem 0 0 0;
|
||||
text-decoration: none;
|
||||
display: block; }
|
||||
.date:hover {
|
||||
text-decoration: underline; }
|
||||
.item-title {
|
||||
margin-bottom: 0.7rem; }
|
||||
.author {
|
||||
display: flex;
|
||||
margin-bottom: 1rem; }
|
||||
.author-info {
|
||||
margin: 0 1rem;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
justify-content: space-around; }
|
||||
.author-info .author-displayname {
|
||||
font-size: 1.2rem;
|
||||
color: #ffffff;
|
||||
text-decoration: none;
|
||||
display: block;
|
||||
font-weight: bolder; }
|
||||
.avatar {
|
||||
width: 3rem;
|
||||
height: 3rem;
|
||||
border: none;
|
||||
border-radius: 10%; }
|
||||
.avatar.circular {
|
||||
border-radius: 100%; }
|
||||
.enclosures {
|
||||
padding: 0.5em 0;
|
||||
display: flex;
|
||||
flex-wrap: wrap;
|
||||
flex-direction: row;
|
||||
overflow: hidden; }
|
||||
.enclosure {
|
||||
display: flex;
|
||||
flex: 1 1 auto;
|
||||
width: 50%;
|
||||
border: none;
|
||||
max-height: 12rem; }
|
||||
a.enclosure {
|
||||
cursor: zoom-in; }
|
||||
.enclosure > * {
|
||||
flex: 1 1 auto;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
object-fit: cover; }
|
||||
.meta .title {
|
||||
font-weight: bold; }
|
||||
.hidden {
|
||||
display: none; }
|
||||
.button {
|
||||
padding: 0.5rem 1rem;
|
||||
border: none;
|
||||
margin: 1rem;
|
||||
border-radius: 0.5rem;
|
||||
display: inline-block;
|
||||
text-decoration: none;
|
||||
background: #2b90d9;
|
||||
color: #ffffff;
|
||||
font-weight: 400;
|
||||
cursor: pointer;
|
||||
text-transform: uppercase;
|
||||
user-select: none; }
|
||||
label.button {
|
||||
padding: 0.25rem 0.5rem;
|
||||
margin: 0.4rem;
|
||||
background: #626d80;
|
||||
color: #282c37;
|
||||
font-size: 0.8rem; }
|
||||
input[type=checkbox] {
|
||||
position: absolute;
|
||||
left: -9999px; }
|
||||
input[type=checkbox]:checked ~ label::after {
|
||||
content: " Less"; }
|
||||
input[type=checkbox]:not(:checked) ~ label::after {
|
||||
content: " More"; }
|
||||
input[type=checkbox]:not(:checked) ~ div {
|
||||
display: none; } }
|
|
@ -1,163 +0,0 @@
|
|||
html,
|
||||
body {
|
||||
background-color: #282c37;
|
||||
font-family: 'Roboto', roboto, Arial, sans-serif;
|
||||
color: #ffffff;
|
||||
font-weight: lighter;
|
||||
overflow-x: hidden;
|
||||
font-size: 100%;
|
||||
word-break: break-word; }
|
||||
|
||||
* {
|
||||
margin: 0;
|
||||
padding: 0; }
|
||||
|
||||
a,
|
||||
a * {
|
||||
color: #2b90d9; }
|
||||
|
||||
.meta {
|
||||
background-color: #39404d; }
|
||||
|
||||
.header {
|
||||
display: flex;
|
||||
background-size: cover;
|
||||
min-height: 8rem;
|
||||
color: #ffffff; }
|
||||
.header .header-left, .header .header-right {
|
||||
margin: 0; }
|
||||
.header .header-left {
|
||||
min-width: 8rem;
|
||||
position: relative;
|
||||
text-align: center;
|
||||
background: rgba(40, 44, 55, 0.3); }
|
||||
.header .header-left .avatar {
|
||||
width: 6rem;
|
||||
height: 6rem;
|
||||
position: relative;
|
||||
top: calc(50% - 3rem); }
|
||||
.header .header-right {
|
||||
flex-grow: 1;
|
||||
font-size: 0.9rem;
|
||||
padding: 0.9rem;
|
||||
background: rgba(40, 44, 55, 0.85); }
|
||||
.header .header-title {
|
||||
font-size: 1.3rem; }
|
||||
|
||||
.item {
|
||||
padding: 1rem;
|
||||
border-top: solid 1px #626d80; }
|
||||
|
||||
.item-content,
|
||||
.cw,
|
||||
.title {
|
||||
font-size: 1.1rem;
|
||||
font-weight: lighter; }
|
||||
|
||||
.item-content *, .cw {
|
||||
margin: 1rem 0;
|
||||
line-height: 1.4rem; }
|
||||
|
||||
.item-title,
|
||||
.date,
|
||||
.author-fullname {
|
||||
color: #9baec8;
|
||||
font-size: 0.9rem; }
|
||||
|
||||
.date {
|
||||
margin: 1rem 0 0 0;
|
||||
text-decoration: none;
|
||||
display: block; }
|
||||
|
||||
.date:hover {
|
||||
text-decoration: underline; }
|
||||
|
||||
.item-title {
|
||||
margin-bottom: 0.7rem; }
|
||||
|
||||
.author {
|
||||
display: flex;
|
||||
margin-bottom: 1rem; }
|
||||
|
||||
.author-info {
|
||||
margin: 0 1rem;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
justify-content: space-around; }
|
||||
.author-info .author-displayname {
|
||||
font-size: 1.2rem;
|
||||
color: #ffffff;
|
||||
text-decoration: none;
|
||||
display: block;
|
||||
font-weight: bolder; }
|
||||
|
||||
.avatar {
|
||||
width: 3rem;
|
||||
height: 3rem;
|
||||
border: none;
|
||||
border-radius: 10%; }
|
||||
.avatar.circular {
|
||||
border-radius: 100%; }
|
||||
|
||||
.enclosures {
|
||||
padding: 0.5em 0;
|
||||
display: flex;
|
||||
flex-wrap: wrap;
|
||||
flex-direction: row;
|
||||
overflow: hidden; }
|
||||
|
||||
.enclosure {
|
||||
display: flex;
|
||||
flex: 1 1 auto;
|
||||
width: 50%;
|
||||
border: none;
|
||||
max-height: 12rem; }
|
||||
|
||||
a.enclosure {
|
||||
cursor: zoom-in; }
|
||||
|
||||
.enclosure > * {
|
||||
flex: 1 1 auto;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
object-fit: cover; }
|
||||
|
||||
.meta .title {
|
||||
font-weight: bold; }
|
||||
|
||||
.hidden {
|
||||
display: none; }
|
||||
|
||||
.button {
|
||||
padding: 0.5rem 1rem;
|
||||
border: none;
|
||||
margin: 1rem;
|
||||
border-radius: 0.5rem;
|
||||
display: inline-block;
|
||||
text-decoration: none;
|
||||
background: #2b90d9;
|
||||
color: #ffffff;
|
||||
font-weight: 400;
|
||||
cursor: pointer;
|
||||
text-transform: uppercase;
|
||||
user-select: none; }
|
||||
|
||||
label.button {
|
||||
padding: 0.25rem 0.5rem;
|
||||
margin: 0.4rem;
|
||||
background: #626d80;
|
||||
color: #282c37;
|
||||
font-size: 0.8rem; }
|
||||
|
||||
input[type=checkbox] {
|
||||
position: absolute;
|
||||
left: -9999px; }
|
||||
|
||||
input[type=checkbox]:checked ~ label::after {
|
||||
content: " Less"; }
|
||||
|
||||
input[type=checkbox]:not(:checked) ~ label::after {
|
||||
content: " More"; }
|
||||
|
||||
input[type=checkbox]:not(:checked) ~ div {
|
||||
display: none; }
|
|
@ -1,170 +0,0 @@
|
|||
html,
|
||||
body {
|
||||
background-color: #ffffff;
|
||||
font-family: 'Roboto', roboto, Arial, sans-serif;
|
||||
color: #282c37;
|
||||
font-weight: lighter;
|
||||
overflow-x: hidden;
|
||||
font-size: 100%;
|
||||
word-break: break-word; }
|
||||
|
||||
* {
|
||||
margin: 0;
|
||||
padding: 0; }
|
||||
|
||||
a,
|
||||
a * {
|
||||
color: #2b90d9; }
|
||||
|
||||
.meta {
|
||||
background-color: #ecf0f4; }
|
||||
|
||||
.header {
|
||||
display: flex;
|
||||
background-size: cover;
|
||||
min-height: 8rem;
|
||||
color: #282c37; }
|
||||
.header .header-left, .header .header-right {
|
||||
margin: 0; }
|
||||
.header .header-left {
|
||||
min-width: 8rem;
|
||||
position: relative;
|
||||
text-align: center;
|
||||
background: rgba(255, 255, 255, 0.3); }
|
||||
.header .header-left .avatar {
|
||||
width: 6rem;
|
||||
height: 6rem;
|
||||
position: relative;
|
||||
top: calc(50% - 3rem); }
|
||||
.header .header-right {
|
||||
flex-grow: 1;
|
||||
font-size: 0.9rem;
|
||||
padding: 0.9rem;
|
||||
background: rgba(255, 255, 255, 0.85); }
|
||||
.header .header-title {
|
||||
font-size: 1.3rem; }
|
||||
|
||||
.item {
|
||||
padding: 1rem;
|
||||
border-top: solid 1px #8494ab; }
|
||||
|
||||
.item-content,
|
||||
.cw,
|
||||
.title {
|
||||
font-size: 1.1rem;
|
||||
font-weight: lighter; }
|
||||
|
||||
.item-content *, .cw {
|
||||
margin: 1rem 0;
|
||||
line-height: 1.4rem; }
|
||||
|
||||
.item-title,
|
||||
.date,
|
||||
.author-fullname {
|
||||
color: #90a1ba;
|
||||
font-size: 0.9rem; }
|
||||
|
||||
.date {
|
||||
margin: 1rem 0 0 0;
|
||||
text-decoration: none;
|
||||
display: block; }
|
||||
|
||||
.date:hover {
|
||||
text-decoration: underline; }
|
||||
|
||||
.item-title {
|
||||
margin-bottom: 0.7rem; }
|
||||
|
||||
.author {
|
||||
display: flex;
|
||||
margin-bottom: 1rem; }
|
||||
|
||||
.author-info {
|
||||
margin: 0 1rem;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
justify-content: space-around; }
|
||||
.author-info .author-displayname {
|
||||
font-size: 1.2rem;
|
||||
color: #282c37;
|
||||
text-decoration: none;
|
||||
display: block;
|
||||
font-weight: bolder; }
|
||||
|
||||
.avatar {
|
||||
width: 3rem;
|
||||
height: 3rem;
|
||||
border: none;
|
||||
border-radius: 10%; }
|
||||
.avatar.circular {
|
||||
border-radius: 100%; }
|
||||
|
||||
.enclosures {
|
||||
padding: 0.5em 0;
|
||||
display: flex;
|
||||
flex-wrap: wrap;
|
||||
flex-direction: row;
|
||||
overflow: hidden; }
|
||||
|
||||
.enclosure {
|
||||
display: flex;
|
||||
flex: 1 1 auto;
|
||||
width: 50%;
|
||||
border: none;
|
||||
max-height: 12rem; }
|
||||
|
||||
a.enclosure {
|
||||
cursor: zoom-in; }
|
||||
|
||||
.enclosure > * {
|
||||
flex: 1 1 auto;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
object-fit: cover; }
|
||||
|
||||
.meta .title {
|
||||
font-weight: bold; }
|
||||
|
||||
.hidden {
|
||||
display: none; }
|
||||
|
||||
.button {
|
||||
padding: 0.5rem 1rem;
|
||||
border: none;
|
||||
margin: 1rem;
|
||||
border-radius: 0.5rem;
|
||||
display: inline-block;
|
||||
text-decoration: none;
|
||||
background: #2b90d9;
|
||||
color: #282c37;
|
||||
font-weight: 400;
|
||||
cursor: pointer;
|
||||
text-transform: uppercase;
|
||||
user-select: none; }
|
||||
|
||||
label.button {
|
||||
padding: 0.25rem 0.5rem;
|
||||
margin: 0.4rem;
|
||||
background: #8494ab;
|
||||
color: #ffffff;
|
||||
font-size: 0.8rem; }
|
||||
|
||||
input[type=checkbox] {
|
||||
position: absolute;
|
||||
left: -9999px; }
|
||||
|
||||
input[type=checkbox]:checked ~ label::after {
|
||||
content: " Less"; }
|
||||
|
||||
input[type=checkbox]:not(:checked) ~ label::after {
|
||||
content: " More"; }
|
||||
|
||||
input[type=checkbox]:not(:checked) ~ div {
|
||||
display: none; }
|
||||
|
||||
.item-content,
|
||||
.description,
|
||||
.title,
|
||||
html,
|
||||
body {
|
||||
font-weight: normal; }
|
|
@ -1,351 +0,0 @@
|
|||
html,
|
||||
body {
|
||||
background-color: rgb(249, 249, 249);
|
||||
font-family: 'Roboto', roboto, Arial, sans-serif;
|
||||
color: #282c37;
|
||||
font-weight: lighter;
|
||||
overflow-x: hidden;
|
||||
font-size: 100%;
|
||||
word-break: break-word; }
|
||||
|
||||
* {
|
||||
margin: 0;
|
||||
padding: 0; }
|
||||
|
||||
a,
|
||||
a * {
|
||||
color: rgb(68, 164, 193); }
|
||||
|
||||
a[rel = "tag"] {
|
||||
color: rgb(255, 145, 86); }
|
||||
|
||||
.meta {
|
||||
background-color: #ecf0f4; }
|
||||
|
||||
.header {
|
||||
display: flex;
|
||||
background-size: cover;
|
||||
min-height: 8rem;
|
||||
color: #282c37; }
|
||||
.header .header-left, .header .header-right {
|
||||
margin: 0; }
|
||||
.header .header-left {
|
||||
min-width: 8rem;
|
||||
position: relative;
|
||||
text-align: center;
|
||||
background: rgba(255, 255, 255, 0.3); }
|
||||
.header .header-left .avatar {
|
||||
width: 6rem;
|
||||
height: 6rem;
|
||||
position: relative;
|
||||
top: calc(50% - 3rem); }
|
||||
.header .header-right {
|
||||
flex-grow: 1;
|
||||
font-size: 0.9rem;
|
||||
padding: 0.9rem;
|
||||
background: rgba(255, 255, 255, 0.85); }
|
||||
.header .header-title {
|
||||
font-size: 1.3rem; }
|
||||
|
||||
.item {
|
||||
padding: 1rem;
|
||||
border-top: solid 1px #8494ab; }
|
||||
|
||||
.item-content,
|
||||
.cw,
|
||||
.title {
|
||||
font-size: 1.1rem;
|
||||
font-weight: lighter; }
|
||||
|
||||
.item-content *, .cw {
|
||||
margin: 1rem 0;
|
||||
line-height: 1.4rem; }
|
||||
|
||||
.item-title,
|
||||
.date,
|
||||
.author-fullname {
|
||||
color: #90a1ba;
|
||||
font-size: 0.9rem; }
|
||||
|
||||
.date {
|
||||
margin: 1rem 0 0 0;
|
||||
text-decoration: none;
|
||||
display: block; }
|
||||
|
||||
.date:hover {
|
||||
text-decoration: underline; }
|
||||
|
||||
.item-title {
|
||||
margin-bottom: 0.7rem; }
|
||||
|
||||
.author {
|
||||
display: flex;
|
||||
margin-bottom: 1rem; }
|
||||
|
||||
.author-info {
|
||||
margin: 0 1rem;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
justify-content: space-around; }
|
||||
.author-info .author-displayname {
|
||||
font-size: 1.2rem;
|
||||
color: #282c37;
|
||||
text-decoration: none;
|
||||
display: block;
|
||||
font-weight: bolder; }
|
||||
|
||||
.avatar {
|
||||
width: 3rem;
|
||||
height: 3rem;
|
||||
border: none;
|
||||
border-radius: 10%; }
|
||||
.avatar.circular {
|
||||
border-radius: 100%; }
|
||||
|
||||
.enclosures {
|
||||
padding: 0.5em 0;
|
||||
display: flex;
|
||||
flex-wrap: wrap;
|
||||
flex-direction: row;
|
||||
overflow: hidden; }
|
||||
|
||||
.enclosure {
|
||||
display: flex;
|
||||
flex: 1 1 auto;
|
||||
width: 50%;
|
||||
border: none;
|
||||
max-height: 12rem; }
|
||||
|
||||
a.enclosure {
|
||||
cursor: zoom-in; }
|
||||
|
||||
.enclosure > * {
|
||||
flex: 1 1 auto;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
object-fit: cover; }
|
||||
|
||||
.meta .title {
|
||||
font-weight: bold; }
|
||||
|
||||
.hidden {
|
||||
display: none; }
|
||||
|
||||
.u-url,
|
||||
.mention{
|
||||
color: #86b300; }
|
||||
|
||||
.button {
|
||||
padding: 0.5rem 1rem;
|
||||
border: none;
|
||||
margin: 1rem;
|
||||
border-radius: 0.5rem;
|
||||
display: inline-block;
|
||||
text-decoration: none;
|
||||
background: #2b90d9;
|
||||
color: #282c37;
|
||||
font-weight: 400;
|
||||
cursor: pointer;
|
||||
text-transform: uppercase;
|
||||
user-select: none; }
|
||||
|
||||
label.button {
|
||||
padding: 0.25rem 0.5rem;
|
||||
margin: 0.4rem;
|
||||
background: #8494ab;
|
||||
color: #ffffff;
|
||||
font-size: 0.8rem; }
|
||||
|
||||
input[type=checkbox] {
|
||||
position: absolute;
|
||||
left: -9999px; }
|
||||
|
||||
input[type=checkbox]:checked ~ label::after {
|
||||
content: " Less"; }
|
||||
|
||||
input[type=checkbox]:not(:checked) ~ label::after {
|
||||
content: " More"; }
|
||||
|
||||
input[type=checkbox]:not(:checked) ~ div {
|
||||
display: none; }
|
||||
|
||||
.item-content,
|
||||
.description,
|
||||
.title,
|
||||
html,
|
||||
body {
|
||||
font-weight: normal; }
|
||||
|
||||
@media (prefers-color-scheme: misskey-dark) {
|
||||
html,
|
||||
body {
|
||||
background-color: #232323;
|
||||
font-family: 'Roboto', roboto, Arial, sans-serif;
|
||||
color: #dadada;
|
||||
font-weight: lighter;
|
||||
overflow-x: hidden;
|
||||
font-size: 100%;
|
||||
word-break: break-word; }
|
||||
|
||||
* {
|
||||
margin: 0;
|
||||
padding: 0; }
|
||||
|
||||
a,
|
||||
a * {
|
||||
color: rgb(134, 179, 0); }
|
||||
|
||||
a[rel = "tag"] {
|
||||
color: rgb(76, 184, 212); }
|
||||
|
||||
.meta {
|
||||
background-color: #39404d; }
|
||||
|
||||
.header {
|
||||
display: flex;
|
||||
background-size: cover;
|
||||
min-height: 8rem;
|
||||
color: rgb(199, 209, 216); }
|
||||
.header .header-left, .header .header-right {
|
||||
margin: 0; }
|
||||
.header .header-left {
|
||||
min-width: 8rem;
|
||||
position: relative;
|
||||
text-align: center;
|
||||
background: rgba(45, 45, 45, 0.3); }
|
||||
.header .header-left .avatar {
|
||||
width: 6rem;
|
||||
height: 6rem;
|
||||
position: relative;
|
||||
top: calc(50% - 3rem); }
|
||||
.header .header-right {
|
||||
flex-grow: 1;
|
||||
font-size: 0.9rem;
|
||||
padding: 0.9rem;
|
||||
background: rgba(45, 45, 45, 0.85); }
|
||||
.header .header-title {
|
||||
font-size: 1.3rem; }
|
||||
|
||||
.item {
|
||||
padding: 1rem;
|
||||
border-top: solid 1px #626d80; }
|
||||
|
||||
.item-content,
|
||||
.cw,
|
||||
.title {
|
||||
font-size: 1.1rem;
|
||||
font-weight: lighter; }
|
||||
|
||||
.item-content *, .cw {
|
||||
margin: 1rem 0;
|
||||
line-height: 1.4rem; }
|
||||
|
||||
.item-title,
|
||||
.date,
|
||||
.author-fullname {
|
||||
color: #9baec8;
|
||||
font-size: 0.9rem;
|
||||
opacity: .5; }
|
||||
|
||||
.date {
|
||||
margin: 1rem 0 0 0;
|
||||
text-decoration: none;
|
||||
display: block; }
|
||||
|
||||
.date:hover {
|
||||
text-decoration: underline; }
|
||||
|
||||
.item-title {
|
||||
margin-bottom: 0.7rem; }
|
||||
|
||||
.author {
|
||||
display: flex;
|
||||
margin-bottom: 1rem; }
|
||||
|
||||
.author-info {
|
||||
margin: 0 1rem;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
justify-content: space-around; }
|
||||
.author-info .author-displayname {
|
||||
font-size: 1.2rem;
|
||||
color: #dadada;
|
||||
text-decoration: none;
|
||||
display: block;
|
||||
font-weight: bolder; }
|
||||
|
||||
.avatar {
|
||||
width: 3rem;
|
||||
height: 3rem;
|
||||
border: none;
|
||||
border-radius: 10%; }
|
||||
.avatar.circular {
|
||||
border-radius: 100%; }
|
||||
|
||||
.enclosures {
|
||||
padding: 0.5em 0;
|
||||
display: flex;
|
||||
flex-wrap: wrap;
|
||||
flex-direction: row;
|
||||
overflow: hidden; }
|
||||
|
||||
.enclosure {
|
||||
display: flex;
|
||||
flex: 1 1 auto;
|
||||
width: 50%;
|
||||
border: none;
|
||||
max-height: 12rem; }
|
||||
|
||||
a.enclosure {
|
||||
cursor: zoom-in; }
|
||||
|
||||
.enclosure > * {
|
||||
flex: 1 1 auto;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
object-fit: cover; }
|
||||
|
||||
.meta .title {
|
||||
font-weight: bold; }
|
||||
|
||||
.hidden {
|
||||
display: none; }
|
||||
|
||||
.u-url,
|
||||
.mention{
|
||||
color: #86b300; }
|
||||
|
||||
.button {
|
||||
padding: 0.5rem 1rem;
|
||||
border: none;
|
||||
margin: 1rem;
|
||||
border-radius: 0.5rem;
|
||||
display: inline-block;
|
||||
text-decoration: none;
|
||||
background: rgba(255, 255, 255, 0.05);
|
||||
color: rgba(255, 255, 255, 0.1);
|
||||
font-weight: 400;
|
||||
cursor: pointer;
|
||||
text-transform: uppercase;
|
||||
user-select: none; }
|
||||
|
||||
label.button {
|
||||
padding: 0.25rem 0.5rem;
|
||||
margin: 0.4rem;
|
||||
background: #626d80;
|
||||
color: #282c37;
|
||||
font-size: 0.8rem; }
|
||||
|
||||
input[type=checkbox] {
|
||||
position: absolute;
|
||||
left: -9999px; }
|
||||
|
||||
input[type=checkbox]:checked ~ label::after {
|
||||
content: " Less"; }
|
||||
|
||||
input[type=checkbox]:not(:checked) ~ label::after {
|
||||
content: " More"; }
|
||||
|
||||
input[type=checkbox]:not(:checked) ~ div {
|
||||
display: none; } }
|
||||
|
|
@ -1,171 +0,0 @@
|
|||
html,
|
||||
body {
|
||||
background-color: #232323;
|
||||
font-family: 'Roboto', roboto, Arial, sans-serif;
|
||||
color: #dadada;
|
||||
font-weight: lighter;
|
||||
overflow-x: hidden;
|
||||
font-size: 100%;
|
||||
word-break: break-word; }
|
||||
|
||||
* {
|
||||
margin: 0;
|
||||
padding: 0; }
|
||||
|
||||
a,
|
||||
a * {
|
||||
color: rgb(134, 179, 0); }
|
||||
|
||||
a[rel = "tag"] {
|
||||
color: rgb(76, 184, 212); }
|
||||
|
||||
.meta {
|
||||
background-color: #39404d; }
|
||||
|
||||
.header {
|
||||
display: flex;
|
||||
background-size: cover;
|
||||
min-height: 8rem;
|
||||
color: rgb(199, 209, 216); }
|
||||
.header .header-left, .header .header-right {
|
||||
margin: 0; }
|
||||
.header .header-left {
|
||||
min-width: 8rem;
|
||||
position: relative;
|
||||
text-align: center;
|
||||
background: rgba(45, 45, 45, 0.3); }
|
||||
.header .header-left .avatar {
|
||||
width: 6rem;
|
||||
height: 6rem;
|
||||
position: relative;
|
||||
top: calc(50% - 3rem); }
|
||||
.header .header-right {
|
||||
flex-grow: 1;
|
||||
font-size: 0.9rem;
|
||||
padding: 0.9rem;
|
||||
background: rgba(45, 45, 45, 0.85); }
|
||||
.header .header-title {
|
||||
font-size: 1.3rem; }
|
||||
|
||||
.item {
|
||||
padding: 1rem;
|
||||
border-top: solid 1px #626d80; }
|
||||
|
||||
.item-content,
|
||||
.cw,
|
||||
.title {
|
||||
font-size: 1.1rem;
|
||||
font-weight: lighter; }
|
||||
|
||||
.item-content *, .cw {
|
||||
margin: 1rem 0;
|
||||
line-height: 1.4rem; }
|
||||
|
||||
.item-title,
|
||||
.date,
|
||||
.author-fullname {
|
||||
color: #9baec8;
|
||||
font-size: 0.9rem;
|
||||
opacity: .5; }
|
||||
|
||||
.date {
|
||||
margin: 1rem 0 0 0;
|
||||
text-decoration: none;
|
||||
display: block; }
|
||||
|
||||
.date:hover {
|
||||
text-decoration: underline; }
|
||||
|
||||
.item-title {
|
||||
margin-bottom: 0.7rem; }
|
||||
|
||||
.author {
|
||||
display: flex;
|
||||
margin-bottom: 1rem; }
|
||||
|
||||
.author-info {
|
||||
margin: 0 1rem;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
justify-content: space-around; }
|
||||
.author-info .author-displayname {
|
||||
font-size: 1.2rem;
|
||||
color: #dadada;
|
||||
text-decoration: none;
|
||||
display: block;
|
||||
font-weight: bolder; }
|
||||
|
||||
.avatar {
|
||||
width: 3rem;
|
||||
height: 3rem;
|
||||
border: none;
|
||||
border-radius: 10%; }
|
||||
.avatar.circular {
|
||||
border-radius: 100%; }
|
||||
|
||||
.enclosures {
|
||||
padding: 0.5em 0;
|
||||
display: flex;
|
||||
flex-wrap: wrap;
|
||||
flex-direction: row;
|
||||
overflow: hidden; }
|
||||
|
||||
.enclosure {
|
||||
display: flex;
|
||||
flex: 1 1 auto;
|
||||
width: 50%;
|
||||
border: none;
|
||||
max-height: 12rem; }
|
||||
|
||||
a.enclosure {
|
||||
cursor: zoom-in; }
|
||||
|
||||
.enclosure > * {
|
||||
flex: 1 1 auto;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
object-fit: cover; }
|
||||
|
||||
.meta .title {
|
||||
font-weight: bold; }
|
||||
|
||||
.hidden {
|
||||
display: none; }
|
||||
|
||||
.u-url,
|
||||
.mention{
|
||||
color: #86b300; }
|
||||
|
||||
.button {
|
||||
padding: 0.5rem 1rem;
|
||||
border: none;
|
||||
margin: 1rem;
|
||||
border-radius: 0.5rem;
|
||||
display: inline-block;
|
||||
text-decoration: none;
|
||||
background: rgba(255, 255, 255, 0.05);
|
||||
color: rgba(255, 255, 255, 0.1);
|
||||
font-weight: 400;
|
||||
cursor: pointer;
|
||||
text-transform: uppercase;
|
||||
user-select: none; }
|
||||
|
||||
label.button {
|
||||
padding: 0.25rem 0.5rem;
|
||||
margin: 0.4rem;
|
||||
background: #626d80;
|
||||
color: #282c37;
|
||||
font-size: 0.8rem; }
|
||||
|
||||
input[type=checkbox] {
|
||||
position: absolute;
|
||||
left: -9999px; }
|
||||
|
||||
input[type=checkbox]:checked ~ label::after {
|
||||
content: " Less"; }
|
||||
|
||||
input[type=checkbox]:not(:checked) ~ label::after {
|
||||
content: " More"; }
|
||||
|
||||
input[type=checkbox]:not(:checked) ~ div {
|
||||
display: none; }
|
|
@ -1,177 +0,0 @@
|
|||
html,
|
||||
body {
|
||||
background-color: rgb(249, 249, 249);
|
||||
font-family: 'Roboto', roboto, Arial, sans-serif;
|
||||
color: #282c37;
|
||||
font-weight: lighter;
|
||||
overflow-x: hidden;
|
||||
font-size: 100%;
|
||||
word-break: break-word; }
|
||||
|
||||
* {
|
||||
margin: 0;
|
||||
padding: 0; }
|
||||
|
||||
a,
|
||||
a * {
|
||||
color: rgb(68, 164, 193); }
|
||||
|
||||
a[rel = "tag"] {
|
||||
color: rgb(255, 145, 86); }
|
||||
|
||||
.meta {
|
||||
background-color: #ecf0f4; }
|
||||
|
||||
.header {
|
||||
display: flex;
|
||||
background-size: cover;
|
||||
min-height: 8rem;
|
||||
color: #282c37; }
|
||||
.header .header-left, .header .header-right {
|
||||
margin: 0; }
|
||||
.header .header-left {
|
||||
min-width: 8rem;
|
||||
position: relative;
|
||||
text-align: center;
|
||||
background: rgba(255, 255, 255, 0.3); }
|
||||
.header .header-left .avatar {
|
||||
width: 6rem;
|
||||
height: 6rem;
|
||||
position: relative;
|
||||
top: calc(50% - 3rem); }
|
||||
.header .header-right {
|
||||
flex-grow: 1;
|
||||
font-size: 0.9rem;
|
||||
padding: 0.9rem;
|
||||
background: rgba(255, 255, 255, 0.85); }
|
||||
.header .header-title {
|
||||
font-size: 1.3rem; }
|
||||
|
||||
.item {
|
||||
padding: 1rem;
|
||||
border-top: solid 1px #8494ab; }
|
||||
|
||||
.item-content,
|
||||
.cw,
|
||||
.title {
|
||||
font-size: 1.1rem;
|
||||
font-weight: lighter; }
|
||||
|
||||
.item-content *, .cw {
|
||||
margin: 1rem 0;
|
||||
line-height: 1.4rem; }
|
||||
|
||||
.item-title,
|
||||
.date,
|
||||
.author-fullname {
|
||||
color: #90a1ba;
|
||||
font-size: 0.9rem; }
|
||||
|
||||
.date {
|
||||
margin: 1rem 0 0 0;
|
||||
text-decoration: none;
|
||||
display: block; }
|
||||
|
||||
.date:hover {
|
||||
text-decoration: underline; }
|
||||
|
||||
.item-title {
|
||||
margin-bottom: 0.7rem; }
|
||||
|
||||
.author {
|
||||
display: flex;
|
||||
margin-bottom: 1rem; }
|
||||
|
||||
.author-info {
|
||||
margin: 0 1rem;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
justify-content: space-around; }
|
||||
.author-info .author-displayname {
|
||||
font-size: 1.2rem;
|
||||
color: #282c37;
|
||||
text-decoration: none;
|
||||
display: block;
|
||||
font-weight: bolder; }
|
||||
|
||||
.avatar {
|
||||
width: 3rem;
|
||||
height: 3rem;
|
||||
border: none;
|
||||
border-radius: 10%; }
|
||||
.avatar.circular {
|
||||
border-radius: 100%; }
|
||||
|
||||
.enclosures {
|
||||
padding: 0.5em 0;
|
||||
display: flex;
|
||||
flex-wrap: wrap;
|
||||
flex-direction: row;
|
||||
overflow: hidden; }
|
||||
|
||||
.enclosure {
|
||||
display: flex;
|
||||
flex: 1 1 auto;
|
||||
width: 50%;
|
||||
border: none;
|
||||
max-height: 12rem; }
|
||||
|
||||
a.enclosure {
|
||||
cursor: zoom-in; }
|
||||
|
||||
.enclosure > * {
|
||||
flex: 1 1 auto;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
object-fit: cover; }
|
||||
|
||||
.meta .title {
|
||||
font-weight: bold; }
|
||||
|
||||
.hidden {
|
||||
display: none; }
|
||||
|
||||
.u-url,
|
||||
.mention{
|
||||
color: #86b300; }
|
||||
|
||||
.button {
|
||||
padding: 0.5rem 1rem;
|
||||
border: none;
|
||||
margin: 1rem;
|
||||
border-radius: 0.5rem;
|
||||
display: inline-block;
|
||||
text-decoration: none;
|
||||
background: #2b90d9;
|
||||
color: #282c37;
|
||||
font-weight: 400;
|
||||
cursor: pointer;
|
||||
text-transform: uppercase;
|
||||
user-select: none; }
|
||||
|
||||
label.button {
|
||||
padding: 0.25rem 0.5rem;
|
||||
margin: 0.4rem;
|
||||
background: #8494ab;
|
||||
color: #ffffff;
|
||||
font-size: 0.8rem; }
|
||||
|
||||
input[type=checkbox] {
|
||||
position: absolute;
|
||||
left: -9999px; }
|
||||
|
||||
input[type=checkbox]:checked ~ label::after {
|
||||
content: " Less"; }
|
||||
|
||||
input[type=checkbox]:not(:checked) ~ label::after {
|
||||
content: " More"; }
|
||||
|
||||
input[type=checkbox]:not(:checked) ~ div {
|
||||
display: none; }
|
||||
|
||||
.item-content,
|
||||
.description,
|
||||
.title,
|
||||
html,
|
||||
body {
|
||||
font-weight: normal; }
|
|
@ -1,163 +0,0 @@
|
|||
html,
|
||||
body {
|
||||
background-color: rgba(15, 22, 30, 1);
|
||||
font-family: 'Roboto', roboto, Arial, sans-serif;
|
||||
color: rgba(185, 185, 186, 1);
|
||||
font-weight: lighter;
|
||||
overflow-x: hidden;
|
||||
font-size: 100%;
|
||||
word-break: break-word; }
|
||||
|
||||
* {
|
||||
margin: 0;
|
||||
padding: 0; }
|
||||
|
||||
a,
|
||||
a * {
|
||||
color: #e2b188; }
|
||||
|
||||
.meta {
|
||||
background-color: #39404d; }
|
||||
|
||||
.header {
|
||||
display: flex;
|
||||
background-size: cover;
|
||||
min-height: 8rem;
|
||||
color: rgba(185, 185, 186, 1); }
|
||||
.header .header-left, .header .header-right {
|
||||
margin: 0; }
|
||||
.header .header-left {
|
||||
min-width: 8rem;
|
||||
position: relative;
|
||||
text-align: center;
|
||||
background: rgba(40, 44, 55, 0.3); }
|
||||
.header .header-left .avatar {
|
||||
width: 6rem;
|
||||
height: 6rem;
|
||||
position: relative;
|
||||
top: calc(50% - 3rem); }
|
||||
.header .header-right {
|
||||
flex-grow: 1;
|
||||
font-size: 0.9rem;
|
||||
padding: 0.9rem;
|
||||
background: rgba(40, 44, 55, 0.85); }
|
||||
.header .header-title {
|
||||
font-size: 1.3rem; }
|
||||
|
||||
.item {
|
||||
padding: 1rem;
|
||||
border-top: solid 1px #626d80; }
|
||||
|
||||
.item-content,
|
||||
.cw,
|
||||
.title {
|
||||
font-size: 1.1rem;
|
||||
font-weight: lighter; }
|
||||
|
||||
.item-content *, .cw {
|
||||
margin: 1rem 0;
|
||||
line-height: 1.4rem; }
|
||||
|
||||
.item-title,
|
||||
.date,
|
||||
.author-fullname {
|
||||
color: rgba(185, 185, 186, 0.5);
|
||||
font-size: 0.9rem; }
|
||||
|
||||
.date {
|
||||
margin: 1rem 0 0 0;
|
||||
text-decoration: none;
|
||||
display: block; }
|
||||
|
||||
.date:hover {
|
||||
text-decoration: underline; }
|
||||
|
||||
.item-title {
|
||||
margin-bottom: 0.7rem; }
|
||||
|
||||
.author {
|
||||
display: flex;
|
||||
margin-bottom: 1rem; }
|
||||
|
||||
.author-info {
|
||||
margin: 0 1rem;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
justify-content: space-around; }
|
||||
.author-info .author-displayname {
|
||||
font-size: 1.2rem;
|
||||
color: rgba(185, 185, 186, 1);
|
||||
text-decoration: none;
|
||||
display: block;
|
||||
font-weight: bolder; }
|
||||
|
||||
.avatar {
|
||||
width: 3rem;
|
||||
height: 3rem;
|
||||
border: none;
|
||||
border-radius: 10%; }
|
||||
.avatar.circular {
|
||||
border-radius: 100%; }
|
||||
|
||||
.enclosures {
|
||||
padding: 0.5em 0;
|
||||
display: flex;
|
||||
flex-wrap: wrap;
|
||||
flex-direction: row;
|
||||
overflow: hidden; }
|
||||
|
||||
.enclosure {
|
||||
display: flex;
|
||||
flex: 1 1 auto;
|
||||
width: 50%;
|
||||
border: none;
|
||||
max-height: 12rem; }
|
||||
|
||||
a.enclosure {
|
||||
cursor: zoom-in; }
|
||||
|
||||
.enclosure > * {
|
||||
flex: 1 1 auto;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
object-fit: cover; }
|
||||
|
||||
.meta .title {
|
||||
font-weight: bold; }
|
||||
|
||||
.hidden {
|
||||
display: none; }
|
||||
|
||||
.button {
|
||||
padding: 0.5rem 1rem;
|
||||
border: none;
|
||||
margin: 1rem;
|
||||
border-radius: 0.5rem;
|
||||
display: inline-block;
|
||||
text-decoration: none;
|
||||
background: #2b90d9;
|
||||
color: rgba(185, 185, 186, 1);
|
||||
font-weight: 400;
|
||||
cursor: pointer;
|
||||
text-transform: uppercase;
|
||||
user-select: none; }
|
||||
|
||||
label.button {
|
||||
padding: 0.25rem 0.5rem;
|
||||
margin: 0.4rem;
|
||||
background: #626d80;
|
||||
color: #282c37;
|
||||
font-size: 0.8rem; }
|
||||
|
||||
input[type=checkbox] {
|
||||
position: absolute;
|
||||
left: -9999px; }
|
||||
|
||||
input[type=checkbox]:checked ~ label::after {
|
||||
content: " Less"; }
|
||||
|
||||
input[type=checkbox]:not(:checked) ~ label::after {
|
||||
content: " More"; }
|
||||
|
||||
input[type=checkbox]:not(:checked) ~ div {
|
||||
display: none; }
|
|
@ -1,118 +0,0 @@
|
|||
/*
|
||||
* Based on .css file from https://joinmastodon.org (by Gargron and latrani)
|
||||
*/
|
||||
|
||||
@import url(https://fonts.googleapis.com/css?family=Quando|Judson|Montserrat:500|Roboto:400,500);
|
||||
a, abbr, acronym, address, applet, article, aside, audio, b, big, blockquote,
|
||||
body, canvas, caption, center, cite, code, dd, del, details, dfn, div, dl,
|
||||
dt, em, embed, fieldset, figcaption, figure, footer, form, h1, h2, h3, h4,
|
||||
h5, h6, header, hgroup, html, i, iframe, img, ins, kbd, label, legend, li,
|
||||
mark, menu, nav, object, ol, output, p, pre, q, ruby, s, samp, section, small,
|
||||
span, strike, strong, sub, summary, sup, table, tbody, td, tfoot, th, thead,
|
||||
time, tr, tt, u, ul, var, video {
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
border: 0;
|
||||
font-size: 100%;
|
||||
font: inherit;
|
||||
vertical-align: baseline
|
||||
}
|
||||
|
||||
article, aside, details, figcaption, figure, footer, header, hgroup,
|
||||
menu, nav, section {
|
||||
display: block
|
||||
}
|
||||
|
||||
a {
|
||||
outline: 0
|
||||
}
|
||||
|
||||
label, h3 {
|
||||
color: #607ea7;
|
||||
margin-bottom: 26px;
|
||||
font-size: 16px;
|
||||
line-height: 24px
|
||||
}
|
||||
|
||||
body {
|
||||
text-rendering: optimizelegibility;
|
||||
-webkit-font-feature-settings: "kern";
|
||||
font-feature-settings: "kern";
|
||||
-webkit-text-size-adjust: none;
|
||||
-ms-text-size-adjust: none;
|
||||
text-size-adjust: none;
|
||||
box-sizing: border-box;
|
||||
font-family: Roboto, sans-serif;
|
||||
background-color: #000000;
|
||||
color: #5f6b84;
|
||||
font-size: 13px;
|
||||
line-height: 18px;
|
||||
font-weight: 400;
|
||||
margin:1em
|
||||
}
|
||||
|
||||
h1 {
|
||||
font-family: Montserrat, sans-serif;
|
||||
font-size: 26px;
|
||||
margin-bottom: 20px
|
||||
}
|
||||
|
||||
input[type="text"], input[type="number"], select {
|
||||
outline: 0;
|
||||
box-sizing: border-box;
|
||||
border-radius: 4px;
|
||||
display: block;
|
||||
width: 100%;
|
||||
border: none;
|
||||
padding: 10px;
|
||||
padding-right: 30px;
|
||||
font-family: inherit;
|
||||
background: #0e1013;
|
||||
color: #9baec8;
|
||||
font-size: 14px;
|
||||
margin: 0
|
||||
}
|
||||
|
||||
h4 {
|
||||
font-family: Montserrat, sans-serif;
|
||||
font-size: 16px;
|
||||
line-height: 24px;
|
||||
margin-bottom: 20px;
|
||||
color: #9baec8
|
||||
}
|
||||
|
||||
img {
|
||||
width: 16px;
|
||||
height: 16px;
|
||||
opacity: .5;
|
||||
-webkit-transition: opacity .25s linear;
|
||||
transition: opacity .25s linear
|
||||
}
|
||||
|
||||
div {
|
||||
max-width: 800px;
|
||||
margin: 0 auto
|
||||
}
|
||||
|
||||
.iframe-contain {
|
||||
display:block;
|
||||
text-align:center;
|
||||
}
|
||||
|
||||
button, a {
|
||||
display: inline-block;
|
||||
text-align: center;
|
||||
font-size: 16px;
|
||||
text-decoration: none;
|
||||
line-height: 36px;
|
||||
padding: 4px 16px;
|
||||
background: transparent;
|
||||
border: 1px solid #9baec8;
|
||||
border-radius: 4px;
|
||||
padding: 3px 15px;
|
||||
color: #9baec8;
|
||||
cursor:pointer;
|
||||
}
|
||||
button:hover, a:hover {
|
||||
background-color: #394150;
|
||||
}
|
|
@ -1,76 +0,0 @@
|
|||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="initial-scale=1">
|
||||
<title>Fedifeed - embeddable ActivityPub feeds</title>
|
||||
<link rel="stylesheet" href="./css/stylesheet.css">
|
||||
<script src="./js/script.js" defer></script>
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<br>
|
||||
<div>
|
||||
<h1>Fedifeed</h1>
|
||||
<h4>Embedded ActivityPub feeds for blogs, websites, etc.</h4>
|
||||
<a href="https://github.com/SamTherapy/fedifeed" class="cta button alt">Fork on Github <img
|
||||
class="link-logo after" src="github-logo.svg" alt="Github Logo" data-reactid="19"></a><br>
|
||||
<br>
|
||||
<hr><br>
|
||||
<form action="javascript:genUrl()">
|
||||
<label>Instance URL:<input required type="text" id="urlin" placeholder="mastodon.social"
|
||||
oninvalid="this.setCustomValidity('Insert your instance URL. Example: mastodon.social')"
|
||||
oninput="this.setCustomValidity('')"></label>
|
||||
<br>
|
||||
<label>Username:<input required type="text" id="usernamein" placeholder="gargron"
|
||||
oninvalid="this.setCustomValidity('Insert your username. Example: gargron')"
|
||||
oninput="this.setCustomValidity('')"></label>
|
||||
<br>
|
||||
<label>Width (px):<input required type="number" id="width" value="400"
|
||||
oninvalid="this.setCustomValidity('Insert width of generated feed. Default: 400')"
|
||||
oninput="this.setCustomValidity('')"></label>
|
||||
<br>
|
||||
<label>Height (px):<input required type="number" id="height" value="800"
|
||||
oninvalid="this.setCustomValidity('Insert height of generated feed. Default: 800')"
|
||||
oninput="this.setCustomValidity('')"></label>
|
||||
<br>
|
||||
<label>UI Scale (percent):<input required type="number" id="size" value="100"
|
||||
oninvalid="this.setCustomValidity('Insert UI scale. Default: 100')"
|
||||
oninput="this.setCustomValidity('')"></label>
|
||||
<br>
|
||||
<label>Theme:
|
||||
<select id="theme">
|
||||
<option value="masto-dark">masto-dark</option>
|
||||
<option value="masto-light">masto-light</option>
|
||||
<option value="masto-auto">masto-auto (based on css prefers-color-scheme)</option>
|
||||
<option value="misskey-dark">misskey-dark</option>
|
||||
<option value="misskey-light">misskey-light</option>
|
||||
<option value="misskey-auto">misskey-auto (based on css prefers-color-scheme)</option>
|
||||
<option value="pleroma">pleroma</option>
|
||||
</select>
|
||||
</label>
|
||||
<br>
|
||||
<label>Show Header?<input id="header" type="checkbox" checked="checked"></label>
|
||||
<br>
|
||||
<label>Hide replies?<input type="checkbox" id="hidereplies" checked="checked"></label>
|
||||
<br>
|
||||
<label>Hide boosts?<input type="checkbox" id="hideboosts" checked="checked"></label>
|
||||
<br>
|
||||
<br>
|
||||
<button value="generate">Generate</button>
|
||||
</form>
|
||||
<br><br>
|
||||
<label>Use this markup in your HTML: <br><textarea id="result"
|
||||
placeholder="result will go here"></textarea></label>
|
||||
<br><br>
|
||||
<h3>Live Preview:</h3>
|
||||
<span class="iframe-contain">
|
||||
<iframe id="frame" allowfullscreen sandbox="allow-top-navigation allow-scripts" width="400" height="800"
|
||||
src="/api/v1/feed?userurl=https%3A%2F%2Fmastodon.social%2Fusers%2Fgargron&replies=false&boosts=true">></iframe>
|
||||
</span>
|
||||
<br>
|
||||
</div>
|
||||
</body>
|
||||
|
||||
</html>
|
File diff suppressed because one or more lines are too long
|
@ -1,24 +0,0 @@
|
|||
window.genUrl = function genUrl() {
|
||||
function val(id) {
|
||||
return document.getElementById(id).value;
|
||||
}
|
||||
|
||||
let user = val("usernamein");
|
||||
let instance = "https://" + val("urlin");
|
||||
|
||||
let showBoosts = (!document.getElementById("hideboosts").checked).toString();
|
||||
let showReplies = (!document.getElementById("hidereplies").checked).toString();
|
||||
let showHeader = document.getElementById("header").checked.toString();
|
||||
let portStr = (window.location.port && window.location.port != 80) ? (":" + window.location.port) : "";
|
||||
|
||||
let iframeUrl = window.location.protocol + "//" + window.location.hostname + portStr
|
||||
+ "/api/v1/feed?user=" + encodeURIComponent(user) + "&instance=" + encodeURIComponent(instance) + "&instance_type=" + "&theme=" + val("theme") + "&size=" + val("size")
|
||||
+ "&header=" + showHeader + "&replies=" + showReplies + "&boosts=" + showBoosts;
|
||||
|
||||
document.getElementById("result").value = "<iframe allowfullscreen sandbox=\"allow-top-navigation allow-scripts\" width=\"" + val("width") + "\" height=\"" + val("height") + "\" src=\"" + iframeUrl + "\"></iframe>";
|
||||
|
||||
let iframe = document.getElementById("frame");
|
||||
iframe.src = iframeUrl;
|
||||
iframe.width = val("width");
|
||||
iframe.height = val("height");
|
||||
};
|
|
@ -1,163 +0,0 @@
|
|||
html,
|
||||
body {
|
||||
background-color: #282c37;
|
||||
font-family: 'Roboto', roboto, Arial, sans-serif;
|
||||
color: #ffffff;
|
||||
font-weight: lighter;
|
||||
overflow-x: hidden;
|
||||
font-size: 100%;
|
||||
word-break: break-word; }
|
||||
|
||||
* {
|
||||
margin: 0;
|
||||
padding: 0; }
|
||||
|
||||
a,
|
||||
a * {
|
||||
color: #2b90d9; }
|
||||
|
||||
.meta {
|
||||
background-color: #39404d; }
|
||||
|
||||
.header {
|
||||
display: flex;
|
||||
background-size: cover;
|
||||
min-height: 8rem;
|
||||
color: #ffffff; }
|
||||
.header .header-left, .header .header-right {
|
||||
margin: 0; }
|
||||
.header .header-left {
|
||||
min-width: 8rem;
|
||||
position: relative;
|
||||
text-align: center;
|
||||
background: rgba(40, 44, 55, 0.3); }
|
||||
.header .header-left .avatar {
|
||||
width: 6rem;
|
||||
height: 6rem;
|
||||
position: relative;
|
||||
top: calc(50% - 3rem); }
|
||||
.header .header-right {
|
||||
flex-grow: 1;
|
||||
font-size: 0.9rem;
|
||||
padding: 0.9rem;
|
||||
background: rgba(40, 44, 55, 0.85); }
|
||||
.header .header-title {
|
||||
font-size: 1.3rem; }
|
||||
|
||||
.item {
|
||||
padding: 1rem;
|
||||
border-top: solid 1px #626d80; }
|
||||
|
||||
.item-content,
|
||||
.cw,
|
||||
.title {
|
||||
font-size: 1.1rem;
|
||||
font-weight: lighter; }
|
||||
|
||||
.item-content *, .cw {
|
||||
margin: 1rem 0;
|
||||
line-height: 1.4rem; }
|
||||
|
||||
.item-title,
|
||||
.date,
|
||||
.author-fullname {
|
||||
color: #9baec8;
|
||||
font-size: 0.9rem; }
|
||||
|
||||
.date {
|
||||
margin: 1rem 0 0 0;
|
||||
text-decoration: none;
|
||||
display: block; }
|
||||
|
||||
.date:hover {
|
||||
text-decoration: underline; }
|
||||
|
||||
.item-title {
|
||||
margin-bottom: 0.7rem; }
|
||||
|
||||
.author {
|
||||
display: flex;
|
||||
margin-bottom: 1rem; }
|
||||
|
||||
.author-info {
|
||||
margin: 0 1rem;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
justify-content: space-around; }
|
||||
.author-info .author-displayname {
|
||||
font-size: 1.2rem;
|
||||
color: #ffffff;
|
||||
text-decoration: none;
|
||||
display: block;
|
||||
font-weight: bolder; }
|
||||
|
||||
.avatar {
|
||||
width: 3rem;
|
||||
height: 3rem;
|
||||
border: none;
|
||||
border-radius: 10%; }
|
||||
.avatar.circular {
|
||||
border-radius: 100%; }
|
||||
|
||||
.enclosures {
|
||||
padding: 0.5em 0;
|
||||
display: flex;
|
||||
flex-wrap: wrap;
|
||||
flex-direction: row;
|
||||
overflow: hidden; }
|
||||
|
||||
.enclosure {
|
||||
display: flex;
|
||||
flex: 1 1 auto;
|
||||
width: 50%;
|
||||
border: none;
|
||||
max-height: 12rem; }
|
||||
|
||||
a.enclosure {
|
||||
cursor: zoom-in; }
|
||||
|
||||
.enclosure > * {
|
||||
flex: 1 1 auto;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
object-fit: cover; }
|
||||
|
||||
.meta .title {
|
||||
font-weight: bold; }
|
||||
|
||||
.hidden {
|
||||
display: none; }
|
||||
|
||||
.button {
|
||||
padding: 0.5rem 1rem;
|
||||
border: none;
|
||||
margin: 1rem;
|
||||
border-radius: 0.5rem;
|
||||
display: inline-block;
|
||||
text-decoration: none;
|
||||
background: #2b90d9;
|
||||
color: #ffffff;
|
||||
font-weight: 400;
|
||||
cursor: pointer;
|
||||
text-transform: uppercase;
|
||||
user-select: none; }
|
||||
|
||||
label.button {
|
||||
padding: 0.25rem 0.5rem;
|
||||
margin: 0.4rem;
|
||||
background: #626d80;
|
||||
color: #282c37;
|
||||
font-size: 0.8rem; }
|
||||
|
||||
input[type=checkbox] {
|
||||
position: absolute;
|
||||
left: -9999px; }
|
||||
|
||||
input[type=checkbox]:checked ~ label::after {
|
||||
content: " Less"; }
|
||||
|
||||
input[type=checkbox]:not(:checked) ~ label::after {
|
||||
content: " More"; }
|
||||
|
||||
input[type=checkbox]:not(:checked) ~ div {
|
||||
display: none; }
|
|
@ -1,170 +0,0 @@
|
|||
html,
|
||||
body {
|
||||
background-color: #ffffff;
|
||||
font-family: 'Roboto', roboto, Arial, sans-serif;
|
||||
color: #282c37;
|
||||
font-weight: lighter;
|
||||
overflow-x: hidden;
|
||||
font-size: 100%;
|
||||
word-break: break-word; }
|
||||
|
||||
* {
|
||||
margin: 0;
|
||||
padding: 0; }
|
||||
|
||||
a,
|
||||
a * {
|
||||
color: #2b90d9; }
|
||||
|
||||
.meta {
|
||||
background-color: #ecf0f4; }
|
||||
|
||||
.header {
|
||||
display: flex;
|
||||
background-size: cover;
|
||||
min-height: 8rem;
|
||||
color: #282c37; }
|
||||
.header .header-left, .header .header-right {
|
||||
margin: 0; }
|
||||
.header .header-left {
|
||||
min-width: 8rem;
|
||||
position: relative;
|
||||
text-align: center;
|
||||
background: rgba(255, 255, 255, 0.3); }
|
||||
.header .header-left .avatar {
|
||||
width: 6rem;
|
||||
height: 6rem;
|
||||
position: relative;
|
||||
top: calc(50% - 3rem); }
|
||||
.header .header-right {
|
||||
flex-grow: 1;
|
||||
font-size: 0.9rem;
|
||||
padding: 0.9rem;
|
||||
background: rgba(255, 255, 255, 0.85); }
|
||||
.header .header-title {
|
||||
font-size: 1.3rem; }
|
||||
|
||||
.item {
|
||||
padding: 1rem;
|
||||
border-top: solid 1px #8494ab; }
|
||||
|
||||
.item-content,
|
||||
.cw,
|
||||
.title {
|
||||
font-size: 1.1rem;
|
||||
font-weight: lighter; }
|
||||
|
||||
.item-content *, .cw {
|
||||
margin: 1rem 0;
|
||||
line-height: 1.4rem; }
|
||||
|
||||
.item-title,
|
||||
.date,
|
||||
.author-fullname {
|
||||
color: #90a1ba;
|
||||
font-size: 0.9rem; }
|
||||
|
||||
.date {
|
||||
margin: 1rem 0 0 0;
|
||||
text-decoration: none;
|
||||
display: block; }
|
||||
|
||||
.date:hover {
|
||||
text-decoration: underline; }
|
||||
|
||||
.item-title {
|
||||
margin-bottom: 0.7rem; }
|
||||
|
||||
.author {
|
||||
display: flex;
|
||||
margin-bottom: 1rem; }
|
||||
|
||||
.author-info {
|
||||
margin: 0 1rem;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
justify-content: space-around; }
|
||||
.author-info .author-displayname {
|
||||
font-size: 1.2rem;
|
||||
color: #282c37;
|
||||
text-decoration: none;
|
||||
display: block;
|
||||
font-weight: bolder; }
|
||||
|
||||
.avatar {
|
||||
width: 3rem;
|
||||
height: 3rem;
|
||||
border: none;
|
||||
border-radius: 10%; }
|
||||
.avatar.circular {
|
||||
border-radius: 100%; }
|
||||
|
||||
.enclosures {
|
||||
padding: 0.5em 0;
|
||||
display: flex;
|
||||
flex-wrap: wrap;
|
||||
flex-direction: row;
|
||||
overflow: hidden; }
|
||||
|
||||
.enclosure {
|
||||
display: flex;
|
||||
flex: 1 1 auto;
|
||||
width: 50%;
|
||||
border: none;
|
||||
max-height: 12rem; }
|
||||
|
||||
a.enclosure {
|
||||
cursor: zoom-in; }
|
||||
|
||||
.enclosure > * {
|
||||
flex: 1 1 auto;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
object-fit: cover; }
|
||||
|
||||
.meta .title {
|
||||
font-weight: bold; }
|
||||
|
||||
.hidden {
|
||||
display: none; }
|
||||
|
||||
.button {
|
||||
padding: 0.5rem 1rem;
|
||||
border: none;
|
||||
margin: 1rem;
|
||||
border-radius: 0.5rem;
|
||||
display: inline-block;
|
||||
text-decoration: none;
|
||||
background: #2b90d9;
|
||||
color: #282c37;
|
||||
font-weight: 400;
|
||||
cursor: pointer;
|
||||
text-transform: uppercase;
|
||||
user-select: none; }
|
||||
|
||||
label.button {
|
||||
padding: 0.25rem 0.5rem;
|
||||
margin: 0.4rem;
|
||||
background: #8494ab;
|
||||
color: #ffffff;
|
||||
font-size: 0.8rem; }
|
||||
|
||||
input[type=checkbox] {
|
||||
position: absolute;
|
||||
left: -9999px; }
|
||||
|
||||
input[type=checkbox]:checked ~ label::after {
|
||||
content: " Less"; }
|
||||
|
||||
input[type=checkbox]:not(:checked) ~ label::after {
|
||||
content: " More"; }
|
||||
|
||||
input[type=checkbox]:not(:checked) ~ div {
|
||||
display: none; }
|
||||
|
||||
.item-content,
|
||||
.description,
|
||||
.title,
|
||||
html,
|
||||
body {
|
||||
font-weight: normal; }
|
|
@ -1,5 +0,0 @@
|
|||
@import 'masto-light.scss';
|
||||
|
||||
@media (prefers-color-scheme: masto-dark) {
|
||||
@import 'masto-dark.scss';
|
||||
}
|
|
@ -1,196 +0,0 @@
|
|||
$bg: #fff !default;
|
||||
$bg2: darken($bg, 6) !default;
|
||||
$fg: #000 !default;
|
||||
$dim: lighten($fg, 50) !default;
|
||||
$dimmer: darken($bg2, 10) !default;
|
||||
$link: #09c !default;
|
||||
|
||||
html,
|
||||
body {
|
||||
background-color: $bg;
|
||||
font-family: 'Roboto', roboto, Arial, sans-serif;
|
||||
color: $fg;
|
||||
font-weight: lighter;
|
||||
overflow-x:hidden;
|
||||
font-size:100%;
|
||||
word-break: break-word;
|
||||
}
|
||||
|
||||
* {
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
a,
|
||||
a * {
|
||||
color: $link;
|
||||
}
|
||||
|
||||
.meta {
|
||||
//padding: 1rem;
|
||||
background-color: $bg2;
|
||||
}
|
||||
|
||||
.header{
|
||||
display:flex;
|
||||
background-size:cover;
|
||||
min-height:8rem;
|
||||
color:$fg;
|
||||
.header-left,.header-right{
|
||||
margin:0;
|
||||
}
|
||||
.header-left{
|
||||
min-width:8rem;
|
||||
position:relative;
|
||||
text-align:center;
|
||||
background:transparentize($bg,0.7);
|
||||
.avatar{
|
||||
width: 6rem;
|
||||
height: 6rem;
|
||||
position:relative;
|
||||
top:calc(50% - 3rem);
|
||||
}
|
||||
}
|
||||
.header-right{
|
||||
flex-grow:1;
|
||||
font-size:0.9rem;
|
||||
padding:0.9rem;
|
||||
background:transparentize($bg,0.15);
|
||||
}
|
||||
.header-title{
|
||||
font-size:1.3rem;
|
||||
}
|
||||
}
|
||||
|
||||
.item {
|
||||
padding: 1rem;
|
||||
border-top: solid 1px $dimmer;
|
||||
}
|
||||
|
||||
.item-content,
|
||||
.cw,
|
||||
.title {
|
||||
font-size: 1.1rem;
|
||||
font-weight:lighter;
|
||||
}
|
||||
|
||||
|
||||
.item-content *,.cw{
|
||||
margin: 1rem 0;
|
||||
line-height:1.4rem;
|
||||
}
|
||||
|
||||
.item-title,
|
||||
.date,
|
||||
.author-fullname {
|
||||
color: $dim;
|
||||
font-size: 0.9rem;
|
||||
}
|
||||
.date{
|
||||
margin: 1rem 0 0 0;
|
||||
text-decoration: none;
|
||||
display:block;
|
||||
}
|
||||
.date:hover{
|
||||
text-decoration: underline;
|
||||
}
|
||||
.item-title{
|
||||
margin-bottom:0.7rem;
|
||||
}
|
||||
|
||||
.author {
|
||||
display: flex;
|
||||
margin-bottom: 1rem;
|
||||
}
|
||||
|
||||
.author-info {
|
||||
margin: 0 1rem;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
justify-content: space-around;
|
||||
.author-displayname {
|
||||
font-size: 1.2rem;
|
||||
color: $fg;
|
||||
text-decoration: none;
|
||||
display: block;
|
||||
font-weight: bolder;
|
||||
}
|
||||
}
|
||||
|
||||
.avatar {
|
||||
width: 3rem;
|
||||
height: 3rem;
|
||||
border: none;
|
||||
border-radius: 10%;
|
||||
&.circular{
|
||||
border-radius: 100%;
|
||||
}
|
||||
}
|
||||
|
||||
.enclosures {
|
||||
padding: 0.5em 0;
|
||||
display: flex;
|
||||
flex-wrap:wrap;
|
||||
flex-direction: row;
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
.enclosure{
|
||||
display:flex;
|
||||
flex: 1 1 auto;
|
||||
width:50%;
|
||||
border: none;
|
||||
max-height: 12rem;
|
||||
}
|
||||
a.enclosure{
|
||||
cursor: zoom-in;
|
||||
}
|
||||
.enclosure>*{
|
||||
flex: 1 1 auto;
|
||||
width:100%;
|
||||
height:100%;
|
||||
object-fit: cover;
|
||||
}
|
||||
.meta .title{
|
||||
font-weight:bold;
|
||||
}
|
||||
.hidden{
|
||||
display:none;
|
||||
}
|
||||
.button{
|
||||
padding: 0.5rem 1rem;
|
||||
border: none;
|
||||
margin: 1rem;
|
||||
border-radius: 0.5rem;
|
||||
display: inline-block;
|
||||
text-decoration: none;
|
||||
background:$link;
|
||||
color:$fg;
|
||||
font-weight:400;
|
||||
cursor: pointer;
|
||||
text-transform: uppercase;
|
||||
user-select: none;
|
||||
}
|
||||
label.button{
|
||||
padding: 0.25rem 0.5rem;
|
||||
margin:0.4rem;
|
||||
background:$dimmer;
|
||||
color:$bg;
|
||||
font-size:0.8rem;
|
||||
}
|
||||
|
||||
// checkbox hack stuff
|
||||
input[type=checkbox] {
|
||||
position: absolute;
|
||||
left: -9999px;
|
||||
}
|
||||
input[type=checkbox]:checked ~ label::after{
|
||||
content:" Less";
|
||||
}
|
||||
input[type=checkbox]:not(:checked) ~ label::after{
|
||||
content:" More";
|
||||
}
|
||||
|
||||
input[type=checkbox]:not(:checked) ~ div{
|
||||
display:none;
|
||||
}
|
|
@ -1,10 +0,0 @@
|
|||
@import 'mastodon-vars.scss';
|
||||
|
||||
$bg: $darkest;
|
||||
$bg2: mix($darkest,$lighter,85%);
|
||||
$fg: $white;
|
||||
$dim: $lighter;
|
||||
$dimmer: mix($darkest,$lighter,50%);
|
||||
$link: $vibrant;
|
||||
|
||||
@import 'masto-base.scss';
|
|
@ -1,18 +0,0 @@
|
|||
@import 'mastodon-vars.scss';
|
||||
|
||||
$bg: $white ;
|
||||
$bg2: mix($lightest,$white);
|
||||
$fg: $darkest;
|
||||
$dim: mix($lighter,$darkest,90%);
|
||||
$dimmer: mix($lighter,$darkest,80%);
|
||||
$link: $vibrant;
|
||||
|
||||
@import 'masto-base.scss';
|
||||
|
||||
.item-content,
|
||||
.description,
|
||||
.title,
|
||||
html,
|
||||
body {
|
||||
font-weight:normal;
|
||||
}
|
|
@ -1,8 +0,0 @@
|
|||
$darkest: #282c37 !default; // darkest
|
||||
$lightest: #d9e1e8 !default; // lightest
|
||||
$lighter: #9baec8 !default; // lighter
|
||||
$vibrant: #2b90d9 !default; // vibrant
|
||||
$white: #ffffff !default; // white
|
||||
$error: #df405a !default; // error red
|
||||
$succ: #79bd9a !default; // succ green
|
||||
$black: #000000 !default; // black
|
|
@ -1,47 +0,0 @@
|
|||
<body class="embed">
|
||||
<div class="activity-stream activity-stream-headless">
|
||||
<div class="entry entry-reblog h-cite">
|
||||
<div class="pre-header">
|
||||
<div class="pre-header__icon">
|
||||
<i class="fa fa-retweet fa-fw"></i>
|
||||
</div>
|
||||
<span>
|
||||
<a class="status__display-name muted" href="https://octodon.social/@fenwick67"><strong class="emojify">fenwick67 <img draggable="false" class="emojione" alt="🦆" src="/emoji/1f986.svg"></strong>
|
||||
</a>boosted
|
||||
</span>
|
||||
</div>
|
||||
<div class="detailed-status masto-light">
|
||||
<a class="detailed-status__display-name p-author h-card" target="_blank" rel="noopener" href="https://social.tchncs.de/@muninnherself"><div>
|
||||
<div class="avatar">
|
||||
<img alt="" class="u-photo" src="https://assets.octodon.social/accounts/avatars/000/018/289/original/eb6b32e85f8606b4.jpg" width="48" height="48">
|
||||
</div>
|
||||
</div>
|
||||
<span class="display-name">
|
||||
<strong class="p-name emojify">Jack Fraser</strong>
|
||||
<span>@muninnherself@social.tchncs.de</span>
|
||||
</span>
|
||||
</a><div class="status__content p-name emojify"><div class="e-content" style="display: block; direction: ltr" lang="es"><p><a href="https://social.tchncs.de/tags/dailymegalith">#<span>DailyMegalith</span></a> Corrimony chambered cairn <a href="https://social.tchncs.de/tags/highland">#<span>Highland</span></a> <a href="https://social.tchncs.de/tags/scotland">#<span>Scotland</span></a> (2009) <a href="https://social.tchncs.de/media/MxqONSPOUvoExt4uVPM"><span class="invisible">https://</span><span class="ellipsis">social.tchncs.de/media/MxqONSP</span><span class="invisible">OUvoExt4uVPM</span></a></p></div></div>
|
||||
<div class="detailed-status__attachments">
|
||||
<div class="status__attachments__inner">
|
||||
<div class="media-item">
|
||||
<a style="background-image: url(https://assets.octodon.social/media_attachments/files/000/110/813/original/cbc5fbacac3f24d1.jpg)" target="_blank" rel="noopener" class="u-photo" href="https://social.tchncs.de/system/media_attachments/files/000/103/988/original/cbc5fbacac3f24d1.jpg"></a></div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<div class="detailed-status__meta">
|
||||
<data class="dt-published" value="2017-04-29T19:52:16+00:00"></data>
|
||||
<a class="detailed-status__datetime u-url u-uid" target="_blank" rel="noopener" href="https://social.tchncs.de/users/muninnherself/updates/69203"><span><time datetime="2017-04-29T19:52:16Z" data-local="time" data-format="%b %d, %Y, %H:%M" title="April 29, 2017 at 2:52pm CST" data-localized="true">Apr 29, 2017, 14:52</time></span>
|
||||
</a>·
|
||||
<span><i class="fa fa-retweet"></i><span>1</span></span>
|
||||
·
|
||||
<span><i class="fa fa-star"></i><span>1</span></span>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
</body>
|
534
test/result.html
534
test/result.html
|
@ -1,534 +0,0 @@
|
|||
<html>
|
||||
<head>
|
||||
<meta charset="UTF-8"></meta>
|
||||
<style type="text/css"></style>
|
||||
|
||||
|
||||
<link rel="stylesheet" href="/masto-dark.css"></link>
|
||||
|
||||
|
||||
|
||||
</head>
|
||||
<body>
|
||||
|
||||
<div class="meta">
|
||||
|
||||
<div class="header" style="">
|
||||
<a class="header-left" target="_top" href="https://octodon.social/@fenwick67">
|
||||
|
||||
<img class="avatar circular" src="https://assets.octodon.social/accounts/avatars/000/008/871/original/d5281ad9c6c7401d.jpg"></img>
|
||||
|
||||
</a>
|
||||
<div class="description header-right">
|
||||
<a target="_top" href="https://octodon.social/@fenwick67">
|
||||
fenwick 🦆
|
||||
</a>
|
||||
<br>
|
||||
Engineer, Developer, Person. http://fenwick.pizza
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="container">
|
||||
|
||||
|
||||
|
||||
|
||||
<div class="item">
|
||||
|
||||
<div class="item-title"> fenwick67 shared a status by cypnk@mastodon.social </div>
|
||||
|
||||
<div class="author">
|
||||
<a target="_top" class="avatar" href="https://mastodon.social/users/cypnk">
|
||||
<img class="avatar" src="https://assets.octodon.social/accounts/avatars/000/020/009/original/086ced36687bf000.png"/>
|
||||
</a>
|
||||
<div class="author-info">
|
||||
<a target="_top" class="author-displayname" href="https://mastodon.social/users/cypnk"> r҉ustic cy͠be̸rpu̵nk🤠🤖 </a>
|
||||
<div class="author-fullname"> cypnk@mastodon.social </div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="item-content">
|
||||
<p>So curl parrot.live is a thing</p><p>( Via <a target="_top"href="https://twitter.com/darksim905/status/977256948918874112" rel="nofollow noopener" target="_blank"><span class="invisible">https://</span><span class="ellipsis">twitter.com/darksim905/status/</span><span class="invisible">977256948918874112</span></a> )</p>
|
||||
</div>
|
||||
|
||||
<div class="enclosures">
|
||||
|
||||
<a target="_top" class="enclosure" href="https://assets.octodon.social/media_attachments/files/001/460/576/original/a3f046541a1be4cb.mp4" >
|
||||
|
||||
<video autoplay loop muted src="https://assets.octodon.social/media_attachments/files/001/460/576/original/a3f046541a1be4cb.mp4"/>
|
||||
|
||||
</a>
|
||||
|
||||
</div>
|
||||
|
||||
<div class="date">16 hours ago</div>
|
||||
</div>
|
||||
|
||||
<div class="item">
|
||||
|
||||
<div class="item-title"> fenwick67 shared a status by LinuxSocist@icosahedron.website </div>
|
||||
|
||||
<div class="author">
|
||||
<a target="_top" class="avatar" href="https://icosahedron.website/users/LinuxSocist">
|
||||
<img class="avatar" src="https://assets.octodon.social/accounts/avatars/000/002/386/original/cd9c7aa648d840c6.png"/>
|
||||
</a>
|
||||
<div class="author-info">
|
||||
<a target="_top" class="author-displayname" href="https://icosahedron.website/users/LinuxSocist"> Linux Socialist </a>
|
||||
<div class="author-fullname"> LinuxSocist@icosahedron.website </div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="item-content">
|
||||
<p>'Why we choose Godot Engine – Rock Milk'<br><a target="_top"href="https://medium.com/@rockmilkgames/why-godot-engine-e0d4736d6eb0" rel="nofollow noopener" target="_blank"><span class="invisible">https://</span><span class="ellipsis">medium.com/@rockmilkgames/why-</span><span class="invisible">godot-engine-e0d4736d6eb0</span></a></p>
|
||||
</div>
|
||||
|
||||
<div class="date">16 hours ago</div>
|
||||
</div>
|
||||
|
||||
<div class="item">
|
||||
|
||||
<div class="item-title"> fenwick67 shared a status by meirlbot@mastodon.social </div>
|
||||
|
||||
<div class="author">
|
||||
<a target="_top" class="avatar" href="https://mastodon.social/users/meirlbot">
|
||||
<img class="avatar" src="https://assets.octodon.social/accounts/avatars/000/091/213/original/b214dff45bb239f3.jpg"/>
|
||||
</a>
|
||||
<div class="author-info">
|
||||
<a target="_top" class="author-displayname" href="https://mastodon.social/users/meirlbot"> me irl </a>
|
||||
<div class="author-fullname"> meirlbot@mastodon.social </div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="item-content">
|
||||
<p>me irl <a target="_top"href="https://redd.it/86nbzr" rel="nofollow noopener" target="_blank"><span class="invisible">https://</span><span class="">redd.it/86nbzr</span><span class="invisible"></span></a></p>
|
||||
</div>
|
||||
|
||||
<div class="enclosures">
|
||||
|
||||
<a target="_top" class="enclosure" href="https://assets.octodon.social/media_attachments/files/001/460/499/original/3231efe4233d15bd.png" >
|
||||
|
||||
<img src="https://assets.octodon.social/media_attachments/files/001/460/499/original/3231efe4233d15bd.png"/>
|
||||
|
||||
</a>
|
||||
|
||||
</div>
|
||||
|
||||
<div class="date">16 hours ago</div>
|
||||
</div>
|
||||
|
||||
<div class="item">
|
||||
|
||||
<div class="item-title"> fenwick67 shared a status by natecull@mastodon.social </div>
|
||||
|
||||
<div class="author">
|
||||
<a target="_top" class="avatar" href="https://mastodon.social/users/natecull">
|
||||
<img class="avatar" src="https://assets.octodon.social/accounts/avatars/000/004/022/original/5e674cac327b3746.jpg"/>
|
||||
</a>
|
||||
<div class="author-info">
|
||||
<a target="_top" class="author-displayname" href="https://mastodon.social/users/natecull"> Nate Cull </a>
|
||||
<div class="author-fullname"> natecull@mastodon.social </div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="item-content">
|
||||
<p>Medium needs to stop doing this, or people need to stop using Medium.</p><p>It's a website that hosts blogs.</p><p>That you read.</p><p>it doesn't need your Fooglebaceook account.</p>
|
||||
</div>
|
||||
|
||||
<div class="enclosures">
|
||||
|
||||
<a target="_top" class="enclosure" href="https://assets.octodon.social/media_attachments/files/001/459/532/original/6ae62ea552e0115b.png" >
|
||||
|
||||
<img src="https://assets.octodon.social/media_attachments/files/001/459/532/original/6ae62ea552e0115b.png"/>
|
||||
|
||||
</a>
|
||||
|
||||
</div>
|
||||
|
||||
<div class="date">16 hours ago</div>
|
||||
</div>
|
||||
|
||||
<div class="item">
|
||||
|
||||
<div class="item-title"> fenwick67 shared a status by tom@slime.global </div>
|
||||
|
||||
<div class="author">
|
||||
<a target="_top" class="avatar" href="https://slime.global/users/tom">
|
||||
<img class="avatar" src="https://assets.octodon.social/accounts/avatars/000/005/490/original/a9f04627c77b06db.gif"/>
|
||||
</a>
|
||||
<div class="author-info">
|
||||
<a target="_top" class="author-displayname" href="https://slime.global/users/tom"> switched-on tom </a>
|
||||
<div class="author-fullname"> tom@slime.global </div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="item-content">
|
||||
<p>fuck you</p>
|
||||
</div>
|
||||
|
||||
<div class="enclosures">
|
||||
|
||||
<a target="_top" class="enclosure" href="https://assets.octodon.social/media_attachments/files/001/456/443/original/d4af7e0451af8676.mp4" >
|
||||
|
||||
<video autoplay loop muted src="https://assets.octodon.social/media_attachments/files/001/456/443/original/d4af7e0451af8676.mp4"/>
|
||||
|
||||
</a>
|
||||
|
||||
</div>
|
||||
|
||||
<div class="date">17 hours ago</div>
|
||||
</div>
|
||||
|
||||
<div class="item">
|
||||
|
||||
<div class="item-title"> fenwick67 shared a status by mcmoots@a.weirder.earth </div>
|
||||
|
||||
<div class="author">
|
||||
<a target="_top" class="avatar" href="https://a.weirder.earth/users/mcmoots">
|
||||
<img class="avatar" src="https://assets.octodon.social/accounts/avatars/000/016/718/original/ca9a8d20edf9f2de.jpg"/>
|
||||
</a>
|
||||
<div class="author-info">
|
||||
<a target="_top" class="author-displayname" href="https://a.weirder.earth/users/mcmoots"> 👀🌲 </a>
|
||||
<div class="author-fullname"> mcmoots@a.weirder.earth </div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="item-content">
|
||||
<p>From yesterday. Even with a surprise snow it's still the most wonderful time of the year.</p>
|
||||
</div>
|
||||
|
||||
<div class="enclosures">
|
||||
|
||||
<a target="_top" class="enclosure" href="https://assets.octodon.social/media_attachments/files/001/460/171/original/fcad285b55062f29.jpg" >
|
||||
|
||||
<img src="https://assets.octodon.social/media_attachments/files/001/460/171/original/fcad285b55062f29.jpg"/>
|
||||
|
||||
</a>
|
||||
|
||||
</div>
|
||||
|
||||
<div class="date">18 hours ago</div>
|
||||
</div>
|
||||
|
||||
<div class="item">
|
||||
|
||||
<div class="author">
|
||||
<a target="_top" class="avatar" href="https://octodon.social/users/fenwick67">
|
||||
<img class="avatar" src="https://assets.octodon.social/accounts/avatars/000/008/871/original/d5281ad9c6c7401d.jpg"/>
|
||||
</a>
|
||||
<div class="author-info">
|
||||
<a target="_top" class="author-displayname" href="https://octodon.social/users/fenwick67"> fenwick 🦆 </a>
|
||||
<div class="author-fullname"> fenwick67@octodon.social </div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="item-content">
|
||||
<p><span class="h-card"><a target="_top"href="https://kitty.town/@GinnyMcQueen" class="u-url mention">@<span>GinnyMcQueen</span></a></span> these are so geometric I thought it was some plastic thing when I scrolled past</p>
|
||||
</div>
|
||||
|
||||
<div class="date">18 hours ago</div>
|
||||
</div>
|
||||
|
||||
<div class="item">
|
||||
|
||||
<div class="item-title"> fenwick67 shared a status by fillertrack@slime.global </div>
|
||||
|
||||
<div class="author">
|
||||
<a target="_top" class="avatar" href="https://slime.global/users/fillertrack">
|
||||
<img class="avatar" src="https://assets.octodon.social/accounts/avatars/000/007/118/original/9e846c957d91a7a4.png"/>
|
||||
</a>
|
||||
<div class="author-info">
|
||||
<a target="_top" class="author-displayname" href="https://slime.global/users/fillertrack"> 🐦birdtom🐦 </a>
|
||||
<div class="author-fullname"> fillertrack@slime.global </div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="item-content">
|
||||
<p>I am become death, destroyer of worlds.</p>
|
||||
</div>
|
||||
|
||||
<div class="enclosures">
|
||||
|
||||
<a target="_top" class="enclosure" href="https://assets.octodon.social/media_attachments/files/001/456/618/original/c7ab2c504af72a36.mp4" >
|
||||
|
||||
<video autoplay loop muted src="https://assets.octodon.social/media_attachments/files/001/456/618/original/c7ab2c504af72a36.mp4"/>
|
||||
|
||||
</a>
|
||||
|
||||
</div>
|
||||
|
||||
<div class="date">20 hours ago</div>
|
||||
</div>
|
||||
|
||||
<div class="item">
|
||||
|
||||
<div class="author">
|
||||
<a target="_top" class="avatar" href="https://octodon.social/users/fenwick67">
|
||||
<img class="avatar" src="https://assets.octodon.social/accounts/avatars/000/008/871/original/d5281ad9c6c7401d.jpg"/>
|
||||
</a>
|
||||
<div class="author-info">
|
||||
<a target="_top" class="author-displayname" href="https://octodon.social/users/fenwick67"> fenwick 🦆 </a>
|
||||
<div class="author-fullname"> fenwick67@octodon.social </div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="item-content">
|
||||
<p><span class="h-card"><a target="_top"href="https://cybre.space/@zigg" class="u-url mention">@<span>zigg</span></a></span> node's FS module on Windows is buggy enough that I recommend using the graceful-fs module in its place when you can</p>
|
||||
</div>
|
||||
|
||||
<div class="date">1 day ago</div>
|
||||
</div>
|
||||
|
||||
<div class="item">
|
||||
|
||||
<div class="author">
|
||||
<a target="_top" class="avatar" href="https://octodon.social/users/fenwick67">
|
||||
<img class="avatar" src="https://assets.octodon.social/accounts/avatars/000/008/871/original/d5281ad9c6c7401d.jpg"/>
|
||||
</a>
|
||||
<div class="author-info">
|
||||
<a target="_top" class="author-displayname" href="https://octodon.social/users/fenwick67"> fenwick 🦆 </a>
|
||||
<div class="author-fullname"> fenwick67@octodon.social </div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="item-content">
|
||||
<p><span class="h-card"><a target="_top"href="https://octodon.social/@kingu_platypus_gidora" class="u-url mention">@<span>kingu_platypus_gidora</span></a></span> me tbh</p>
|
||||
</div>
|
||||
|
||||
<div class="date">1 day ago</div>
|
||||
</div>
|
||||
|
||||
<div class="item">
|
||||
|
||||
<div class="item-title"> fenwick67 shared a status by kingu_platypus_gidora </div>
|
||||
|
||||
<div class="author">
|
||||
<a target="_top" class="avatar" href="https://octodon.social/users/kingu_platypus_gidora">
|
||||
<img class="avatar" src="https://assets.octodon.social/accounts/avatars/000/001/586/original/751443ed5e9bea89.gif"/>
|
||||
</a>
|
||||
<div class="author-info">
|
||||
<a target="_top" class="author-displayname" href="https://octodon.social/users/kingu_platypus_gidora"> Anarkingu Gidora </a>
|
||||
<div class="author-fullname"> kingu_platypus_gidora@octodon.social </div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="item-content">
|
||||
<p>RT <span class="h-card"><a target="_top"href="https://octodon.social/@kingu_platypus_gidora" class="u-url mention">@<span>kingu_platypus_gidora</span></a></span> .</p>
|
||||
</div>
|
||||
|
||||
<div class="enclosures">
|
||||
|
||||
<a target="_top" class="enclosure" href="https://assets.octodon.social/media_attachments/files/001/457/875/original/f2b73debb45d360b.jpg" >
|
||||
|
||||
<img src="https://assets.octodon.social/media_attachments/files/001/457/875/original/f2b73debb45d360b.jpg"/>
|
||||
|
||||
</a>
|
||||
|
||||
</div>
|
||||
|
||||
<div class="date">1 day ago</div>
|
||||
</div>
|
||||
|
||||
<div class="item">
|
||||
|
||||
<div class="author">
|
||||
<a target="_top" class="avatar" href="https://octodon.social/users/fenwick67">
|
||||
<img class="avatar" src="https://assets.octodon.social/accounts/avatars/000/008/871/original/d5281ad9c6c7401d.jpg"/>
|
||||
</a>
|
||||
<div class="author-info">
|
||||
<a target="_top" class="author-displayname" href="https://octodon.social/users/fenwick67"> fenwick 🦆 </a>
|
||||
<div class="author-fullname"> fenwick67@octodon.social </div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="item-content">
|
||||
<p><span class="h-card"><a target="_top"href="https://meow.social/@Mycroft" class="u-url mention">@<span>Mycroft</span></a></span> the starter set is legit, it's easy to pick up and a surprising amount of content. Also, the SRD is free to download and there are free adventures on DM's guild.</p>
|
||||
</div>
|
||||
|
||||
<div class="date">1 day ago</div>
|
||||
</div>
|
||||
|
||||
<div class="item">
|
||||
|
||||
<div class="author">
|
||||
<a target="_top" class="avatar" href="https://octodon.social/users/fenwick67">
|
||||
<img class="avatar" src="https://assets.octodon.social/accounts/avatars/000/008/871/original/d5281ad9c6c7401d.jpg"/>
|
||||
</a>
|
||||
<div class="author-info">
|
||||
<a target="_top" class="author-displayname" href="https://octodon.social/users/fenwick67"> fenwick 🦆 </a>
|
||||
<div class="author-fullname"> fenwick67@octodon.social </div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="item-content">
|
||||
<p><span class="h-card"><a target="_top"href="https://niu.moe/@phenethylamine" class="u-url mention">@<span>phenethylamine</span></a></span> vlc?</p>
|
||||
</div>
|
||||
|
||||
<div class="date">1 day ago</div>
|
||||
</div>
|
||||
|
||||
<div class="item">
|
||||
|
||||
<div class="author">
|
||||
<a target="_top" class="avatar" href="https://octodon.social/users/fenwick67">
|
||||
<img class="avatar" src="https://assets.octodon.social/accounts/avatars/000/008/871/original/d5281ad9c6c7401d.jpg"/>
|
||||
</a>
|
||||
<div class="author-info">
|
||||
<a target="_top" class="author-displayname" href="https://octodon.social/users/fenwick67"> fenwick 🦆 </a>
|
||||
<div class="author-fullname"> fenwick67@octodon.social </div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="item-content">
|
||||
<p><span class="h-card"><a target="_top"href="https://octodon.social/@Shalazah" class="u-url mention">@<span>Shalazah</span></a></span> welcome y'all</p>
|
||||
</div>
|
||||
|
||||
<div class="date">1 day ago</div>
|
||||
</div>
|
||||
|
||||
<div class="item">
|
||||
|
||||
<div class="item-title"> fenwick67 shared a status by plsburydoughboy@kitty.town </div>
|
||||
|
||||
<div class="author">
|
||||
<a target="_top" class="avatar" href="https://kitty.town/users/plsburydoughboy">
|
||||
<img class="avatar" src="https://assets.octodon.social/accounts/avatars/000/075/768/original/90d34987b9fdd5b8.jpg"/>
|
||||
</a>
|
||||
<div class="author-info">
|
||||
<a target="_top" class="author-displayname" href="https://kitty.town/users/plsburydoughboy"> pls pet the kitty db </a>
|
||||
<div class="author-fullname"> plsburydoughboy@kitty.town </div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="item-content">
|
||||
<p>Marvel: “Infinity War is the most ambitious crossover event in history.”</p><p>Me, fighting off the bad vibes of the world:</p>
|
||||
</div>
|
||||
|
||||
<div class="enclosures">
|
||||
|
||||
<a target="_top" class="enclosure" href="https://assets.octodon.social/media_attachments/files/001/455/106/original/3a7f27a898dfad51.jpg" >
|
||||
|
||||
<img src="https://assets.octodon.social/media_attachments/files/001/455/106/original/3a7f27a898dfad51.jpg"/>
|
||||
|
||||
</a>
|
||||
|
||||
<a target="_top" class="enclosure" href="https://assets.octodon.social/media_attachments/files/001/455/107/original/b2c15e091ae118b0.jpg" >
|
||||
|
||||
<img src="https://assets.octodon.social/media_attachments/files/001/455/107/original/b2c15e091ae118b0.jpg"/>
|
||||
|
||||
</a>
|
||||
|
||||
<a target="_top" class="enclosure" href="https://assets.octodon.social/media_attachments/files/001/455/108/original/87d8b73ad85faf44.jpg" >
|
||||
|
||||
<img src="https://assets.octodon.social/media_attachments/files/001/455/108/original/87d8b73ad85faf44.jpg"/>
|
||||
|
||||
</a>
|
||||
|
||||
<a target="_top" class="enclosure" href="https://assets.octodon.social/media_attachments/files/001/455/109/original/a248e41cfee2a4de.jpg" >
|
||||
|
||||
<img src="https://assets.octodon.social/media_attachments/files/001/455/109/original/a248e41cfee2a4de.jpg"/>
|
||||
|
||||
</a>
|
||||
|
||||
</div>
|
||||
|
||||
<div class="date">1 day ago</div>
|
||||
</div>
|
||||
|
||||
<div class="item">
|
||||
|
||||
<div class="author">
|
||||
<a target="_top" class="avatar" href="https://octodon.social/users/fenwick67">
|
||||
<img class="avatar" src="https://assets.octodon.social/accounts/avatars/000/008/871/original/d5281ad9c6c7401d.jpg"/>
|
||||
</a>
|
||||
<div class="author-info">
|
||||
<a target="_top" class="author-displayname" href="https://octodon.social/users/fenwick67"> fenwick 🦆 </a>
|
||||
<div class="author-fullname"> fenwick67@octodon.social </div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="item-content">
|
||||
<p><span class="h-card"><a target="_top"href="https://mastodon.social/@idesofmerch" class="u-url mention">@<span>idesofmerch</span></a></span> a radar chart would work great for this imo</p>
|
||||
</div>
|
||||
|
||||
<div class="date">1 day ago</div>
|
||||
</div>
|
||||
|
||||
<div class="item">
|
||||
|
||||
<div class="item-title"> fenwick67 shared a status by weird_hell@cybre.space </div>
|
||||
|
||||
<div class="author">
|
||||
<a target="_top" class="avatar" href="https://cybre.space/users/weird_hell">
|
||||
<img class="avatar" src="https://assets.octodon.social/accounts/avatars/000/064/532/original/bc18522f40c53be1.png"/>
|
||||
</a>
|
||||
<div class="author-info">
|
||||
<a target="_top" class="author-displayname" href="https://cybre.space/users/weird_hell"> Display Neam </a>
|
||||
<div class="author-fullname"> weird_hell@cybre.space </div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="item-content">
|
||||
<p>if you can't be normal, stop trying to be normal.</p><p>Be weird. Go hard. Don't follow the advice.</p>
|
||||
</div>
|
||||
|
||||
<div class="date">2 days ago</div>
|
||||
</div>
|
||||
|
||||
<div class="item">
|
||||
|
||||
<div class="item-title"> fenwick67 shared a status by irisjaycomics@mastodon.social </div>
|
||||
|
||||
<div class="author">
|
||||
<a target="_top" class="avatar" href="https://mastodon.social/users/irisjaycomics">
|
||||
<img class="avatar" src="https://assets.octodon.social/accounts/avatars/000/003/021/original/5af47bfdcd870f0f.jpg"/>
|
||||
</a>
|
||||
<div class="author-info">
|
||||
<a target="_top" class="author-displayname" href="https://mastodon.social/users/irisjaycomics"> ✨Iris Jay✨ </a>
|
||||
<div class="author-fullname"> irisjaycomics@mastodon.social </div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="item-content">
|
||||
<p>crossedwires.irisjay.net/?comic=02-106 NEW CROSSED WIRES UPDATE IS LIVE! It’s showdown time and nobody’s playing fair. <a target="_top"href="https://mastodon.social/tags/cyberpunk" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>cyberpunk</span></a> <a target="_top"href="https://mastodon.social/tags/webcomic" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>webcomic</span></a> <a target="_top"href="https://mastodon.social/tags/queercomics" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>queercomics</span></a> </p><p>Read from the beginning here: <a target="_top"href="http://crossedwires.irisjay.net/?comic=001" rel="nofollow noopener" target="_blank"><span class="invisible">http://</span><span class="ellipsis">crossedwires.irisjay.net/?comi</span><span class="invisible">c=001</span></a> Buy the book here: <a target="_top"href="http://oreillyjay.tictail.com/product/crossed-wires-volume-1" rel="nofollow noopener" target="_blank"><span class="invisible">http://</span><span class="ellipsis">oreillyjay.tictail.com/product</span><span class="invisible">/crossed-wires-volume-1</span></a> … Send me a tip here: <a target="_top"href="http://ko-fi.com/irisjay" rel="nofollow noopener" target="_blank"><span class="invisible">http://</span><span class="">ko-fi.com/irisjay</span><span class="invisible"></span></a></p>
|
||||
</div>
|
||||
|
||||
<div class="enclosures">
|
||||
|
||||
<a target="_top" class="enclosure" href="https://assets.octodon.social/media_attachments/files/001/444/174/original/8c0612168aa67f3b.jpg" >
|
||||
|
||||
<img src="https://assets.octodon.social/media_attachments/files/001/444/174/original/8c0612168aa67f3b.jpg"/>
|
||||
|
||||
</a>
|
||||
|
||||
</div>
|
||||
|
||||
<div class="date">2 days ago</div>
|
||||
</div>
|
||||
|
||||
<div class="item">
|
||||
|
||||
<div class="item-title"> fenwick67 shared a status by omanreagan@scholar.social </div>
|
||||
|
||||
<div class="author">
|
||||
<a target="_top" class="avatar" href="https://scholar.social/users/omanreagan">
|
||||
<img class="avatar" src="https://assets.octodon.social/accounts/avatars/000/061/431/original/fc6afa77dfda97a6.png"/>
|
||||
</a>
|
||||
<div class="author-info">
|
||||
<a target="_top" class="author-displayname" href="https://scholar.social/users/omanreagan"> Michael 🚀 </a>
|
||||
<div class="author-fullname"> omanreagan@scholar.social </div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="item-content">
|
||||
<p>Most importantly, stop putting institutional events on Facebook, stop using it at universities, stop making participation in Facebook mandatory through your institutional, organization, and activist roles. You can be online, and social, and connected without supporting Facebook.</p>
|
||||
</div>
|
||||
|
||||
<div class="date">2 days ago</div>
|
||||
</div>
|
||||
|
||||
<div class="item">
|
||||
|
||||
<div class="item-title"> fenwick67 shared a status by elomatreb@glitch.social </div>
|
||||
|
||||
<div class="author">
|
||||
<a target="_top" class="avatar" href="https://glitch.social/users/elomatreb">
|
||||
<img class="avatar" src="https://assets.octodon.social/accounts/avatars/000/076/355/original/0d8540c1ddb5b8f0.png"/>
|
||||
</a>
|
||||
<div class="author-info">
|
||||
<a target="_top" class="author-displayname" href="https://glitch.social/users/elomatreb"> elomatreb 🐟 </a>
|
||||
<div class="author-fullname"> elomatreb@glitch.social </div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="item-content">
|
||||
<p>Decades of programming language research destroyed in one sick own by a rotating coyote</p>
|
||||
</div>
|
||||
|
||||
<div class="date">2 days ago</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</body>
|
||||
|
||||
</html>
|
721
test/sample.atom
721
test/sample.atom
|
@ -1,721 +0,0 @@
|
|||
<?xml version="1.0"?>
|
||||
<feed xmlns="http://www.w3.org/2005/Atom" xmlns:thr="http://purl.org/syndication/thread/1.0" xmlns:activity="http://activitystrea.ms/spec/1.0/" xmlns:poco="http://portablecontacts.net/spec/1.0" xmlns:media="http://purl.org/syndication/atommedia" xmlns:ostatus="http://ostatus.org/schema/1.0" xmlns:mastodon="http://mastodon.social/schema/1.0">
|
||||
<id>https://octodon.social/users/fenwick67.atom</id>
|
||||
<title>fenwick 🦆</title>
|
||||
<subtitle>Engineer, Developer, Person. http://fenwick.pizza</subtitle>
|
||||
<updated>2018-03-23T15:09:56Z</updated>
|
||||
<logo>https://assets.octodon.social/accounts/avatars/000/008/871/original/d5281ad9c6c7401d.jpg</logo>
|
||||
<author>
|
||||
<id>https://octodon.social/users/fenwick67</id>
|
||||
<activity:object-type>http://activitystrea.ms/schema/1.0/person</activity:object-type>
|
||||
<uri>https://octodon.social/users/fenwick67</uri>
|
||||
<name>fenwick67</name>
|
||||
<email>fenwick67@octodon.social</email>
|
||||
<summary type="html"><p>Engineer, Developer, Person. <a href="http://fenwick.pizza" rel="nofollow noopener" target="_blank"><span class="invisible">http://</span><span class="">fenwick.pizza</span><span class="invisible"></span></a></p></summary>
|
||||
<link rel="alternate" type="text/html" href="https://octodon.social/@fenwick67"/>
|
||||
<link rel="avatar" type="image/jpeg" media:width="120" media:height="120" href="https://assets.octodon.social/accounts/avatars/000/008/871/original/d5281ad9c6c7401d.jpg"/>
|
||||
<poco:preferredUsername>fenwick67</poco:preferredUsername>
|
||||
<poco:displayName>fenwick 🦆</poco:displayName>
|
||||
<poco:note>Engineer, Developer, Person. http://fenwick.pizza</poco:note>
|
||||
<mastodon:scope>public</mastodon:scope>
|
||||
</author>
|
||||
<link rel="alternate" type="text/html" href="https://octodon.social/@fenwick67"/>
|
||||
<link rel="self" type="application/atom+xml" href="https://octodon.social/users/fenwick67.atom"/>
|
||||
<link rel="next" type="application/atom+xml" href="https://octodon.social/users/fenwick67.atom?max_id=400111"/>
|
||||
<link rel="hub" href="https://octodon.social/api/push"/>
|
||||
<link rel="salmon" href="https://octodon.social/api/salmon/8871"/>
|
||||
<entry>
|
||||
<id>https://octodon.social/users/fenwick67/statuses/99736382143914398/activity</id>
|
||||
<published>2018-03-24T01:53:36Z</published>
|
||||
<updated>2018-03-24T01:53:36Z</updated>
|
||||
<title>fenwick67 shared a status by cypnk@mastodon.social</title>
|
||||
<activity:object-type>http://activitystrea.ms/schema/1.0/activity</activity:object-type>
|
||||
<activity:verb>http://activitystrea.ms/schema/1.0/share</activity:verb>
|
||||
<activity:object>
|
||||
<id>https://mastodon.social/users/cypnk/statuses/99736359953171849</id>
|
||||
<published>2018-03-24T01:48:12Z</published>
|
||||
<updated>2018-03-24T01:48:12Z</updated>
|
||||
<title>New status by cypnk@mastodon.social</title>
|
||||
<author>
|
||||
<id>https://mastodon.social/users/cypnk</id>
|
||||
<activity:object-type>http://activitystrea.ms/schema/1.0/person</activity:object-type>
|
||||
<uri>https://mastodon.social/users/cypnk</uri>
|
||||
<name>cypnk</name>
|
||||
<email>cypnk@mastodon.social</email>
|
||||
<summary type="html"><p>Coffee, Code, Cabins<br>New York 🇺🇲</p><p>Tor: <a href="http://zgmlocci2uheaw6y.onion" rel="nofollow noopener" target="_blank"><span class="invisible">http://</span><span class="">zgmlocci2uheaw6y.onion</span><span class="invisible"></span></a></p></summary>
|
||||
<link rel="alternate" type="text/html" href="https://mastodon.social/@cypnk"/>
|
||||
<link rel="avatar" type="image/png" media:width="120" media:height="120" href="https://assets.octodon.social/accounts/avatars/000/020/009/original/086ced36687bf000.png"/>
|
||||
<link rel="header" type="image/jpeg" media:width="700" media:height="335" href="https://assets.octodon.social/accounts/headers/000/020/009/original/485fa1ad392dd656.jpg"/>
|
||||
<poco:preferredUsername>cypnk</poco:preferredUsername>
|
||||
<poco:displayName>r҉ustic cy͠be̸rpu̵nk🤠🤖</poco:displayName>
|
||||
<poco:note>Coffee, Code, CabinsNew York 🇺🇲Tor: http://zgmlocci2uheaw6y.onion</poco:note>
|
||||
<mastodon:scope>public</mastodon:scope>
|
||||
</author>
|
||||
<activity:object-type>http://activitystrea.ms/schema/1.0/note</activity:object-type>
|
||||
<activity:verb>http://activitystrea.ms/schema/1.0/post</activity:verb>
|
||||
<content type="html" xml:lang="en"><p>So curl parrot.live is a thing</p><p>( Via <a href="https://twitter.com/darksim905/status/977256948918874112" rel="nofollow noopener" target="_blank"><span class="invisible">https://</span><span class="ellipsis">twitter.com/darksim905/status/</span><span class="invisible">977256948918874112</span></a> )</p></content>
|
||||
<link rel="mentioned" ostatus:object-type="http://activitystrea.ms/schema/1.0/collection" href="http://activityschema.org/collection/public"/>
|
||||
<link rel="enclosure" type="video/mp4" length="587982" href="https://assets.octodon.social/media_attachments/files/001/460/576/original/a3f046541a1be4cb.mp4"/>
|
||||
<mastodon:scope>public</mastodon:scope>
|
||||
<link rel="alternate" type="text/html" href="https://mastodon.social/@cypnk/99736359953171849"/>
|
||||
<ostatus:conversation ref="tag:mastodon.social,2018-03-24:objectId=27426557:objectType=Conversation"/>
|
||||
</activity:object>
|
||||
<link rel="alternate" type="application/activity+json" href="https://octodon.social/users/fenwick67/statuses/99736382143914398/activity"/>
|
||||
<content type="html" xml:lang=""><p>So curl parrot.live is a thing</p><p>( Via <a href="https://twitter.com/darksim905/status/977256948918874112" rel="nofollow noopener" target="_blank"><span class="invisible">https://</span><span class="ellipsis">twitter.com/darksim905/status/</span><span class="invisible">977256948918874112</span></a> )</p></content>
|
||||
<link rel="mentioned" ostatus:object-type="http://activitystrea.ms/schema/1.0/collection" href="http://activityschema.org/collection/public"/>
|
||||
<mastodon:scope>public</mastodon:scope>
|
||||
<link rel="alternate" type="text/html" href="https://octodon.social/@fenwick67/99736382143914398"/>
|
||||
<link rel="self" type="application/atom+xml" href="https://octodon.social/users/fenwick67/updates/404069.atom"/>
|
||||
<ostatus:conversation ref="tag:octodon.social,2018-03-24:objectId=6288327:objectType=Conversation"/>
|
||||
</entry>
|
||||
<entry>
|
||||
<id>https://octodon.social/users/fenwick67/statuses/99736372019184621/activity</id>
|
||||
<published>2018-03-24T01:51:02Z</published>
|
||||
<updated>2018-03-24T01:51:02Z</updated>
|
||||
<title>fenwick67 shared a status by LinuxSocist@icosahedron.website</title>
|
||||
<activity:object-type>http://activitystrea.ms/schema/1.0/activity</activity:object-type>
|
||||
<activity:verb>http://activitystrea.ms/schema/1.0/share</activity:verb>
|
||||
<activity:object>
|
||||
<id>https://icosahedron.website/users/LinuxSocist/statuses/99736289786218826</id>
|
||||
<published>2018-03-24T01:30:11Z</published>
|
||||
<updated>2018-03-24T01:30:11Z</updated>
|
||||
<title>New status by LinuxSocist@icosahedron.website</title>
|
||||
<author>
|
||||
<id>https://icosahedron.website/users/LinuxSocist</id>
|
||||
<activity:object-type>http://activitystrea.ms/schema/1.0/person</activity:object-type>
|
||||
<uri>https://icosahedron.website/users/LinuxSocist</uri>
|
||||
<name>LinuxSocist</name>
|
||||
<email>LinuxSocist@icosahedron.website</email>
|
||||
<summary type="html"><p>If you can't hack it then you don't own it.</p></summary>
|
||||
<link rel="alternate" type="text/html" href="https://icosahedron.website/@LinuxSocist"/>
|
||||
<link rel="avatar" type="image/png" media:width="120" media:height="120" href="https://assets.octodon.social/accounts/avatars/000/002/386/original/cd9c7aa648d840c6.png"/>
|
||||
<link rel="header" type="image/png" media:width="700" media:height="335" href="https://assets.octodon.social/accounts/headers/000/002/386/original/7d1ccd7f07d99e51.png"/>
|
||||
<poco:preferredUsername>LinuxSocist</poco:preferredUsername>
|
||||
<poco:displayName>Linux Socialist</poco:displayName>
|
||||
<poco:note>If you can't hack it then you don't own it.</poco:note>
|
||||
<mastodon:scope>public</mastodon:scope>
|
||||
</author>
|
||||
<activity:object-type>http://activitystrea.ms/schema/1.0/note</activity:object-type>
|
||||
<activity:verb>http://activitystrea.ms/schema/1.0/post</activity:verb>
|
||||
<content type="html" xml:lang=""><p>'Why we choose Godot Engine – Rock Milk'<br><a href="https://medium.com/@rockmilkgames/why-godot-engine-e0d4736d6eb0" rel="nofollow noopener" target="_blank"><span class="invisible">https://</span><span class="ellipsis">medium.com/@rockmilkgames/why-</span><span class="invisible">godot-engine-e0d4736d6eb0</span></a></p></content>
|
||||
<link rel="mentioned" ostatus:object-type="http://activitystrea.ms/schema/1.0/collection" href="http://activityschema.org/collection/public"/>
|
||||
<mastodon:scope>public</mastodon:scope>
|
||||
<link rel="alternate" type="text/html" href="https://icosahedron.website/@LinuxSocist/99736289786218826"/>
|
||||
<ostatus:conversation ref="tag:icosahedron.website,2018-03-24:objectId=4008292:objectType=Conversation"/>
|
||||
</activity:object>
|
||||
<link rel="alternate" type="application/activity+json" href="https://octodon.social/users/fenwick67/statuses/99736372019184621/activity"/>
|
||||
<content type="html" xml:lang=""><p>'Why we choose Godot Engine – Rock Milk'<br><a href="https://medium.com/@rockmilkgames/why-godot-engine-e0d4736d6eb0" rel="nofollow noopener" target="_blank"><span class="invisible">https://</span><span class="ellipsis">medium.com/@rockmilkgames/why-</span><span class="invisible">godot-engine-e0d4736d6eb0</span></a></p></content>
|
||||
<link rel="mentioned" ostatus:object-type="http://activitystrea.ms/schema/1.0/collection" href="http://activityschema.org/collection/public"/>
|
||||
<mastodon:scope>public</mastodon:scope>
|
||||
<link rel="alternate" type="text/html" href="https://octodon.social/@fenwick67/99736372019184621"/>
|
||||
<link rel="self" type="application/atom+xml" href="https://octodon.social/users/fenwick67/updates/404064.atom"/>
|
||||
<ostatus:conversation ref="tag:octodon.social,2018-03-24:objectId=6288255:objectType=Conversation"/>
|
||||
</entry>
|
||||
<entry>
|
||||
<id>https://octodon.social/users/fenwick67/statuses/99736293961915027/activity</id>
|
||||
<published>2018-03-24T01:31:11Z</published>
|
||||
<updated>2018-03-24T01:31:11Z</updated>
|
||||
<title>fenwick67 shared a status by meirlbot@mastodon.social</title>
|
||||
<activity:object-type>http://activitystrea.ms/schema/1.0/activity</activity:object-type>
|
||||
<activity:verb>http://activitystrea.ms/schema/1.0/share</activity:verb>
|
||||
<activity:object>
|
||||
<id>https://mastodon.social/users/meirlbot/statuses/99736260594446646</id>
|
||||
<published>2018-03-24T01:22:45Z</published>
|
||||
<updated>2018-03-24T01:22:45Z</updated>
|
||||
<title>New status by meirlbot@mastodon.social</title>
|
||||
<author>
|
||||
<id>https://mastodon.social/users/meirlbot</id>
|
||||
<activity:object-type>http://activitystrea.ms/schema/1.0/person</activity:object-type>
|
||||
<uri>https://mastodon.social/users/meirlbot</uri>
|
||||
<name>meirlbot</name>
|
||||
<email>meirlbot@mastodon.social</email>
|
||||
<summary type="html"><p>i'm a bot by <span class="h-card"><a href="https://ultrix.me/@corbin" class="u-url mention" rel="nofollow noopener" target="_blank">@<span>corbin</span></a></span> that mirrors the latest posts from /r/me_irl</p><p>twitter: <a href="https://twitter.com/itmeirl" rel="nofollow noopener" target="_blank"><span class="invisible">https://</span><span class="">twitter.com/itmeirl</span><span class="invisible"></span></a></p></summary>
|
||||
<link rel="alternate" type="text/html" href="https://mastodon.social/@meirlbot"/>
|
||||
<link rel="avatar" type="image/jpeg" media:width="120" media:height="120" href="https://assets.octodon.social/accounts/avatars/000/091/213/original/b214dff45bb239f3.jpg"/>
|
||||
<link rel="header" type="image/jpeg" media:width="700" media:height="335" href="https://assets.octodon.social/accounts/headers/000/091/213/original/30ab34776dc153a1.jpg"/>
|
||||
<poco:preferredUsername>meirlbot</poco:preferredUsername>
|
||||
<poco:displayName>me irl</poco:displayName>
|
||||
<poco:note>i'm a bot by @corbin that mirrors the latest posts from /r/me_irltwitter: https://twitter.com/itmeirl</poco:note>
|
||||
<mastodon:scope>public</mastodon:scope>
|
||||
</author>
|
||||
<activity:object-type>http://activitystrea.ms/schema/1.0/note</activity:object-type>
|
||||
<activity:verb>http://activitystrea.ms/schema/1.0/post</activity:verb>
|
||||
<content type="html" xml:lang=""><p>me irl <a href="https://redd.it/86nbzr" rel="nofollow noopener" target="_blank"><span class="invisible">https://</span><span class="">redd.it/86nbzr</span><span class="invisible"></span></a></p></content>
|
||||
<link rel="mentioned" ostatus:object-type="http://activitystrea.ms/schema/1.0/collection" href="http://activityschema.org/collection/public"/>
|
||||
<link rel="enclosure" type="image/png" length="298179" href="https://assets.octodon.social/media_attachments/files/001/460/499/original/3231efe4233d15bd.png"/>
|
||||
<mastodon:scope>public</mastodon:scope>
|
||||
<link rel="alternate" type="text/html" href="https://mastodon.social/@meirlbot/99736260594446646"/>
|
||||
<ostatus:conversation ref="tag:mastodon.social,2018-03-24:objectId=27425100:objectType=Conversation"/>
|
||||
</activity:object>
|
||||
<link rel="alternate" type="application/activity+json" href="https://octodon.social/users/fenwick67/statuses/99736293961915027/activity"/>
|
||||
<content type="html" xml:lang=""><p>me irl <a href="https://redd.it/86nbzr" rel="nofollow noopener" target="_blank"><span class="invisible">https://</span><span class="">redd.it/86nbzr</span><span class="invisible"></span></a></p></content>
|
||||
<link rel="mentioned" ostatus:object-type="http://activitystrea.ms/schema/1.0/collection" href="http://activityschema.org/collection/public"/>
|
||||
<mastodon:scope>public</mastodon:scope>
|
||||
<link rel="alternate" type="text/html" href="https://octodon.social/@fenwick67/99736293961915027"/>
|
||||
<link rel="self" type="application/atom+xml" href="https://octodon.social/users/fenwick67/updates/404044.atom"/>
|
||||
<ostatus:conversation ref="tag:octodon.social,2018-03-24:objectId=6287883:objectType=Conversation"/>
|
||||
</entry>
|
||||
<entry>
|
||||
<id>https://octodon.social/users/fenwick67/statuses/99736270823277858/activity</id>
|
||||
<published>2018-03-24T01:25:18Z</published>
|
||||
<updated>2018-03-24T01:25:18Z</updated>
|
||||
<title>fenwick67 shared a status by natecull@mastodon.social</title>
|
||||
<activity:object-type>http://activitystrea.ms/schema/1.0/activity</activity:object-type>
|
||||
<activity:verb>http://activitystrea.ms/schema/1.0/share</activity:verb>
|
||||
<activity:object>
|
||||
<id>https://mastodon.social/users/natecull/statuses/99735315450345700</id>
|
||||
<published>2018-03-23T21:22:24Z</published>
|
||||
<updated>2018-03-23T21:22:24Z</updated>
|
||||
<title>New status by natecull@mastodon.social</title>
|
||||
<author>
|
||||
<id>https://mastodon.social/users/natecull</id>
|
||||
<activity:object-type>http://activitystrea.ms/schema/1.0/person</activity:object-type>
|
||||
<uri>https://mastodon.social/users/natecull</uri>
|
||||
<name>natecull</name>
|
||||
<email>natecull@mastodon.social</email>
|
||||
<summary type="html"><p>and we're all gonna shine a light together</p><p> <a href="http://natecull.org/wordpress/tomorrow/" rel="nofollow noopener" target="_blank"><span class="invisible">http://</span><span class="ellipsis">natecull.org/wordpress/tomorro</span><span class="invisible">w/</span></a></p></summary>
|
||||
<link rel="alternate" type="text/html" href="https://mastodon.social/@natecull"/>
|
||||
<link rel="avatar" type="image/jpeg" media:width="120" media:height="120" href="https://assets.octodon.social/accounts/avatars/000/004/022/original/5e674cac327b3746.jpg"/>
|
||||
<poco:preferredUsername>natecull</poco:preferredUsername>
|
||||
<poco:displayName>Nate Cull</poco:displayName>
|
||||
<poco:note>and we're all gonna shine a light together http://natecull.org/wordpress/tomorrow/</poco:note>
|
||||
<mastodon:scope>public</mastodon:scope>
|
||||
</author>
|
||||
<activity:object-type>http://activitystrea.ms/schema/1.0/note</activity:object-type>
|
||||
<activity:verb>http://activitystrea.ms/schema/1.0/post</activity:verb>
|
||||
<content type="html" xml:lang="en"><p>Medium needs to stop doing this, or people need to stop using Medium.</p><p>It's a website that hosts blogs.</p><p>That you read.</p><p>it doesn't need your Fooglebaceook account.</p></content>
|
||||
<link rel="mentioned" ostatus:object-type="http://activitystrea.ms/schema/1.0/collection" href="http://activityschema.org/collection/public"/>
|
||||
<link rel="enclosure" type="image/png" length="132769" href="https://assets.octodon.social/media_attachments/files/001/459/532/original/6ae62ea552e0115b.png"/>
|
||||
<mastodon:scope>public</mastodon:scope>
|
||||
<link rel="alternate" type="text/html" href="https://mastodon.social/@natecull/99735315450345700"/>
|
||||
<ostatus:conversation ref="tag:mastodon.social,2018-03-23:objectId=27410361:objectType=Conversation"/>
|
||||
</activity:object>
|
||||
<link rel="alternate" type="application/activity+json" href="https://octodon.social/users/fenwick67/statuses/99736270823277858/activity"/>
|
||||
<content type="html" xml:lang=""><p>Medium needs to stop doing this, or people need to stop using Medium.</p><p>It's a website that hosts blogs.</p><p>That you read.</p><p>it doesn't need your Fooglebaceook account.</p></content>
|
||||
<link rel="mentioned" ostatus:object-type="http://activitystrea.ms/schema/1.0/collection" href="http://activityschema.org/collection/public"/>
|
||||
<mastodon:scope>public</mastodon:scope>
|
||||
<link rel="alternate" type="text/html" href="https://octodon.social/@fenwick67/99736270823277858"/>
|
||||
<link rel="self" type="application/atom+xml" href="https://octodon.social/users/fenwick67/updates/404039.atom"/>
|
||||
<ostatus:conversation ref="tag:octodon.social,2018-03-24:objectId=6287739:objectType=Conversation"/>
|
||||
</entry>
|
||||
<entry>
|
||||
<id>https://octodon.social/users/fenwick67/statuses/99736154791289301/activity</id>
|
||||
<published>2018-03-24T00:55:47Z</published>
|
||||
<updated>2018-03-24T00:55:47Z</updated>
|
||||
<title>fenwick67 shared a status by tom@slime.global</title>
|
||||
<activity:object-type>http://activitystrea.ms/schema/1.0/activity</activity:object-type>
|
||||
<activity:verb>http://activitystrea.ms/schema/1.0/share</activity:verb>
|
||||
<activity:object>
|
||||
<id>https://slime.global/users/tom/statuses/99732325744900240</id>
|
||||
<published>2018-03-23T08:42:08Z</published>
|
||||
<updated>2018-03-23T08:42:08Z</updated>
|
||||
<title>New status by tom@slime.global</title>
|
||||
<author>
|
||||
<id>https://slime.global/users/tom</id>
|
||||
<activity:object-type>http://activitystrea.ms/schema/1.0/person</activity:object-type>
|
||||
<uri>https://slime.global/users/tom</uri>
|
||||
<name>tom</name>
|
||||
<email>tom@slime.global</email>
|
||||
<summary type="html"><p>systems engineer by day, instance admin by night! </p><p>also makes music &amp; takes photos. </p><p>nb, they/them ❤️ <a href="https://tom.ovh" rel="nofollow noopener" target="_blank"><span class="invisible">https://</span><span class="">tom.ovh</span><span class="invisible"></span></a> <a href="https://ko-fi.com/itstom" rel="nofollow noopener" target="_blank"><span class="invisible">https://</span><span class="">ko-fi.com/itstom</span><span class="invisible"></span></a> (EN/DE OK)</p></summary>
|
||||
<link rel="alternate" type="text/html" href="https://slime.global/@tom"/>
|
||||
<link rel="avatar" type="image/gif" media:width="120" media:height="120" href="https://assets.octodon.social/accounts/avatars/000/005/490/original/a9f04627c77b06db.gif"/>
|
||||
<link rel="header" type="image/jpeg" media:width="700" media:height="335" href="https://assets.octodon.social/accounts/headers/000/005/490/original/96143b7dd2e2b8a6.jpg"/>
|
||||
<poco:preferredUsername>tom</poco:preferredUsername>
|
||||
<poco:displayName>switched-on tom</poco:displayName>
|
||||
<poco:note>systems engineer by day, instance admin by night! also makes music &amp; takes photos. nb, they/them ❤️ https://tom.ovh https://ko-fi.com/itstom (EN/DE OK)</poco:note>
|
||||
<mastodon:scope>public</mastodon:scope>
|
||||
</author>
|
||||
<activity:object-type>http://activitystrea.ms/schema/1.0/comment</activity:object-type>
|
||||
<activity:verb>http://activitystrea.ms/schema/1.0/post</activity:verb>
|
||||
<content type="html" xml:lang=""><p>fuck you</p></content>
|
||||
<link rel="mentioned" ostatus:object-type="http://activitystrea.ms/schema/1.0/collection" href="http://activityschema.org/collection/public"/>
|
||||
<link rel="enclosure" type="video/mp4" length="273939" href="https://assets.octodon.social/media_attachments/files/001/456/443/original/d4af7e0451af8676.mp4"/>
|
||||
<mastodon:scope>public</mastodon:scope>
|
||||
<link rel="alternate" type="text/html" href="https://slime.global/@tom/99732325744900240"/>
|
||||
<thr:in-reply-to ref="https://slime.global/users/tom/statuses/99732195259645456" href="https://slime.global/@tom/99732195259645456"/>
|
||||
<ostatus:conversation ref="tag:slime.global,2018-03-23:objectId=1669703:objectType=Conversation"/>
|
||||
</activity:object>
|
||||
<link rel="alternate" type="application/activity+json" href="https://octodon.social/users/fenwick67/statuses/99736154791289301/activity"/>
|
||||
<content type="html" xml:lang=""><p>fuck you</p></content>
|
||||
<link rel="mentioned" ostatus:object-type="http://activitystrea.ms/schema/1.0/collection" href="http://activityschema.org/collection/public"/>
|
||||
<mastodon:scope>public</mastodon:scope>
|
||||
<link rel="alternate" type="text/html" href="https://octodon.social/@fenwick67/99736154791289301"/>
|
||||
<link rel="self" type="application/atom+xml" href="https://octodon.social/users/fenwick67/updates/404008.atom"/>
|
||||
<ostatus:conversation ref="tag:octodon.social,2018-03-24:objectId=6286988:objectType=Conversation"/>
|
||||
</entry>
|
||||
<entry>
|
||||
<id>https://octodon.social/users/fenwick67/statuses/99735931584316464/activity</id>
|
||||
<published>2018-03-23T23:59:02Z</published>
|
||||
<updated>2018-03-23T23:59:02Z</updated>
|
||||
<title>fenwick67 shared a status by mcmoots@a.weirder.earth</title>
|
||||
<activity:object-type>http://activitystrea.ms/schema/1.0/activity</activity:object-type>
|
||||
<activity:verb>http://activitystrea.ms/schema/1.0/share</activity:verb>
|
||||
<activity:object>
|
||||
<id>https://a.weirder.earth/users/mcmoots/statuses/99735929849758025</id>
|
||||
<published>2018-03-23T23:58:41Z</published>
|
||||
<updated>2018-03-23T23:58:41Z</updated>
|
||||
<title>New status by mcmoots@a.weirder.earth</title>
|
||||
<author>
|
||||
<id>https://a.weirder.earth/users/mcmoots</id>
|
||||
<activity:object-type>http://activitystrea.ms/schema/1.0/person</activity:object-type>
|
||||
<uri>https://a.weirder.earth/users/mcmoots</uri>
|
||||
<name>mcmoots</name>
|
||||
<email>mcmoots@a.weirder.earth</email>
|
||||
<summary type="html"><p>your favorite non-masculine pronouns are fine</p><p>🌲🌿🍄<br>🌋🏔<br>🥗🥘<br>🍸🍷🍺 <br>🍩 🥧<br>😻</p></summary>
|
||||
<link rel="alternate" type="text/html" href="https://a.weirder.earth/@mcmoots"/>
|
||||
<link rel="avatar" type="image/jpeg" media:width="120" media:height="120" href="https://assets.octodon.social/accounts/avatars/000/016/718/original/ca9a8d20edf9f2de.jpg"/>
|
||||
<poco:preferredUsername>mcmoots</poco:preferredUsername>
|
||||
<poco:displayName>👀🌲</poco:displayName>
|
||||
<poco:note>your favorite non-masculine pronouns are fine🌲🌿🍄🌋🏔🥗🥘🍸🍷🍺 🍩 🥧😻</poco:note>
|
||||
<mastodon:scope>public</mastodon:scope>
|
||||
</author>
|
||||
<activity:object-type>http://activitystrea.ms/schema/1.0/note</activity:object-type>
|
||||
<activity:verb>http://activitystrea.ms/schema/1.0/post</activity:verb>
|
||||
<content type="html" xml:lang="en"><p>From yesterday. Even with a surprise snow it's still the most wonderful time of the year.</p></content>
|
||||
<link rel="mentioned" ostatus:object-type="http://activitystrea.ms/schema/1.0/collection" href="http://activityschema.org/collection/public"/>
|
||||
<link rel="enclosure" type="image/jpeg" length="397459" href="https://assets.octodon.social/media_attachments/files/001/460/171/original/fcad285b55062f29.jpg"/>
|
||||
<mastodon:scope>public</mastodon:scope>
|
||||
<link rel="alternate" type="text/html" href="https://a.weirder.earth/@mcmoots/99735929849758025"/>
|
||||
<ostatus:conversation ref="tag:a.weirder.earth,2018-03-23:objectId=1180128:objectType=Conversation"/>
|
||||
</activity:object>
|
||||
<link rel="alternate" type="application/activity+json" href="https://octodon.social/users/fenwick67/statuses/99735931584316464/activity"/>
|
||||
<content type="html" xml:lang=""><p>From yesterday. Even with a surprise snow it's still the most wonderful time of the year.</p></content>
|
||||
<link rel="mentioned" ostatus:object-type="http://activitystrea.ms/schema/1.0/collection" href="http://activityschema.org/collection/public"/>
|
||||
<mastodon:scope>public</mastodon:scope>
|
||||
<link rel="alternate" type="text/html" href="https://octodon.social/@fenwick67/99735931584316464"/>
|
||||
<link rel="self" type="application/atom+xml" href="https://octodon.social/users/fenwick67/updates/403924.atom"/>
|
||||
<ostatus:conversation ref="tag:octodon.social,2018-03-23:objectId=6285649:objectType=Conversation"/>
|
||||
</entry>
|
||||
<entry>
|
||||
<id>https://octodon.social/users/fenwick67/statuses/99735917404431053</id>
|
||||
<published>2018-03-23T23:55:25Z</published>
|
||||
<updated>2018-03-23T23:55:25Z</updated>
|
||||
<title>New status by fenwick67</title>
|
||||
<activity:object-type>http://activitystrea.ms/schema/1.0/comment</activity:object-type>
|
||||
<activity:verb>http://activitystrea.ms/schema/1.0/post</activity:verb>
|
||||
<link rel="alternate" type="application/activity+json" href="https://octodon.social/users/fenwick67/statuses/99735917404431053"/>
|
||||
<content type="html" xml:lang="en"><p><span class="h-card"><a href="https://kitty.town/@GinnyMcQueen" class="u-url mention">@<span>GinnyMcQueen</span></a></span> these are so geometric I thought it was some plastic thing when I scrolled past</p></content>
|
||||
<link rel="mentioned" ostatus:object-type="http://activitystrea.ms/schema/1.0/person" href="https://kitty.town/users/GinnyMcQueen"/>
|
||||
<link rel="mentioned" ostatus:object-type="http://activitystrea.ms/schema/1.0/collection" href="http://activityschema.org/collection/public"/>
|
||||
<mastodon:scope>public</mastodon:scope>
|
||||
<link rel="alternate" type="text/html" href="https://octodon.social/@fenwick67/99735917404431053"/>
|
||||
<link rel="self" type="application/atom+xml" href="https://octodon.social/users/fenwick67/updates/403911.atom"/>
|
||||
<thr:in-reply-to ref="https://kitty.town/users/GinnyMcQueen/statuses/99735901170047043" href="https://kitty.town/@GinnyMcQueen/99735901170047043"/>
|
||||
<ostatus:conversation ref="tag:kitty.town,2018-03-23:objectId=2280854:objectType=Conversation"/>
|
||||
</entry>
|
||||
<entry>
|
||||
<id>https://octodon.social/users/fenwick67/statuses/99735390633117557/activity</id>
|
||||
<published>2018-03-23T21:41:27Z</published>
|
||||
<updated>2018-03-23T21:41:27Z</updated>
|
||||
<title>fenwick67 shared a status by fillertrack@slime.global</title>
|
||||
<activity:object-type>http://activitystrea.ms/schema/1.0/activity</activity:object-type>
|
||||
<activity:verb>http://activitystrea.ms/schema/1.0/share</activity:verb>
|
||||
<activity:object>
|
||||
<id>https://slime.global/users/fillertrack/statuses/99732555261994849</id>
|
||||
<published>2018-03-23T09:40:25Z</published>
|
||||
<updated>2018-03-23T09:40:25Z</updated>
|
||||
<title>New status by fillertrack@slime.global</title>
|
||||
<author>
|
||||
<id>https://slime.global/users/fillertrack</id>
|
||||
<activity:object-type>http://activitystrea.ms/schema/1.0/person</activity:object-type>
|
||||
<uri>https://slime.global/users/fillertrack</uri>
|
||||
<name>fillertrack</name>
|
||||
<email>fillertrack@slime.global</email>
|
||||
<summary type="html"><p>Queer socialist grackle. Want to make video games and mixtapes. They/Them</p><p>Donations appreciated<br>ko-fi.com/fillertrack<br>paypal.me/imack666</p></summary>
|
||||
<link rel="alternate" type="text/html" href="https://slime.global/@fillertrack"/>
|
||||
<link rel="avatar" type="image/png" media:width="120" media:height="120" href="https://assets.octodon.social/accounts/avatars/000/007/118/original/9e846c957d91a7a4.png"/>
|
||||
<link rel="header" type="image/png" media:width="700" media:height="335" href="https://assets.octodon.social/accounts/headers/000/007/118/original/6788c670b2ca4571.png"/>
|
||||
<poco:preferredUsername>fillertrack</poco:preferredUsername>
|
||||
<poco:displayName>🐦birdtom🐦</poco:displayName>
|
||||
<poco:note>Queer socialist grackle. Want to make video games and mixtapes. They/ThemDonations appreciatedko-fi.com/fillertrackpaypal.me/imack666</poco:note>
|
||||
<mastodon:scope>public</mastodon:scope>
|
||||
</author>
|
||||
<activity:object-type>http://activitystrea.ms/schema/1.0/note</activity:object-type>
|
||||
<activity:verb>http://activitystrea.ms/schema/1.0/post</activity:verb>
|
||||
<content type="html" xml:lang="en"><p>I am become death, destroyer of worlds.</p></content>
|
||||
<link rel="mentioned" ostatus:object-type="http://activitystrea.ms/schema/1.0/collection" href="http://activityschema.org/collection/public"/>
|
||||
<link rel="enclosure" type="video/mp4" length="41718" href="https://assets.octodon.social/media_attachments/files/001/456/618/original/c7ab2c504af72a36.mp4"/>
|
||||
<mastodon:scope>public</mastodon:scope>
|
||||
<link rel="alternate" type="text/html" href="https://slime.global/@fillertrack/99732555261994849"/>
|
||||
<ostatus:conversation ref="tag:slime.global,2018-03-23:objectId=1670016:objectType=Conversation"/>
|
||||
</activity:object>
|
||||
<link rel="alternate" type="application/activity+json" href="https://octodon.social/users/fenwick67/statuses/99735390633117557/activity"/>
|
||||
<content type="html" xml:lang=""><p>I am become death, destroyer of worlds.</p></content>
|
||||
<link rel="mentioned" ostatus:object-type="http://activitystrea.ms/schema/1.0/collection" href="http://activityschema.org/collection/public"/>
|
||||
<mastodon:scope>public</mastodon:scope>
|
||||
<link rel="alternate" type="text/html" href="https://octodon.social/@fenwick67/99735390633117557"/>
|
||||
<link rel="self" type="application/atom+xml" href="https://octodon.social/users/fenwick67/updates/403655.atom"/>
|
||||
<ostatus:conversation ref="tag:octodon.social,2018-03-23:objectId=6282158:objectType=Conversation"/>
|
||||
</entry>
|
||||
<entry>
|
||||
<id>https://octodon.social/users/fenwick67/statuses/99734417810440700</id>
|
||||
<published>2018-03-23T17:34:03Z</published>
|
||||
<updated>2018-03-23T17:34:03Z</updated>
|
||||
<title>New status by fenwick67</title>
|
||||
<activity:object-type>http://activitystrea.ms/schema/1.0/comment</activity:object-type>
|
||||
<activity:verb>http://activitystrea.ms/schema/1.0/post</activity:verb>
|
||||
<link rel="alternate" type="application/activity+json" href="https://octodon.social/users/fenwick67/statuses/99734417810440700"/>
|
||||
<content type="html" xml:lang="en"><p><span class="h-card"><a href="https://cybre.space/@zigg" class="u-url mention">@<span>zigg</span></a></span> node&apos;s FS module on Windows is buggy enough that I recommend using the graceful-fs module in its place when you can</p></content>
|
||||
<link rel="mentioned" ostatus:object-type="http://activitystrea.ms/schema/1.0/person" href="https://cybre.space/users/zigg"/>
|
||||
<link rel="mentioned" ostatus:object-type="http://activitystrea.ms/schema/1.0/collection" href="http://activityschema.org/collection/public"/>
|
||||
<mastodon:scope>public</mastodon:scope>
|
||||
<link rel="alternate" type="text/html" href="https://octodon.social/@fenwick67/99734417810440700"/>
|
||||
<link rel="self" type="application/atom+xml" href="https://octodon.social/users/fenwick67/updates/403137.atom"/>
|
||||
<thr:in-reply-to ref="https://cybre.space/users/zigg/statuses/99734402832717239" href="https://cybre.space/@zigg/99734402832717239"/>
|
||||
<ostatus:conversation ref="tag:cybre.space,2018-03-23:objectId=5381860:objectType=Conversation"/>
|
||||
</entry>
|
||||
<entry>
|
||||
<id>https://octodon.social/users/fenwick67/statuses/99733847193567183</id>
|
||||
<published>2018-03-23T15:08:56Z</published>
|
||||
<updated>2018-03-23T15:08:56Z</updated>
|
||||
<title>New status by fenwick67</title>
|
||||
<activity:object-type>http://activitystrea.ms/schema/1.0/comment</activity:object-type>
|
||||
<activity:verb>http://activitystrea.ms/schema/1.0/post</activity:verb>
|
||||
<link rel="alternate" type="application/activity+json" href="https://octodon.social/users/fenwick67/statuses/99733847193567183"/>
|
||||
<content type="html" xml:lang="en"><p><span class="h-card"><a href="https://octodon.social/@kingu_platypus_gidora" class="u-url mention">@<span>kingu_platypus_gidora</span></a></span> me tbh</p></content>
|
||||
<link rel="mentioned" ostatus:object-type="http://activitystrea.ms/schema/1.0/person" href="https://octodon.social/users/kingu_platypus_gidora"/>
|
||||
<link rel="mentioned" ostatus:object-type="http://activitystrea.ms/schema/1.0/collection" href="http://activityschema.org/collection/public"/>
|
||||
<mastodon:scope>public</mastodon:scope>
|
||||
<link rel="alternate" type="text/html" href="https://octodon.social/@fenwick67/99733847193567183"/>
|
||||
<link rel="self" type="application/atom+xml" href="https://octodon.social/users/fenwick67/updates/402782.atom"/>
|
||||
<thr:in-reply-to ref="https://octodon.social/users/kingu_platypus_gidora/statuses/99733830894126614" href="https://octodon.social/@kingu_platypus_gidora/99733830894126614"/>
|
||||
<ostatus:conversation ref="tag:octodon.social,2018-03-23:objectId=6268551:objectType=Conversation"/>
|
||||
</entry>
|
||||
<entry>
|
||||
<id>https://octodon.social/users/fenwick67/statuses/99733846304708662/activity</id>
|
||||
<published>2018-03-23T15:08:43Z</published>
|
||||
<updated>2018-03-23T15:08:43Z</updated>
|
||||
<title>fenwick67 shared a status by kingu_platypus_gidora</title>
|
||||
<activity:object-type>http://activitystrea.ms/schema/1.0/activity</activity:object-type>
|
||||
<activity:verb>http://activitystrea.ms/schema/1.0/share</activity:verb>
|
||||
<activity:object>
|
||||
<id>https://octodon.social/users/kingu_platypus_gidora/statuses/99733830894126614</id>
|
||||
<published>2018-03-23T15:04:48Z</published>
|
||||
<updated>2018-03-23T15:04:48Z</updated>
|
||||
<title>New status by kingu_platypus_gidora</title>
|
||||
<author>
|
||||
<id>https://octodon.social/users/kingu_platypus_gidora</id>
|
||||
<activity:object-type>http://activitystrea.ms/schema/1.0/person</activity:object-type>
|
||||
<uri>https://octodon.social/users/kingu_platypus_gidora</uri>
|
||||
<name>kingu_platypus_gidora</name>
|
||||
<email>kingu_platypus_gidora@octodon.social</email>
|
||||
<summary type="html"><p>Hello World! I am Kingu<br />D*: <a href="https://diasp.org/people/37b279f2a9f2348d" rel="nofollow noopener" target="_blank"><span class="invisible">https://</span><span class="ellipsis">diasp.org/people/37b279f2a9f23</span><span class="invisible">48d</span></a><br />Music: <a href="https://kingu.reactoweb.com/" rel="nofollow noopener" target="_blank"><span class="invisible">https://</span><span class="">kingu.reactoweb.com/</span><span class="invisible"></span></a></p></summary>
|
||||
<link rel="alternate" type="text/html" href="https://octodon.social/@kingu_platypus_gidora"/>
|
||||
<link rel="avatar" type="image/gif" media:width="120" media:height="120" href="https://assets.octodon.social/accounts/avatars/000/001/586/original/751443ed5e9bea89.gif"/>
|
||||
<link rel="header" type="image/jpeg" media:width="700" media:height="335" href="https://assets.octodon.social/accounts/headers/000/001/586/original/488457a59ee3a63f.jpg"/>
|
||||
<poco:preferredUsername>kingu_platypus_gidora</poco:preferredUsername>
|
||||
<poco:displayName>Anarkingu Gidora</poco:displayName>
|
||||
<poco:note>Hello World! I am Kingu
|
||||
D*: https://diasp.org/people/37b279f2a9f2348d
|
||||
Music: https://kingu.reactoweb.com/</poco:note>
|
||||
<mastodon:scope>public</mastodon:scope>
|
||||
</author>
|
||||
<activity:object-type>http://activitystrea.ms/schema/1.0/note</activity:object-type>
|
||||
<activity:verb>http://activitystrea.ms/schema/1.0/post</activity:verb>
|
||||
<link rel="alternate" type="application/activity+json" href="https://octodon.social/users/kingu_platypus_gidora/statuses/99733830894126614"/>
|
||||
<content type="html" xml:lang="en"><p>.</p></content>
|
||||
<link rel="mentioned" ostatus:object-type="http://activitystrea.ms/schema/1.0/collection" href="http://activityschema.org/collection/public"/>
|
||||
<link rel="enclosure" type="image/jpeg" length="32544" href="https://assets.octodon.social/media_attachments/files/001/457/875/original/f2b73debb45d360b.jpg"/>
|
||||
<mastodon:scope>public</mastodon:scope>
|
||||
<link rel="alternate" type="text/html" href="https://octodon.social/@kingu_platypus_gidora/99733830894126614"/>
|
||||
<ostatus:conversation ref="tag:octodon.social,2018-03-23:objectId=6268551:objectType=Conversation"/>
|
||||
</activity:object>
|
||||
<link rel="alternate" type="application/activity+json" href="https://octodon.social/users/fenwick67/statuses/99733846304708662/activity"/>
|
||||
<content type="html" xml:lang=""><p>RT <span class="h-card"><a href="https://octodon.social/@kingu_platypus_gidora" class="u-url mention">@<span>kingu_platypus_gidora</span></a></span> .</p></content>
|
||||
<link rel="mentioned" ostatus:object-type="http://activitystrea.ms/schema/1.0/collection" href="http://activityschema.org/collection/public"/>
|
||||
<mastodon:scope>public</mastodon:scope>
|
||||
<link rel="alternate" type="text/html" href="https://octodon.social/@fenwick67/99733846304708662"/>
|
||||
<link rel="self" type="application/atom+xml" href="https://octodon.social/users/fenwick67/updates/402781.atom"/>
|
||||
<ostatus:conversation ref="tag:octodon.social,2018-03-23:objectId=6268669:objectType=Conversation"/>
|
||||
</entry>
|
||||
<entry>
|
||||
<id>https://octodon.social/users/fenwick67/statuses/99730862747105610</id>
|
||||
<published>2018-03-23T02:29:57Z</published>
|
||||
<updated>2018-03-23T02:29:57Z</updated>
|
||||
<title>New status by fenwick67</title>
|
||||
<activity:object-type>http://activitystrea.ms/schema/1.0/comment</activity:object-type>
|
||||
<activity:verb>http://activitystrea.ms/schema/1.0/post</activity:verb>
|
||||
<link rel="alternate" type="application/activity+json" href="https://octodon.social/users/fenwick67/statuses/99730862747105610"/>
|
||||
<content type="html" xml:lang="en"><p><span class="h-card"><a href="https://meow.social/@Mycroft" class="u-url mention">@<span>Mycroft</span></a></span> the starter set is legit, it&apos;s easy to pick up and a surprising amount of content. Also, the SRD is free to download and there are free adventures on DM&apos;s guild.</p></content>
|
||||
<link rel="mentioned" ostatus:object-type="http://activitystrea.ms/schema/1.0/person" href="https://meow.social/users/Mycroft"/>
|
||||
<link rel="mentioned" ostatus:object-type="http://activitystrea.ms/schema/1.0/collection" href="http://activityschema.org/collection/public"/>
|
||||
<mastodon:scope>public</mastodon:scope>
|
||||
<link rel="alternate" type="text/html" href="https://octodon.social/@fenwick67/99730862747105610"/>
|
||||
<link rel="self" type="application/atom+xml" href="https://octodon.social/users/fenwick67/updates/402147.atom"/>
|
||||
<thr:in-reply-to ref="https://meow.social/users/Mycroft/statuses/99730814417520421" href="https://meow.social/@Mycroft/99730814417520421"/>
|
||||
<ostatus:conversation ref="tag:meow.social,2018-03-23:objectId=1635630:objectType=Conversation"/>
|
||||
</entry>
|
||||
<entry>
|
||||
<id>https://octodon.social/users/fenwick67/statuses/99730686004948111</id>
|
||||
<published>2018-03-23T01:45:00Z</published>
|
||||
<updated>2018-03-23T01:45:00Z</updated>
|
||||
<title>New status by fenwick67</title>
|
||||
<activity:object-type>http://activitystrea.ms/schema/1.0/comment</activity:object-type>
|
||||
<activity:verb>http://activitystrea.ms/schema/1.0/post</activity:verb>
|
||||
<link rel="alternate" type="application/activity+json" href="https://octodon.social/users/fenwick67/statuses/99730686004948111"/>
|
||||
<content type="html" xml:lang="en"><p><span class="h-card"><a href="https://niu.moe/@phenethylamine" class="u-url mention">@<span>phenethylamine</span></a></span> vlc?</p></content>
|
||||
<link rel="mentioned" ostatus:object-type="http://activitystrea.ms/schema/1.0/person" href="https://niu.moe/users/phenethylamine"/>
|
||||
<link rel="mentioned" ostatus:object-type="http://activitystrea.ms/schema/1.0/collection" href="http://activityschema.org/collection/public"/>
|
||||
<mastodon:scope>public</mastodon:scope>
|
||||
<link rel="alternate" type="text/html" href="https://octodon.social/@fenwick67/99730686004948111"/>
|
||||
<link rel="self" type="application/atom+xml" href="https://octodon.social/users/fenwick67/updates/402067.atom"/>
|
||||
<thr:in-reply-to ref="https://niu.moe/users/phenethylamine/statuses/99730658198254244" href="https://niu.moe/@phenethylamine/99730658198254244"/>
|
||||
<ostatus:conversation ref="tag:niu.moe,2018-03-23:objectId=6679592:objectType=Conversation"/>
|
||||
</entry>
|
||||
<entry>
|
||||
<id>https://octodon.social/users/fenwick67/statuses/99730669809908537</id>
|
||||
<published>2018-03-23T01:40:53Z</published>
|
||||
<updated>2018-03-23T01:40:53Z</updated>
|
||||
<title>New status by fenwick67</title>
|
||||
<activity:object-type>http://activitystrea.ms/schema/1.0/comment</activity:object-type>
|
||||
<activity:verb>http://activitystrea.ms/schema/1.0/post</activity:verb>
|
||||
<link rel="alternate" type="application/activity+json" href="https://octodon.social/users/fenwick67/statuses/99730669809908537"/>
|
||||
<content type="html" xml:lang="en"><p><span class="h-card"><a href="https://octodon.social/@Shalazah" class="u-url mention">@<span>Shalazah</span></a></span> welcome y&apos;all</p></content>
|
||||
<link rel="mentioned" ostatus:object-type="http://activitystrea.ms/schema/1.0/person" href="https://octodon.social/users/Shalazah"/>
|
||||
<link rel="mentioned" ostatus:object-type="http://activitystrea.ms/schema/1.0/collection" href="http://activityschema.org/collection/public"/>
|
||||
<mastodon:scope>public</mastodon:scope>
|
||||
<link rel="alternate" type="text/html" href="https://octodon.social/@fenwick67/99730669809908537"/>
|
||||
<link rel="self" type="application/atom+xml" href="https://octodon.social/users/fenwick67/updates/402059.atom"/>
|
||||
<thr:in-reply-to ref="https://octodon.social/users/Shalazah/statuses/99730456201572202" href="https://octodon.social/@Shalazah/99730456201572202"/>
|
||||
<ostatus:conversation ref="tag:octodon.social,2018-03-23:objectId=6250411:objectType=Conversation"/>
|
||||
</entry>
|
||||
<entry>
|
||||
<id>https://octodon.social/users/fenwick67/statuses/99730661494096566/activity</id>
|
||||
<published>2018-03-23T01:38:46Z</published>
|
||||
<updated>2018-03-23T01:38:46Z</updated>
|
||||
<title>fenwick67 shared a status by plsburydoughboy@kitty.town</title>
|
||||
<activity:object-type>http://activitystrea.ms/schema/1.0/activity</activity:object-type>
|
||||
<activity:verb>http://activitystrea.ms/schema/1.0/share</activity:verb>
|
||||
<activity:object>
|
||||
<id>https://kitty.town/users/plsburydoughboy/statuses/99730600493978927</id>
|
||||
<published>2018-03-23T01:23:25Z</published>
|
||||
<updated>2018-03-23T01:23:25Z</updated>
|
||||
<title>New status by plsburydoughboy@kitty.town</title>
|
||||
<author>
|
||||
<id>https://kitty.town/users/plsburydoughboy</id>
|
||||
<activity:object-type>http://activitystrea.ms/schema/1.0/person</activity:object-type>
|
||||
<uri>https://kitty.town/users/plsburydoughboy</uri>
|
||||
<name>plsburydoughboy</name>
|
||||
<email>plsburydoughboy@kitty.town</email>
|
||||
<summary type="html"><p></p></summary>
|
||||
<link rel="alternate" type="text/html" href="https://kitty.town/@plsburydoughboy"/>
|
||||
<link rel="avatar" type="image/jpeg" media:width="120" media:height="120" href="https://assets.octodon.social/accounts/avatars/000/075/768/original/90d34987b9fdd5b8.jpg"/>
|
||||
<link rel="header" type="image/jpeg" media:width="700" media:height="335" href="https://assets.octodon.social/accounts/headers/000/075/768/original/94c2812f09205c54.jpg"/>
|
||||
<poco:preferredUsername>plsburydoughboy</poco:preferredUsername>
|
||||
<poco:displayName>pls pet the kitty db</poco:displayName>
|
||||
<poco:note></poco:note>
|
||||
<mastodon:scope>public</mastodon:scope>
|
||||
</author>
|
||||
<activity:object-type>http://activitystrea.ms/schema/1.0/note</activity:object-type>
|
||||
<activity:verb>http://activitystrea.ms/schema/1.0/post</activity:verb>
|
||||
<content type="html" xml:lang="en"><p>Marvel: “Infinity War is the most ambitious crossover event in history.”</p><p>Me, fighting off the bad vibes of the world:</p></content>
|
||||
<link rel="mentioned" ostatus:object-type="http://activitystrea.ms/schema/1.0/collection" href="http://activityschema.org/collection/public"/>
|
||||
<link rel="enclosure" type="image/jpeg" length="73798" href="https://assets.octodon.social/media_attachments/files/001/455/106/original/3a7f27a898dfad51.jpg"/>
|
||||
<link rel="enclosure" type="image/jpeg" length="56100" href="https://assets.octodon.social/media_attachments/files/001/455/107/original/b2c15e091ae118b0.jpg"/>
|
||||
<link rel="enclosure" type="image/jpeg" length="54462" href="https://assets.octodon.social/media_attachments/files/001/455/108/original/87d8b73ad85faf44.jpg"/>
|
||||
<link rel="enclosure" type="image/jpeg" length="70995" href="https://assets.octodon.social/media_attachments/files/001/455/109/original/a248e41cfee2a4de.jpg"/>
|
||||
<mastodon:scope>public</mastodon:scope>
|
||||
<link rel="alternate" type="text/html" href="https://kitty.town/@plsburydoughboy/99730600493978927"/>
|
||||
<ostatus:conversation ref="tag:kitty.town,2018-03-23:objectId=2272083:objectType=Conversation"/>
|
||||
</activity:object>
|
||||
<link rel="alternate" type="application/activity+json" href="https://octodon.social/users/fenwick67/statuses/99730661494096566/activity"/>
|
||||
<content type="html" xml:lang=""><p>Marvel: “Infinity War is the most ambitious crossover event in history.”</p><p>Me, fighting off the bad vibes of the world:</p></content>
|
||||
<link rel="mentioned" ostatus:object-type="http://activitystrea.ms/schema/1.0/collection" href="http://activityschema.org/collection/public"/>
|
||||
<mastodon:scope>public</mastodon:scope>
|
||||
<link rel="alternate" type="text/html" href="https://octodon.social/@fenwick67/99730661494096566"/>
|
||||
<link rel="self" type="application/atom+xml" href="https://octodon.social/users/fenwick67/updates/402054.atom"/>
|
||||
<ostatus:conversation ref="tag:octodon.social,2018-03-23:objectId=6251655:objectType=Conversation"/>
|
||||
</entry>
|
||||
<entry>
|
||||
<id>https://octodon.social/users/fenwick67/statuses/99729911231380605</id>
|
||||
<published>2018-03-22T22:27:58Z</published>
|
||||
<updated>2018-03-22T22:27:58Z</updated>
|
||||
<title>New status by fenwick67</title>
|
||||
<activity:object-type>http://activitystrea.ms/schema/1.0/comment</activity:object-type>
|
||||
<activity:verb>http://activitystrea.ms/schema/1.0/post</activity:verb>
|
||||
<link rel="alternate" type="application/activity+json" href="https://octodon.social/users/fenwick67/statuses/99729911231380605"/>
|
||||
<content type="html" xml:lang="en"><p><span class="h-card"><a href="https://mastodon.social/@idesofmerch" class="u-url mention">@<span>idesofmerch</span></a></span> a radar chart would work great for this imo</p></content>
|
||||
<link rel="mentioned" ostatus:object-type="http://activitystrea.ms/schema/1.0/person" href="https://mastodon.social/users/idesofmerch"/>
|
||||
<link rel="mentioned" ostatus:object-type="http://activitystrea.ms/schema/1.0/collection" href="http://activityschema.org/collection/public"/>
|
||||
<mastodon:scope>public</mastodon:scope>
|
||||
<link rel="alternate" type="text/html" href="https://octodon.social/@fenwick67/99729911231380605"/>
|
||||
<link rel="self" type="application/atom+xml" href="https://octodon.social/users/fenwick67/updates/401762.atom"/>
|
||||
<thr:in-reply-to ref="https://mastodon.social/users/idesofmerch/statuses/99729118882454675" href="https://mastodon.social/@idesofmerch/99729118882454675"/>
|
||||
<ostatus:conversation ref="tag:mastodon.social,2018-03-22:objectId=27292083:objectType=Conversation"/>
|
||||
</entry>
|
||||
<entry>
|
||||
<id>https://octodon.social/users/fenwick67/statuses/99728007954983808/activity</id>
|
||||
<published>2018-03-22T14:23:57Z</published>
|
||||
<updated>2018-03-22T14:23:57Z</updated>
|
||||
<title>fenwick67 shared a status by weird_hell@cybre.space</title>
|
||||
<activity:object-type>http://activitystrea.ms/schema/1.0/activity</activity:object-type>
|
||||
<activity:verb>http://activitystrea.ms/schema/1.0/share</activity:verb>
|
||||
<activity:object>
|
||||
<id>https://cybre.space/users/weird_hell/statuses/99725634875265024</id>
|
||||
<published>2018-03-22T04:20:27Z</published>
|
||||
<updated>2018-03-22T04:20:27Z</updated>
|
||||
<title>New status by weird_hell@cybre.space</title>
|
||||
<author>
|
||||
<id>https://cybre.space/users/weird_hell</id>
|
||||
<activity:object-type>http://activitystrea.ms/schema/1.0/person</activity:object-type>
|
||||
<uri>https://cybre.space/users/weird_hell</uri>
|
||||
<name>weird_hell</name>
|
||||
<email>weird_hell@cybre.space</email>
|
||||
<summary type="html"><p>A robot that builds and maintains other, less complex robots.</p><p>Enby / bi/pan as hell / Some days really appreciates your food CWs. &lt;3</p></summary>
|
||||
<link rel="alternate" type="text/html" href="https://cybre.space/@weird_hell"/>
|
||||
<link rel="avatar" type="image/png" media:width="120" media:height="120" href="https://assets.octodon.social/accounts/avatars/000/064/532/original/bc18522f40c53be1.png"/>
|
||||
<link rel="header" type="image/png" media:width="700" media:height="335" href="https://assets.octodon.social/accounts/headers/000/064/532/original/b530a373fc50e742.png"/>
|
||||
<poco:preferredUsername>weird_hell</poco:preferredUsername>
|
||||
<poco:displayName>Display Neam</poco:displayName>
|
||||
<poco:note>A robot that builds and maintains other, less complex robots.Enby / bi/pan as hell / Some days really appreciates your food CWs. &lt;3</poco:note>
|
||||
<mastodon:scope>public</mastodon:scope>
|
||||
</author>
|
||||
<activity:object-type>http://activitystrea.ms/schema/1.0/note</activity:object-type>
|
||||
<activity:verb>http://activitystrea.ms/schema/1.0/post</activity:verb>
|
||||
<content type="html" xml:lang="en"><p>if you can't be normal, stop trying to be normal.</p><p>Be weird. Go hard. Don't follow the advice.</p></content>
|
||||
<link rel="mentioned" ostatus:object-type="http://activitystrea.ms/schema/1.0/collection" href="http://activityschema.org/collection/public"/>
|
||||
<mastodon:scope>public</mastodon:scope>
|
||||
<link rel="alternate" type="text/html" href="https://cybre.space/@weird_hell/99725634875265024"/>
|
||||
<ostatus:conversation ref="tag:cybre.space,2018-03-22:objectId=5342800:objectType=Conversation"/>
|
||||
</activity:object>
|
||||
<link rel="alternate" type="application/activity+json" href="https://octodon.social/users/fenwick67/statuses/99728007954983808/activity"/>
|
||||
<content type="html" xml:lang=""><p>if you can't be normal, stop trying to be normal.</p><p>Be weird. Go hard. Don't follow the advice.</p></content>
|
||||
<link rel="mentioned" ostatus:object-type="http://activitystrea.ms/schema/1.0/collection" href="http://activityschema.org/collection/public"/>
|
||||
<mastodon:scope>public</mastodon:scope>
|
||||
<link rel="alternate" type="text/html" href="https://octodon.social/@fenwick67/99728007954983808"/>
|
||||
<link rel="self" type="application/atom+xml" href="https://octodon.social/users/fenwick67/updates/401069.atom"/>
|
||||
<ostatus:conversation ref="tag:octodon.social,2018-03-22:objectId=6232877:objectType=Conversation"/>
|
||||
</entry>
|
||||
<entry>
|
||||
<id>https://octodon.social/users/fenwick67/statuses/99727127483386833/activity</id>
|
||||
<published>2018-03-22T10:40:02Z</published>
|
||||
<updated>2018-03-22T10:40:02Z</updated>
|
||||
<title>fenwick67 shared a status by irisjaycomics@mastodon.social</title>
|
||||
<activity:object-type>http://activitystrea.ms/schema/1.0/activity</activity:object-type>
|
||||
<activity:verb>http://activitystrea.ms/schema/1.0/share</activity:verb>
|
||||
<activity:object>
|
||||
<id>https://mastodon.social/users/irisjaycomics/statuses/99718925908910667</id>
|
||||
<published>2018-03-20T23:54:19Z</published>
|
||||
<updated>2018-03-20T23:54:19Z</updated>
|
||||
<title>New status by irisjaycomics@mastodon.social</title>
|
||||
<author>
|
||||
<id>https://mastodon.social/users/irisjaycomics</id>
|
||||
<activity:object-type>http://activitystrea.ms/schema/1.0/person</activity:object-type>
|
||||
<uri>https://mastodon.social/users/irisjaycomics</uri>
|
||||
<name>irisjaycomics</name>
|
||||
<email>irisjaycomics@mastodon.social</email>
|
||||
<summary type="html"><p>She/they. Comics: Crossed Wires, Epiphany, Golden Trick (writer). <a href="http://irisjay.net" rel="nofollow noopener" target="_blank"><span class="invisible">http://</span><span class="">irisjay.net</span><span class="invisible"></span></a>. Icon by @skollirubedo.</p></summary>
|
||||
<link rel="alternate" type="text/html" href="https://mastodon.social/@irisjaycomics"/>
|
||||
<link rel="avatar" type="image/jpeg" media:width="120" media:height="120" href="https://assets.octodon.social/accounts/avatars/000/003/021/original/5af47bfdcd870f0f.jpg"/>
|
||||
<link rel="header" type="image/jpeg" media:width="700" media:height="335" href="https://assets.octodon.social/accounts/headers/000/003/021/original/7909c6cf96e18beb.jpeg"/>
|
||||
<poco:preferredUsername>irisjaycomics</poco:preferredUsername>
|
||||
<poco:displayName>✨Iris Jay✨</poco:displayName>
|
||||
<poco:note>She/they. Comics: Crossed Wires, Epiphany, Golden Trick (writer). http://irisjay.net. Icon by @skollirubedo.</poco:note>
|
||||
<mastodon:scope>public</mastodon:scope>
|
||||
</author>
|
||||
<activity:object-type>http://activitystrea.ms/schema/1.0/note</activity:object-type>
|
||||
<activity:verb>http://activitystrea.ms/schema/1.0/post</activity:verb>
|
||||
<content type="html" xml:lang="en"><p>crossedwires.irisjay.net/?comic=02-106 NEW CROSSED WIRES UPDATE IS LIVE! It’s showdown time and nobody’s playing fair. <a href="https://mastodon.social/tags/cyberpunk" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>cyberpunk</span></a> <a href="https://mastodon.social/tags/webcomic" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>webcomic</span></a> <a href="https://mastodon.social/tags/queercomics" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>queercomics</span></a> </p><p>Read from the beginning here: <a href="http://crossedwires.irisjay.net/?comic=001" rel="nofollow noopener" target="_blank"><span class="invisible">http://</span><span class="ellipsis">crossedwires.irisjay.net/?comi</span><span class="invisible">c=001</span></a> Buy the book here: <a href="http://oreillyjay.tictail.com/product/crossed-wires-volume-1" rel="nofollow noopener" target="_blank"><span class="invisible">http://</span><span class="ellipsis">oreillyjay.tictail.com/product</span><span class="invisible">/crossed-wires-volume-1</span></a> … Send me a tip here: <a href="http://ko-fi.com/irisjay" rel="nofollow noopener" target="_blank"><span class="invisible">http://</span><span class="">ko-fi.com/irisjay</span><span class="invisible"></span></a></p></content>
|
||||
<link rel="mentioned" ostatus:object-type="http://activitystrea.ms/schema/1.0/collection" href="http://activityschema.org/collection/public"/>
|
||||
<category term="cyberpunk"/>
|
||||
<category term="webcomic"/>
|
||||
<category term="queercomics"/>
|
||||
<link rel="enclosure" type="image/jpeg" length="318770" href="https://assets.octodon.social/media_attachments/files/001/444/174/original/8c0612168aa67f3b.jpg"/>
|
||||
<mastodon:scope>public</mastodon:scope>
|
||||
<link rel="alternate" type="text/html" href="https://mastodon.social/@irisjaycomics/99718925908910667"/>
|
||||
<ostatus:conversation ref="tag:mastodon.social,2018-03-20:objectId=27105506:objectType=Conversation"/>
|
||||
</activity:object>
|
||||
<link rel="alternate" type="application/activity+json" href="https://octodon.social/users/fenwick67/statuses/99727127483386833/activity"/>
|
||||
<content type="html" xml:lang=""><p>crossedwires.irisjay.net/?comic=02-106 NEW CROSSED WIRES UPDATE IS LIVE! It’s showdown time and nobody’s playing fair. <a href="https://mastodon.social/tags/cyberpunk" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>cyberpunk</span></a> <a href="https://mastodon.social/tags/webcomic" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>webcomic</span></a> <a href="https://mastodon.social/tags/queercomics" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>queercomics</span></a> </p><p>Read from the beginning here: <a href="http://crossedwires.irisjay.net/?comic=001" rel="nofollow noopener" target="_blank"><span class="invisible">http://</span><span class="ellipsis">crossedwires.irisjay.net/?comi</span><span class="invisible">c=001</span></a> Buy the book here: <a href="http://oreillyjay.tictail.com/product/crossed-wires-volume-1" rel="nofollow noopener" target="_blank"><span class="invisible">http://</span><span class="ellipsis">oreillyjay.tictail.com/product</span><span class="invisible">/crossed-wires-volume-1</span></a> … Send me a tip here: <a href="http://ko-fi.com/irisjay" rel="nofollow noopener" target="_blank"><span class="invisible">http://</span><span class="">ko-fi.com/irisjay</span><span class="invisible"></span></a></p></content>
|
||||
<link rel="mentioned" ostatus:object-type="http://activitystrea.ms/schema/1.0/collection" href="http://activityschema.org/collection/public"/>
|
||||
<mastodon:scope>public</mastodon:scope>
|
||||
<link rel="alternate" type="text/html" href="https://octodon.social/@fenwick67/99727127483386833"/>
|
||||
<link rel="self" type="application/atom+xml" href="https://octodon.social/users/fenwick67/updates/400867.atom"/>
|
||||
<ostatus:conversation ref="tag:octodon.social,2018-03-22:objectId=6227034:objectType=Conversation"/>
|
||||
</entry>
|
||||
<entry>
|
||||
<id>https://octodon.social/users/fenwick67/statuses/99724279300280892/activity</id>
|
||||
<published>2018-03-21T22:35:42Z</published>
|
||||
<updated>2018-03-21T22:35:42Z</updated>
|
||||
<title>fenwick67 shared a status by omanreagan@scholar.social</title>
|
||||
<activity:object-type>http://activitystrea.ms/schema/1.0/activity</activity:object-type>
|
||||
<activity:verb>http://activitystrea.ms/schema/1.0/share</activity:verb>
|
||||
<activity:object>
|
||||
<id>https://scholar.social/users/omanreagan/statuses/99723766503256517</id>
|
||||
<published>2018-03-21T20:25:48Z</published>
|
||||
<updated>2018-03-21T20:25:48Z</updated>
|
||||
<title>New status by omanreagan@scholar.social</title>
|
||||
<author>
|
||||
<id>https://scholar.social/users/omanreagan</id>
|
||||
<activity:object-type>http://activitystrea.ms/schema/1.0/person</activity:object-type>
|
||||
<uri>https://scholar.social/users/omanreagan</uri>
|
||||
<name>omanreagan</name>
|
||||
<email>omanreagan@scholar.social</email>
|
||||
<summary type="html"><p>Anthropologist. PhDing: exploration beyond Sol system, SETI, imagination, interstellar futures, sci-fi. [he/him, they/them] <a href="https://www.patreon.com/omanreagan" rel="nofollow noopener" target="_blank"><span class="invisible">https://www.</span><span class="">patreon.com/omanreagan</span><span class="invisible"></span></a></p></summary>
|
||||
<link rel="alternate" type="text/html" href="https://scholar.social/@omanreagan"/>
|
||||
<link rel="avatar" type="image/png" media:width="120" media:height="120" href="https://assets.octodon.social/accounts/avatars/000/061/431/original/fc6afa77dfda97a6.png"/>
|
||||
<link rel="header" type="image/jpeg" media:width="700" media:height="335" href="https://assets.octodon.social/accounts/headers/000/061/431/original/bdb680f32974ecd0.jpg"/>
|
||||
<poco:preferredUsername>omanreagan</poco:preferredUsername>
|
||||
<poco:displayName>Michael 🚀</poco:displayName>
|
||||
<poco:note>Anthropologist. PhDing: exploration beyond Sol system, SETI, imagination, interstellar futures, sci-fi. [he/him, they/them] https://www.patreon.com/omanreagan</poco:note>
|
||||
<mastodon:scope>public</mastodon:scope>
|
||||
</author>
|
||||
<activity:object-type>http://activitystrea.ms/schema/1.0/comment</activity:object-type>
|
||||
<activity:verb>http://activitystrea.ms/schema/1.0/post</activity:verb>
|
||||
<content type="html" xml:lang="en"><p>Most importantly, stop putting institutional events on Facebook, stop using it at universities, stop making participation in Facebook mandatory through your institutional, organization, and activist roles. You can be online, and social, and connected without supporting Facebook.</p></content>
|
||||
<mastodon:scope>unlisted</mastodon:scope>
|
||||
<link rel="alternate" type="text/html" href="https://scholar.social/@omanreagan/99723766503256517"/>
|
||||
<thr:in-reply-to ref="https://scholar.social/users/omanreagan/statuses/99723719599246271" href="https://scholar.social/@omanreagan/99723719599246271"/>
|
||||
<ostatus:conversation ref="tag:scholar.social,2018-03-21:objectId=1388298:objectType=Conversation"/>
|
||||
</activity:object>
|
||||
<link rel="alternate" type="application/activity+json" href="https://octodon.social/users/fenwick67/statuses/99724279300280892/activity"/>
|
||||
<content type="html" xml:lang=""><p>Most importantly, stop putting institutional events on Facebook, stop using it at universities, stop making participation in Facebook mandatory through your institutional, organization, and activist roles. You can be online, and social, and connected without supporting Facebook.</p></content>
|
||||
<mastodon:scope>unlisted</mastodon:scope>
|
||||
<link rel="alternate" type="text/html" href="https://octodon.social/@fenwick67/99724279300280892"/>
|
||||
<link rel="self" type="application/atom+xml" href="https://octodon.social/users/fenwick67/updates/400244.atom"/>
|
||||
<ostatus:conversation ref="tag:octodon.social,2018-03-21:objectId=6213207:objectType=Conversation"/>
|
||||
</entry>
|
||||
<entry>
|
||||
<id>https://octodon.social/users/fenwick67/statuses/99723825992791716/activity</id>
|
||||
<published>2018-03-21T20:40:25Z</published>
|
||||
<updated>2018-03-21T20:40:25Z</updated>
|
||||
<title>fenwick67 shared a status by elomatreb@glitch.social</title>
|
||||
<activity:object-type>http://activitystrea.ms/schema/1.0/activity</activity:object-type>
|
||||
<activity:verb>http://activitystrea.ms/schema/1.0/share</activity:verb>
|
||||
<activity:object>
|
||||
<id>https://glitch.social/users/elomatreb/statuses/99723784825017673</id>
|
||||
<published>2018-03-21T20:29:58Z</published>
|
||||
<updated>2018-03-21T20:29:58Z</updated>
|
||||
<title>New status by elomatreb@glitch.social</title>
|
||||
<author>
|
||||
<id>https://glitch.social/users/elomatreb</id>
|
||||
<activity:object-type>http://activitystrea.ms/schema/1.0/person</activity:object-type>
|
||||
<uri>https://glitch.social/users/elomatreb</uri>
|
||||
<name>elomatreb</name>
|
||||
<email>elomatreb@glitch.social</email>
|
||||
<summary type="html"><p>German, English</p><p>Ruby, High Voltage electronics, [Shockingly] bad at computers. Lives in northern Germany.</p><p><a href="https://ole.bertr.am/" rel="nofollow noopener" target="_blank"><span class="invisible">https://</span><span class="">ole.bertr.am/</span><span class="invisible"></span></a> - Previously <span class="h-card"><a href="https://anti.energy/@elomatreb" class="u-url mention" rel="nofollow noopener" target="_blank">@<span>elomatreb</span></a></span></p></summary>
|
||||
<link rel="alternate" type="text/html" href="https://glitch.social/@elomatreb"/>
|
||||
<link rel="avatar" type="image/png" media:width="120" media:height="120" href="https://assets.octodon.social/accounts/avatars/000/076/355/original/0d8540c1ddb5b8f0.png"/>
|
||||
<link rel="header" type="image/jpeg" media:width="700" media:height="335" href="https://assets.octodon.social/accounts/headers/000/076/355/original/913bfe0ea3e805cb.jpg"/>
|
||||
<poco:preferredUsername>elomatreb</poco:preferredUsername>
|
||||
<poco:displayName>elomatreb 🐟</poco:displayName>
|
||||
<poco:note>German, EnglishRuby, High Voltage electronics, [Shockingly] bad at computers. Lives in northern Germany.https://ole.bertr.am/ - Previously @elomatreb</poco:note>
|
||||
<mastodon:scope>public</mastodon:scope>
|
||||
</author>
|
||||
<activity:object-type>http://activitystrea.ms/schema/1.0/note</activity:object-type>
|
||||
<activity:verb>http://activitystrea.ms/schema/1.0/post</activity:verb>
|
||||
<content type="html" xml:lang="en"><p>Decades of programming language research destroyed in one sick own by a rotating coyote</p></content>
|
||||
<link rel="mentioned" ostatus:object-type="http://activitystrea.ms/schema/1.0/collection" href="http://activityschema.org/collection/public"/>
|
||||
<mastodon:scope>public</mastodon:scope>
|
||||
<link rel="alternate" type="text/html" href="https://glitch.social/@elomatreb/99723784825017673"/>
|
||||
<ostatus:conversation ref="tag:glitch.social,2018-03-21:objectId=4167153:objectType=Conversation"/>
|
||||
</activity:object>
|
||||
<link rel="alternate" type="application/activity+json" href="https://octodon.social/users/fenwick67/statuses/99723825992791716/activity"/>
|
||||
<content type="html" xml:lang=""><p>Decades of programming language research destroyed in one sick own by a rotating coyote</p></content>
|
||||
<link rel="mentioned" ostatus:object-type="http://activitystrea.ms/schema/1.0/collection" href="http://activityschema.org/collection/public"/>
|
||||
<mastodon:scope>public</mastodon:scope>
|
||||
<link rel="alternate" type="text/html" href="https://octodon.social/@fenwick67/99723825992791716"/>
|
||||
<link rel="self" type="application/atom+xml" href="https://octodon.social/users/fenwick67/updates/400111.atom"/>
|
||||
<ostatus:conversation ref="tag:octodon.social,2018-03-21:objectId=6210577:objectType=Conversation"/>
|
||||
</entry>
|
||||
</feed>
|
14
test/test.js
14
test/test.js
|
@ -1,14 +0,0 @@
|
|||
// do a test
|
||||
|
||||
|
||||
import { createReadStream, writeFileSync } from "fs";
|
||||
import convert from "../lib/convert.js";
|
||||
|
||||
|
||||
let r = createReadStream("./test/sample.atom");
|
||||
|
||||
convert(r,function(er,data){
|
||||
if (er){return console.log("error: ",er);}
|
||||
console.log("ok");
|
||||
writeFileSync("./test/result.html",data,"utf8");
|
||||
});
|
Loading…
Reference in a new issue