Skip to content

Commit

Permalink
Merge pull request #3 from vivek-nexus/v2.0.0
Browse files Browse the repository at this point in the history
v2.0.0
  • Loading branch information
vivek-nexus authored Feb 14, 2024
2 parents 308aa31 + 0466875 commit fa7873d
Show file tree
Hide file tree
Showing 11 changed files with 31 additions and 25 deletions.
14 changes: 7 additions & 7 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
# Transcripto
# TranscripTonic
Simple Google Meet transcripts. Private and open source.

![marquee-large](/assets/marquee-large.png)
Expand All @@ -20,21 +20,21 @@ View video on [YouTube](https://www.youtube.com/watch?v=MRmZLO-f8Sg)


# Installation
<a href="https://chromewebstore.google.com/detail/transcripto/ciepnfnceimjehngolkijpnbappkkiag" target="_blank">
<a href="https://chromewebstore.google.com/detail/ciepnfnceimjehngolkijpnbappkkiag" target="_blank">
<img src="https://storage.googleapis.com/web-dev-uploads/image/WlD8wC6g8khYWPJUsQceQkhXSlv1/iNEddTyWiMfLSwFD6qGq.png" />
</a>

<br />
<br />

# How to use Transcripto
# How to use TranscripTonic
![screenshot-2](/assets/screenshot-2.png)
Transcripto has two modes of operation.
TranscripTonic has two modes of operation.

**In both modes, transcript will be automatically downloaded as a text file at the end of each meeting.**

- **Auto mode:** Automatically records transcripts for all meetings
- **Manual mode:** Switch on Transcripto by clicking on captions icon in Google Meet (CC icon)
- **Manual mode:** Switch on TranscripTonic by clicking on captions icon in Google Meet (CC icon)


> **Avoid closing the meeting tab to end the call.** If you do it by mistake, you can still download the last meeting transcript by opening the extension. This will be overwritten when a new meeting starts.
Expand All @@ -48,12 +48,12 @@ Transcripto has two modes of operation.

**Can I change the language of the transcript?**

Yes. Transcripto picks up the output of Google Meet captions. Google Meet captions supports variety of languages that you can choose from. Click the settings icon when captions start showing and change the language.
Yes. TranscripTonic picks up the output of Google Meet captions. Google Meet captions supports variety of languages that you can choose from. Click the settings icon when captions start showing and change the language.

<br />
<br />

# Privacy policy
Transcripto Chrome extension does not collect any information from users in any manner. All processing/transcript storage happens within the user's Chrome browser and does not leave the device.
TranscripTonic Chrome extension does not collect any information from users in any manner. All processing/transcript storage happens within the user's Chrome browser and does not leave the device.


Binary file modified assets/demo.gif
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified assets/marquee-large.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified assets/marquee-small.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified assets/screenshot-1.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified assets/screenshot-2.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified assets/youtube-thumbnail.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
11 changes: 6 additions & 5 deletions extension/background.js
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ chrome.runtime.onMessage.addListener(function (message, sender, sendResponse) {
function downloadTranscript() {
chrome.storage.local.get(["transcript", "meetingTitle", "meetingStartTimeStamp"], function (result) {
if (result.transcript) {
const fileName = result.meetingTitle && result.meetingStartTimeStamp ? `Transcripto/Transcript-${result.meetingTitle} at ${result.meetingStartTimeStamp}.txt` : `Transcripto/Transcript.txt`
const fileName = result.meetingTitle && result.meetingStartTimeStamp ? `TranscripTonic/Transcript-${result.meetingTitle} at ${result.meetingStartTimeStamp}.txt` : `TranscripTonic/Transcript.txt`

// Create an array to store lines of the text file
const lines = [];
Expand All @@ -35,7 +35,8 @@ function downloadTranscript() {
});

lines.push("---")
lines.push("Transcript saved using Transcripto Chrome extension")
lines.push("Transcript saved using TranscripTonic Chrome extension (https://chromewebstore.google.com/detail/ciepnfnceimjehngolkijpnbappkkiag)")


// Join the lines into a single string
const textContent = lines.join('\n');
Expand All @@ -50,15 +51,15 @@ function downloadTranscript() {
filename: fileName,
conflictAction: 'uniquify' // Automatically rename the file if it already exists
}).then(() => {
console.log("Transcript downloaded to Transcripto directory")
console.log("Transcript downloaded to TranscripTonic directory")
}).catch((error) => {
console.log(error)
chrome.downloads.download({
url: 'data:text/plain;base64,' + btoa(textContent),
filename: "Transcripto/Transcript.txt",
filename: "TranscripTonic/Transcript.txt",
conflictAction: 'uniquify' // Automatically rename the file if it already exists
})
console.log("Invalid file name. Transcript downloaded to Transcripto directory with simple file name.")
console.log("Invalid file name. Transcript downloaded to TranscripTonic directory with simple file name.")
})
}
else
Expand Down
15 changes: 10 additions & 5 deletions extension/content.js
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ let meetingStartTimeStamp = new Date().toLocaleString("default", options).replac
let meetingTitle = document.title
const extensionStatusJSON_bug = {
"status": 400,
"message": "<strong>Transcripto seems to have an error</strong> <br /> Please report it <a href='https://github.com/vivek-nexus/transcripto/issues' target='_blank'>here</a>."
"message": "<strong>TranscripTonic seems to have an error</strong> <br /> Please report it <a href='https://github.com/vivek-nexus/transcriptonic/issues' target='_blank'>here</a>."
}

checkExtensionStatus().then(() => {
Expand Down Expand Up @@ -50,7 +50,7 @@ checkExtensionStatus().then(() => {
observer.observe(targetNode, config)
chrome.storage.sync.get(["operationMode"], function (result) {
if (result.operationMode == "manual")
showNotification({ status: 400, message: "<strong>Transcripto is not running</strong> <br /> Turn on captions using the CC icon, if needed" })
showNotification({ status: 400, message: "<strong>TranscripTonic is not running</strong> <br /> Turn on captions using the CC icon, if needed" })
else
showNotification(extensionStatusJSON)
})
Expand Down Expand Up @@ -196,8 +196,13 @@ function transcriber(mutationsList, observer) {
const people = document.querySelector('.a4cQT').firstChild.firstChild.childNodes

const person = people[people.length - 1]
const currentPersonName = person.childNodes[1] ? person.childNodes[1].textContent : ""
const currentTranscriptText = person.childNodes[2].lastChild ? person.childNodes[2].lastChild.textContent : ""
if ((!person.childNodes[0]) || (!person.childNodes[1]?.lastChild)) {
console.log("There is a bug in TranscripTonic. Please report it at https://github.com/vivek-nexus/transcriptonic/issues")
showNotification(extensionStatusJSON_bug)
return
}
const currentPersonName = person.childNodes[0] ? person.childNodes[0].textContent : ""
const currentTranscriptText = person.childNodes[1].lastChild ? person.childNodes[1].lastChild.textContent : ""

if (beforeTranscriptText == "") {
personNameBuffer = currentPersonName
Expand Down Expand Up @@ -263,7 +268,7 @@ function updateMeetingTitle() {
async function checkExtensionStatus() {
// Set default value as 200
chrome.storage.local.set({
extensionStatusJSON: { status: 200, message: "<strong>Transcripto is running</strong> <br /> Do not turn off captions" },
extensionStatusJSON: { status: 200, message: "<strong>TranscripTonic is running</strong> <br /> Do not turn off captions" },
});

// https://stackoverflow.com/a/42518434
Expand Down
4 changes: 2 additions & 2 deletions extension/manifest.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "Transcripto",
"version": "1.1.0",
"name": "TranscripTonic",
"version": "2.0.0",
"manifest_version": 3,
"description": "Simple Google Meet transcripts. Private and open source.",
"action": {
Expand Down
12 changes: 6 additions & 6 deletions extension/popup.html
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
<html>

<head>
<title>Transcripto</title>
<title>TranscripTonic</title>
<style>
@import url('https://fonts.googleapis.com/css2?family=Outfit:wght@400;700&display=swap');

Expand Down Expand Up @@ -71,7 +71,7 @@
<div style="display: flex; gap: 1rem; align-items: center;">
<img src="./icon.png" width="48px" height="48px" alt="" />
<div>
<h1 style="margin: 0px;">Transcripto</h1>
<h1 style="margin: 0px;">TranscripTonic</h1>
<p style="margin: 0px;">
Simple Google Meet transcripts. Private and open source.
</p>
Expand All @@ -90,21 +90,21 @@ <h1 style="margin: 0px;">Transcripto</h1>
<label><b>Manual</b> (switch on transcript as needed) </label>
</div>
<div class="get-started">
<h2>How to use Transcripto?</h2>
<h2>How to use TranscripTonic?</h2>
<p>In both modes, transcript will be automatically downloaded as a text file at the end of each meeting. <b>Avoid
closing the meeting tab.</b></p>
<ul>
<li><b>Auto mode:</b> Automatically records transcripts for all meetings</li>
<li><b>Manual mode:</b> Switch on Transcripto by clicking on captions icon in Google Meet (CC icon)</li>
<li><b>Manual mode:</b> Switch on TranscripTonic by clicking on captions icon in Google Meet (CC icon)</li>
</ul>
</div>
<div>
<div style="margin-bottom: 2.75rem">
<a href="" id="last-meeting-transcript">Download last meeting transcript</a>
&nbsp; &nbsp; &nbsp; | &nbsp; &nbsp; &nbsp;
<a href="https://github.com/vivek-nexus/transcripto#readme" target="_blank">Get more help</a>
<a href="https://github.com/vivek-nexus/transcriptonic#readme" target="_blank">Get more help</a>
&nbsp; &nbsp; &nbsp; | &nbsp; &nbsp; &nbsp;
<a href="https://github.com/vivek-nexus/transcripto/issues" target="_blank">Report a bug</a>
<a href="https://github.com/vivek-nexus/transcriptonic/issues" target="_blank">Report a bug</a>
</div>
<p style="font-size: small;">Another
project by <span><a href="https://vivek-nexus.github.io" target="_blank"
Expand Down

0 comments on commit fa7873d

Please sign in to comment.