Skip to content

Commit f1e55e0

Browse files
committedMar 15, 2022
multiple login is working
1 parent 0874d07 commit f1e55e0

File tree

6 files changed

+486
-1
lines changed

6 files changed

+486
-1
lines changed
 

‎.gitignore

+4-1
Original file line numberDiff line numberDiff line change
@@ -4,4 +4,7 @@ accounts.json
44

55
playlist.json
66
./playlist.json
7-
./playlist.*
7+
./playlist.*
8+
9+
./test.js
10+
./counter.js

‎bot2.js

+88
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,88 @@
1+
const { Builder, By, Key, until } = require('selenium-webdriver');
2+
const { fs } = require('file-system')
3+
4+
let driver;
5+
//let dealAlarm = 'https://open.spotify.com/artist/2ZHNNNUkWlcboai09BqLRa';
6+
7+
const accounts = JSON.parse(fs.readFileSync("./accounts.json", {encoding:'utf8', flag:'r'}));
8+
const playlist = JSON.parse(fs.readFileSync("./playlist.json", {encoding:'utf8', flag:'r'}));
9+
10+
11+
// test: time interval
12+
//var intervalID = setInterval(startSpotify, 30000, accounts.spotify[0], playlist.spotify[3]);
13+
14+
15+
startSpotify(accounts.spotify[0],playlist.spotify[3]);
16+
17+
async function startSpotify(account, song){
18+
19+
console.log(account);
20+
console.log(song);
21+
22+
const sessionUser = account.email;
23+
const sessionPasswort = account.passwort;
24+
const sessionSong = song.link;
25+
26+
driver = await new Builder().forBrowser("chrome").build();
27+
28+
await driver.manage().window().fullsceen;
29+
30+
31+
/*
32+
await driver.get('https://www.spotify.com');
33+
34+
await sleep(1000);
35+
await driver.switchTo().newWindow("tab");
36+
await driver.get('https://www.google.com');
37+
38+
await sleep(1000);
39+
await driver.switchTo().newWindow("tab");
40+
await driver.get('https://www.youtube.com');*/
41+
42+
await sleep(1000);
43+
44+
const tabs = await driver.getAllWindowHandles();
45+
await sleep(1000);
46+
await driver.switchTo().window(tabs[1]);
47+
48+
49+
await driver.findElement(By.id('onetrust-accept-btn-handler')).click();
50+
51+
await click('Cookies akzeptieren');
52+
await click('Anmelden');
53+
54+
55+
await sleep(1000);
56+
await driver.findElement(By.id('login-username')).sendKeys(sessionUser, Key.RETURN);
57+
await driver.findElement(By.id('login-password')).sendKeys(sessionPasswort, Key.RETURN);
58+
59+
await sleep(1000);
60+
await driver.get(sessionSong);
61+
62+
await sleep(3000);
63+
await driver.findElements(By.className("A8NeSZBojOQuVvK4l1pS")).then(function(elements){
64+
elements.forEach(function (element) {
65+
element.click();
66+
element.getText().then(function(text){
67+
console.log(text);
68+
});
69+
});
70+
});
71+
72+
await sleep(20000);
73+
}
74+
75+
76+
function sleep(ms) {
77+
return new Promise((resolve) => {
78+
setTimeout(resolve, ms);
79+
});
80+
}
81+
82+
83+
async function click(text){
84+
await driver.findElement(By.xpath("//*[text()='" + text + "']")).click();
85+
}
86+
87+
88+

‎bot3.js

+113
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,113 @@
1+
const { Builder, By, Key, until } = require('selenium-webdriver');
2+
const { fs } = require('file-system')
3+
4+
let driver;
5+
//let dealAlarm = 'https://open.spotify.com/artist/2ZHNNNUkWlcboai09BqLRa';
6+
7+
const accounts = JSON.parse(fs.readFileSync("./accounts.json", {encoding:'utf8', flag:'r'}));
8+
const playlist = JSON.parse(fs.readFileSync("./playlist.json", {encoding:'utf8', flag:'r'}));
9+
10+
11+
// test: time interval
12+
//var intervalID = setInterval(startSpotify, 30000, accounts.spotify[0], playlist.spotify[3]);
13+
14+
15+
startSpotify(accounts.spotify[0],playlist.spotify[3]);
16+
17+
async function startSpotify(account, song){
18+
19+
console.log(account);
20+
console.log(song);
21+
22+
const sessionUser = account.email;
23+
const sessionPasswort = account.passwort;
24+
const sessionSong = song.link;
25+
26+
driver = await new Builder().forBrowser("chrome").build();
27+
28+
await driver.manage().window().fullsceen;
29+
30+
31+
32+
await driver.get('https://www.spotify.com');
33+
34+
await sleep(3000);
35+
await driver.findElement(By.id('onetrust-accept-btn-handler')).click();
36+
37+
await click('Cookies akzeptieren');
38+
await click('Anmelden');
39+
40+
41+
await sleep(1000);
42+
await driver.findElement(By.id('login-username')).sendKeys(sessionUser, Key.RETURN);
43+
await driver.findElement(By.id('login-password')).sendKeys(sessionPasswort, Key.RETURN);
44+
45+
await sleep(1000);
46+
await driver.get(sessionSong);
47+
48+
await sleep(3000);
49+
await driver.findElements(By.className("A8NeSZBojOQuVvK4l1pS")).then(function(elements){
50+
elements.forEach(function (element) {
51+
element.click();
52+
element.getText().then(function(text){
53+
console.log(text);
54+
});
55+
});
56+
});
57+
58+
59+
60+
61+
62+
await sleep(1000);
63+
await driver.switchTo().newWindow("tab");
64+
await sleep(1000);
65+
const tabs = await driver.getAllWindowHandles();
66+
await sleep(1000);
67+
await driver.switchTo().window(tabs[0]);
68+
await sleep(1000);
69+
await driver.manage().deleteAllCookies;
70+
await sleep(3000);
71+
72+
await driver.get('https://www.spotify.com');
73+
await sleep(1000);
74+
75+
await driver.manage().deleteAllCookies;
76+
await sleep(3000);
77+
await driver.findElement(By.id('onetrust-accept-btn-handler')).click();
78+
79+
await click('Cookies akzeptieren');
80+
await click('Anmelden');
81+
82+
83+
await sleep(1000);
84+
await driver.findElement(By.id('login-username')).sendKeys(sessionUser, Key.RETURN);
85+
await driver.findElement(By.id('login-password')).sendKeys(sessionPasswort, Key.RETURN);
86+
87+
await sleep(1000);
88+
await driver.get(sessionSong);
89+
90+
await sleep(3000);
91+
await driver.findElements(By.className("A8NeSZBojOQuVvK4l1pS")).then(function(elements){
92+
elements.forEach(function (element) {
93+
element.click();
94+
element.getText().then(function(text){
95+
console.log(text);
96+
});
97+
});
98+
});
99+
100+
await sleep(20000);
101+
}
102+
103+
104+
function sleep(ms) {
105+
return new Promise((resolve) => {
106+
setTimeout(resolve, ms);
107+
});
108+
}
109+
110+
111+
async function click(text){
112+
await driver.findElement(By.xpath("//*[text()='" + text + "']")).click();
113+
}

‎counter.js

+22
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
let interval = 1000
2+
3+
let loops = 4;
4+
5+
function changeInterval(){
6+
interval += 100
7+
}
8+
9+
10+
function count(){
11+
setTimeout(() => {
12+
13+
if (loops > 0){
14+
count()
15+
console.log("jo")
16+
changeInterval();
17+
loops -= 1;
18+
}
19+
}, interval);
20+
}
21+
22+
count();

‎test.js

+52
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
2+
// To display output
3+
//var msg = document.getElementById("message");
4+
5+
// Timer
6+
var t = 200;
7+
8+
f1();
9+
10+
// Function that changes the timer
11+
function changeTimer(){
12+
t = t * 1.2;
13+
}
14+
15+
// Function to run at irregular intervals
16+
function f1() {
17+
console.log("bäm")
18+
changeTimer();
19+
setTimeout(f1, t);
20+
}
21+
22+
23+
24+
/*// Output message
25+
//var msg = document.getElementById("message");
26+
27+
var t = 200; // Timer
28+
29+
// Stores the setInterval ID used by
30+
// clearInterval to stop the timer
31+
var interval;
32+
33+
f1();
34+
35+
// Function that changes the timer
36+
function changeTimer(){
37+
t = t * 1.2;
38+
}
39+
40+
41+
42+
// Function that run at irregular intervals
43+
function f1() {
44+
45+
// Clears the previous setInterval timer
46+
clearInterval(interval);
47+
let text = "jou";
48+
console.log(text);
49+
50+
changeTimer();
51+
interval = setInterval(f1, t);
52+
}*/

‎test2.js

+207
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,207 @@
1+
const { Builder, By, Key, until } = require('selenium-webdriver');
2+
const { fs } = require('file-system')
3+
4+
let driver;
5+
6+
let accounts = [1,3,5];
7+
let playlists = ["song1", "song2", "song3"];
8+
9+
const accountsNew = JSON.parse(fs.readFileSync("./accounts.json", {encoding:'utf8', flag:'r'}));
10+
const playlistsNew = JSON.parse(fs.readFileSync("./playlist.json", {encoding:'utf8', flag:'r'}));
11+
12+
class Account {
13+
constructor(email, passwort, playlist) {
14+
this.state = "stop";
15+
this.email = email;
16+
this.passwort = passwort;
17+
this.currentSong = 0;
18+
this.playlist = playlist;
19+
this.driver;
20+
}
21+
}
22+
23+
let accountsArray = new Array();
24+
25+
for (let i = 0; i < accountsNew.spotify.length; i++){
26+
accountsArray[i] = new Account(accountsNew.spotify[i].email, accountsNew.spotify[i].passwort, playlistsNew.spotify[i].link);
27+
}
28+
console.log(accountsArray)
29+
30+
31+
32+
33+
34+
const syncWait = ms => {
35+
const end = Date.now() + ms
36+
while (Date.now() < end) continue
37+
}
38+
39+
async function asyncWait(waitTime){
40+
const end = Date.now() + ms
41+
while (Date.now() < end) continue
42+
}
43+
44+
async function test(waitTime){
45+
syncWait(waitTime);
46+
return true;
47+
}
48+
49+
async function playSong(waitTime, song){
50+
console.log("start Song... " + song);
51+
syncWait(waitTime);
52+
console.log("end song");
53+
return true;
54+
}
55+
56+
57+
58+
59+
60+
61+
62+
async function main() {
63+
for (let i = 0; i < accountsArray.length; i++){
64+
65+
// login stuff -> if successful -> state = TRUE
66+
67+
// wait until account is playing song
68+
console.log("login account "+ accounts[i]);
69+
accountsArray[i].driver = await new Builder().forBrowser("chrome").build();
70+
71+
72+
73+
const sessionUser = accountsArray[i].email;
74+
const sessionPasswort = accountsArray[i].passwort;
75+
const sessionSong = accountsArray[i].playlist;
76+
77+
78+
79+
80+
await accountsArray[i].driver.get('https://www.spotify.com');
81+
82+
await sleep(3000);
83+
await accountsArray[i].driver.findElement(By.id('onetrust-accept-btn-handler')).click();
84+
85+
//await click('Cookies akzeptieren');
86+
await accountsArray[i].driver.findElement(By.xpath("//*[text()='" + "Cookies akzeptieren" + "']")).click();
87+
88+
89+
//await click('Anmelden');
90+
await accountsArray[i].driver.findElement(By.xpath("//*[text()='" + "Anmelden" + "']")).click();
91+
92+
93+
94+
await sleep(1000);
95+
await accountsArray[i].driver.findElement(By.id('login-username')).sendKeys(sessionUser, Key.RETURN);
96+
await accountsArray[i].driver.findElement(By.id('login-password')).sendKeys(sessionPasswort, Key.RETURN);
97+
98+
await sleep(1000);
99+
await accountsArray[i].driver.get(sessionSong);
100+
101+
await sleep(5000);
102+
await accountsArray[i].driver.findElements(By.className("A8NeSZBojOQuVvK4l1pS")).then(function(elements){
103+
elements.forEach(function (element) {
104+
element.click();
105+
element.getText().then(function(text){
106+
console.log(text);
107+
});
108+
});
109+
});
110+
111+
await sleep(2000);
112+
113+
//await test(5000);
114+
115+
//console.log(accountsArray);
116+
117+
/*
118+
try{
119+
let isOkay = await test(5000);
120+
121+
if (isOkay == true){
122+
console.log("--------------------------------")
123+
console.log("start ACCOUNT " + accounts[i]);
124+
125+
// play songs
126+
for (let j = 0; j < playlists.length; j++){
127+
try{
128+
let songDone = await playSong(2000, playlists[j]);
129+
if (!songDone){
130+
break;
131+
}
132+
}
133+
catch(e){
134+
console.log(e);
135+
}
136+
}
137+
}
138+
else {
139+
console.log("break");
140+
break;
141+
}
142+
}
143+
catch(e){
144+
console.log(e);
145+
}
146+
*/
147+
}
148+
149+
}
150+
151+
main();
152+
153+
154+
/*
155+
async function loginSpotify(email, password){
156+
const sessionUser = email;
157+
const sessionPasswort = passwort;
158+
159+
await accountsArray[0].driver.get('https://www.spotify.com');
160+
161+
await sleep(3000);
162+
await driver.findElement(By.id('onetrust-accept-btn-handler')).click();
163+
164+
await click('Cookies akzeptieren');
165+
await click('Anmelden');
166+
167+
await sleep(1000);
168+
await driver.findElement(By.id('login-username')).sendKeys(sessionUser, Key.RETURN);
169+
await driver.findElement(By.id('login-password')).sendKeys(sessionPasswort, Key.RETURN);
170+
171+
await sleep(1000);
172+
173+
return true;
174+
}
175+
176+
177+
async function playSongSpotify(song){
178+
179+
const sessionSong = song;
180+
181+
await driver.get(sessionSong);
182+
183+
await sleep(3000);
184+
await driver.findElements(By.className("A8NeSZBojOQuVvK4l1pS")).then(function(elements){
185+
elements.forEach(function (element) {
186+
element.click();
187+
element.getText().then(function(text){
188+
console.log(text);
189+
});
190+
});
191+
});
192+
}
193+
*/
194+
195+
196+
function sleep(ms) {
197+
return new Promise((resolve) => {
198+
setTimeout(resolve, ms);
199+
});
200+
}
201+
202+
203+
async function click(text){
204+
205+
await driver.findElement(By.xpath("//*[text()='" + text + "']")).click();
206+
console.log(text)
207+
}

0 commit comments

Comments
 (0)
Please sign in to comment.