Script to update Ethereum Prices in Youtube Title
https://www.youtube.com/watch?v=ppslF1Sj7_I
script.js
const fs = require("fs");const readline = require("readline");const { google } = require("googleapis");const OAuth2 = google.auth.OAuth2;const https = require('https');let priceNow = "";const fetch = require('node-fetch');const { time } = require("console");let url = "https://api.coingecko.com/api/v3/simple/price?ids=ethereum&vs_currencies=usd";let settings = { method: "Get" };fetch(url, settings)
.then(res => res.json())
.then((json) => {priceNow = json;});
// If modifying these scopes, delete your previously saved credentials// at ~/.credentials/youtube-nodejs-quickstart.jsonvar SCOPES = ["https://www.googleapis.com/auth/youtube.force-ssl"];var TOKEN_DIR =
(process.env.HOME || process.env.HOMEPATH || process.env.USERPROFILE) +"/.credentials/";var TOKEN_PATH = TOKEN_DIR + "youtube-updater.json";const youtube = google.youtube("v3");const VIDEO_ID = "[your video id here]";// Load client secrets from a local file.fs.readFile("credentials.json", function processClientSecrets(err, content) {if (err) {console.log("Error loading client secret file: " + err);return;
}// Authorize a client with the loaded credentials, then call the YouTube API.authorize(JSON.parse(content), makeAuthCall);});/**
* Create an OAuth2 client with the given credentials, and then execute the
* given callback function.
*
* @param {Object} credentials The authorization client credentials.
* @param {function} callback The callback to call with the authorized client.
*/function authorize(credentials, callback) {var clientSecret = credentials.installed.client_secret;var clientId = credentials.installed.client_id;var redirectUrl = credentials.installed.redirect_uris[0];var oauth2Client = new OAuth2(clientId, clientSecret, redirectUrl);// Check if we have previously stored a token.fs.readFile(TOKEN_PATH, function (err, token) {if (err) {getNewToken(oauth2Client, callback);
} else {oauth2Client.credentials = JSON.parse(token);callback(oauth2Client);
}
});}/**
* Get and store new token after prompting for user authorization, and then
* execute the given callback with the authorized OAuth2 client.
*
* @param {google.auth.OAuth2} oauth2Client The OAuth2 client to get token for.
* @param {getEventsCallback} callback The callback to call with the authorized
* client.
*/function getNewToken(oauth2Client, callback) {var authUrl = oauth2Client.generateAuthUrl({access_type: "offline",scope: SCOPES,
});console.log("Authorize this app by visiting this url: ", authUrl);var rl = readline.createInterface({input: process.stdin,output: process.stdout,
});rl.question("Enter the code from that page here: ", function (code) {rl.close();oauth2Client.getToken(code, function (err, token) {if (err) {console.log("Error while trying to retrieve access token", err);return;
}oauth2Client.credentials = token;storeToken(token);callback(oauth2Client);
});
});}/**
* Store token to disk be used in later program executions.
*
* @param {Object} token The token to store to disk.
*/function storeToken(token) {try {fs.mkdirSync(TOKEN_DIR);
} catch (err) {if (err.code != "EEXIST") {throw err;
}
}fs.writeFile(TOKEN_PATH, JSON.stringify(token), (err) => {if (err) throw err;console.log("Token stored to " + TOKEN_PATH);
});}// COde above here is from the Google Docsconst makeAuthCall = (auth) => {youtube.videos.list(
{auth: auth,id: VIDEO_ID,part: "id,snippet,statistics",
},
(err, response) => {if (err) {console.log(
some shit went wrong ${err}
);return; }if (response.data.items[0]) {// We have found the video and the detailsconsole.log(`We found the video, now updating…`);updateVideoTitle(response.data.items[0], auth); } } );};const updateVideoTitle = (video, auth) => {console.log(priceNow);const usd = priceNow.ethereum.usd;console.log(usd);const timeInMss = new Date;const dt = timeInMss.toGMTString();let descrip = "Ethereum price Updates in Title";descript = "rnAuthor: [
https://www.reddit.com/user/gravemindx`](https://www.reddit.com/user/gravemindx)`";descrip += "rnMusic :` [`https://www.bensound.com/royalty-free-music/cinematic`](https://www.bensound.com/royalty-free-music/cinematic)`";descrip += "rnOrig Vid:` [`https://www.reddit.com/r/ethereum/comments/nl1n4w/since_im_a_great_fanboy_of_ethereum_i_created/`](https://www.reddit.com/r/ethereum/comments/nl1n4w/since_im_a_great_fanboy_of_ethereum_i_created/)`";descrip += "rnInspiration:` [`https://www.youtube.com/watch?v=BxV14h0kFs0`](https://www.youtube.com/watch?v=BxV14h0kFs0)`";descrip += "rnDonate ===============================";descrip += "rnGravemind: 0xE201Fa932724229Cb614ee1938E17C8Cf189C33E";descrip += "rnCross_De_Lena: 0x525f7c2c2a7f17f5827eda095ed3418ee991829b";descrip += "rnDonate ===============================";descrip += "rnUpdated " + dt;“
youtube.videos.update( {auth: auth,part: 'snippet',resource: {id: VIDEO_ID,snippet: {title: Ethereum price $ ${usd} USD at
+ dt,description: descrip,categoryId: 23 } } }, (err, response) => {//console.log(response);if (err) {console.log(`There was an error updating ${err}`);return; }if (response.data.items) {console.log("Done"); } } );};“
submitted by /u/gravemindx
[link] [comments]