fantastic-garbanzo/Redditlikekerfuffle.HTML
2023-12-02 10:25:26 +01:00

114 lines
3.8 KiB
HTML

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Anonymous Twitter</title>
</head>
<body>
<div>
<h2>Post a Tweet</h2>
<textarea id="tweetInput" rows="4" cols="50"></textarea>
<br>
<button onclick="postTweet()">Post</button>
</div>
<div>
<h2>Tweets</h2>
<ul id="tweetList"></ul>
</div>
<script>
const username = 'Dangrainage';
const repo = 'Urban';
const token = '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';
// GitHub API endpoint
const githubApiUrl = `https://api.github.com/repos/${username}/${repo}/contents/`;
// Fetch tweets from the GitHub repository
function fetchTweets() {
fetch(githubApiUrl)
.then(response => response.json())
.then(files => {
const tweetFiles = files.filter(file => file.name.endsWith('.json'));
// Display tweets
displayTweets(tweetFiles);
})
.catch(error => console.error('Error fetching tweets:', error));
}
// Display tweets on the page
function displayTweets(tweetFiles) {
const tweetList = document.getElementById('tweetList');
tweetList.innerHTML = '';
tweetFiles.forEach(file => {
const listItem = document.createElement('li');
// Fetch and display tweet content
fetch(`${githubApiUrl}${file.name}`)
.then(response => response.json())
.then(tweet => {
const tweetText = JSON.parse(atob(tweet.content)).text;
// Create a paragraph for each tweet
const paragraph = document.createElement('p');
paragraph.textContent = tweetText;
listItem.appendChild(paragraph);
})
.catch(error => console.error('Error fetching tweet content:', error));
tweetList.appendChild(listItem);
});
}
// Post a new tweet
function postTweet() {
const tweetInput = document.getElementById('tweetInput');
const tweetText = tweetInput.value;
if (tweetText.trim() !== '') {
const fileName = `tweet_${Date.now()}.json`;
const fileContent = JSON.stringify({ text: tweetText }, null, 2);
// Create a new tweet file
createFile(fileName, fileContent);
// Clear the input field
tweetInput.value = '';
}
}
// Create a new file in the GitHub repository
function createFile(fileName, fileContent) {
const apiUrl = `${githubApiUrl}${fileName}`;
const data = {
message: `Add tweet: ${fileName}`,
content: btoa(fileContent),
branch: 'main'
};
fetch(apiUrl, {
method: 'PUT',
headers: {
'Authorization': `token ${token}`,
'Content-Type': 'application/json',
},
body: JSON.stringify(data),
})
.then(response => response.json())
.then(() => {
// Fetch and display the updated tweets
fetchTweets();
})
.catch(error => console.error('Error creating file:', error));
}
// Fetch and display tweets when the page loads
fetchTweets();
</script>
</body>
</html>