camvoice.com Ads.txt file
<!DOCTYPE html>
<html lang="de">
<head>
<title data-provider="cam4pays">
CamVoice Video Chat Rooms - Live Sex Free Adult Webcams
</title>
<link id="link-next" rel="next" href="?page=2">
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<!--If there is no robots <META> tag, the default is "INDEX,FOLLOW" so no need to add it here and this way it doesnt clash when we add a different one-->
<!--<meta name="robots" content="index,follow">-->
<!--no need to index subpages-->
<meta name="google-site-verification" content="ZlgGIFg4Q1OLgiDhFl1hXy17e95sWfwFs-jkMiXOkQs" />
<meta name="keywords" content="camvoice video chat rooms live sex free adult webcams" />
<meta name="description" content="Join CamVoice for live video chat rooms and experience the thrill of adult webcams. Enjoy free sex chats with attractive strangers and meet new friends online" />
<meta property="og:locale" content="de_EN" />
<meta property="og:title" content="CamVoice Video Chat Rooms - Live Sex Free Adult Webcams" />
<meta property="og:site_name" content="CamVoice Video Chat Rooms - Live Sex Free Adult Webcams" />
<meta property="og:description" content="Join CamVoice for live video chat rooms and experience the thrill of adult webcams. Enjoy free sex chats with attractive strangers and meet new friends online" />
<meta property="og:url" content="https://www.camvoice.com/ " />
<meta property="og:type" content="website" />
<meta property="og:image" content="https://www.camvoice.com/white_labels/63d109ebc17c860ac26d5f48/images/logo-w350.png?1674647282" />
<meta property="og:logo" content="https://www.camvoice.com/white_labels/63d109ebc17c860ac26d5f48/images/logo-w200.png?1674647282" />
<meta name="twitter:card" content="summary_large_image" />
<meta property="twitter:site" content="CamVoice Video Chat Rooms - Live Sex Free Adult Webcams" />
<meta name="twitter:label1" content="Est. reading time" />
<meta name="twitter:data1" content="5 minutes" />
<meta property="twitter:description" content="Join CamVoice for live video chat rooms and experience the thrill of adult webcams. Enjoy free sex chats with attractive strangers and meet new friends online" />
<meta name="twitter:image" content="https://www.camvoice.com/white_labels/63d109ebc17c860ac26d5f48/images/logo-w350.png?1674647282">
<link rel="canonical" href="https://www.camvoice.com/"/>
<link rel='alternate' href='https://www.camvoice.com/en' hreflang='en' />
<link rel='alternate' href='https://www.camvoice.com/nl' hreflang='nl' />
<link rel='alternate' href='https://www.camvoice.com/fr' hreflang='fr' />
<link rel='alternate' href='https://www.camvoice.com/it' hreflang='it' />
<link rel='alternate' href='https://www.camvoice.com/es' hreflang='es' />
<link rel='alternate' href='https://www.camvoice.com/pt' hreflang='pt' />
<link rel='alternate' href='https://www.camvoice.com/se' hreflang='sv' />
<link rel='alternate' href='https://www.camvoice.com/de' hreflang='de' />
<link rel='alternate' href='https://www.camvoice.com/dk' hreflang='da' />
<link rel='alternate' href='https://www.camvoice.com/no' hreflang='no' />
<link rel='alternate' href='https://www.camvoice.com/ru' hreflang='ru' />
<link rel='alternate' href='https://www.camvoice.com/ro' hreflang='ro' />
<link rel='alternate' href='https://www.camvoice.com/pl' hreflang='pl' />
<link rel='alternate' href='https://www.camvoice.com/ua' hreflang='uk' />
<meta name="csrf-param" content="authenticity_token" />
<meta name="csrf-token" content="PiDfQ49LeBtpGPg8N8PaXlirXuY/QcwSnQjS9ioMmzo3IhVD2yU0jWaIQmEzO/5mt/xJ0OuOTRXmLCLRrQltYw==" />
<link rel="shortcut icon" type="image/x-icon" href="/white_labels/63d109ebc17c860ac26d5f48/images/favico.png?1674647283" />
<link rel="stylesheet" media="all" href="//granity-pinklabel-static-assets-production.xcdnpro.com/assets/default/application-9ab4fc764eae1b716e462d2f639c562776d060839beba7502d28c6ec2e5e0756.css" />
<!-- custom css -->
<style>
false
</style>
<!-- Google Analytics for Pink Label Team -->
<!--<script async src="https://www.googletagmanager.com/gtag/js?id=UA-28427527-64"></script>-->
<script async src="https://www.googletagmanager.com/gtag/js?id=G-SHK59ZHG8W" data-category="analytics" data-service="Google Analytics" type="text/plain"></script>
<script data-category="analytics" data-service="Google Analytics" type="text/plain">
window.dataLayer = window.dataLayer || [];
function gtag(){dataLayer.push(arguments);}
gtag('js', new Date());
var map = {
'dimension1': 'affiliate_id'
}
gtag('config', 'G-SHK59ZHG8W', {
'custom_map': map
});
//gtag('config', 'UA-28427527-64', {
// 'custom_map': map
//});
//send the events
gtag('event', 'affiliate_id_dimension', { 'affiliate_id': '3909' });
</script>
<!-- Google Analytics for the Affiliate -->
<script async src="https://www.googletagmanager.com/gtag/js?id=UA-26021938-1" data-category="analytics" data-service="Google Analytics Affiliate"></script>
<script data-category="analytics" data-service="Google Analytics Affiliate">
window.dataLayer = window.dataLayer || [];
function gtag(){dataLayer.push(arguments);}
gtag('js', new Date());
gtag('config', 'UA-26021938-1');
</script>
</head>
<body style="padding-top:65px;">
<div class="modal modal-centering fade" id="age-verification-modal" tabindex="-1" role="dialog" aria-labelledby="age-verification-modal" aria-hidden="true">
<div id="age-verification" class="modal-wrapper">
<div class="modal-header">
<h4>Altersverifizierung</h4>
</div>
<div class="modal-body">
<p>Sie müssen 18 Jahre oder älter sein (oder das Alter der Mehrheit an Ihrem Wohnort), um auf diese Website zugreifen zu können: "Ich schwöre, dass ich erwachsen bin und mindestens 18 Jahre alt (bzw. die Volljährigkeit nach Rechtsprechung meines Landes erreicht habe)".</p>
</div> <!-- .modal-body -->
<div class="modal-footer clearfix">
<div class="pull-right">
<button type="button" class="btn btn-danger" data-action="continue" data-dismiss="modal">Weitermachen</button>
<a href="https://www.google.com" class="btn btn-default">Beenden</a>
</div>
</div> <!-- .modal-footer -->
</div>
</div>
<div class="modal modal-centering fade" id="register-modal" tabindex="-1" role="dialog" aria-labelledby="custom-tip-modal" aria-hidden="true">
<div id="register" class="modal-wrapper" style="max-width: 500px;">
<div class="modal-body">
<div class="panel panel-default">
<div class="panel-heading">
Registrieren
</div>
<!--<div class="alert alert-success" role="alert" style="text-align:center;margin-bottom:0;">
<h3 class="alert-heading" style="margin-bottom:0;margin-top:0">50 Bonus-Token ($9.95)</h3>
Mit Deinem ERSTEN Token-Kauf
</div>-->
<form id="register-form" action="/en/register" accept-charset="UTF-8" data-remote="true" method="post"><input name="utf8" type="hidden" value="✓" /><input type="hidden" name="authenticity_token" value="25NwHuwAyjHOYCW4XdDeCjYS98iRUlQpF14kLF/uVLDSkboeuG6Gp8Hwn+VZKPoy2UXg/kWd1S5setQL2Oui6Q==" />
<div class="panel-body">
<div id="errors"></div>
<fieldset>
<div class="form-group required" style="position:relative">
<label class="js-field-validate" data-field-type="username" for="member_username">Benutzername</label>
<input class="form-control js-field-validate" data-field-type="username" type="text" name="member[username]" id="member_username" />
<i id="username-icon" class="bi" style="font-size:20px; position:absolute;top:28px;right: 5px;pointer-events: none;"></i>
<div id="username-alert" class="alert alert-danger mt-3" style="display: none;margin-top:10px"></div>
<div id="usernames-suggested" class="my-3" style="display: none;"></div>
<span class="help-block"><em>Buchstaben, Ziffern, Unterstrich und zwischen 4 und 12 Zeichen, die Zahlen zwischen 10 und 17 sind nicht erlaubt.</em></span>
</div>
<div class="form-group required">
<label for="member_email">E-Mail-Adresse</label>
<input placeholder="@" class="form-control" type="email" name="member[email]" id="member_email" />
<span id="email_suggestion" class="help-block"></span>
</div>
<div class="form-group required">
<label for="member_password">Passwort</label>
<input class="form-control" type="password" name="member[password]" id="member_password" />
<i onclick="showPassword('member_password')" class="show-password bi bi-eye-fill"></i>
<span class="help-block"><em>Das Passwort sollte mindestens 6 Zeichen lang sein, muss mindestens einen Großbuchstaben, einen Kleinbuchstaben und eine Ziffer enthalten.</em></span>
</div>
<div data-callback="onCaptchaSubmit" data-size="invisible" data-theme="light" data-sitekey="ed129b73-97e7-404f-911e-6b0efc434811" class="h-captcha " external_script="true"></div>
</fieldset>
</div> <!-- .panel-body -->
<div class="panel-footer clearfix">
<p class="pull-left">
<small>Durch Anklicken des Registrierungs-Buttons erkläre ich mich mit den <a href="/en/terms">Allgemeine Geschäftsbedingungen</a> einverstanden.</small> <br>
<small><span class="text-danger">*</span> - Pflichtfelder</small>
</p>
<button name="button" type="submit" class="btn btn-pink pull-right" data-disable-with="<i class='bi bi-arrow-repeat mr-1 fa-spin'></i> Einreichen......">
<i class="bi bi-send mr-1"></i>
Registrieren
</button> </div>
</form>
</div> <!-- .panel panel-default -->
</div>
</div> <!-- #register -->
</div> <!-- #register-modal -->
<div class="modal modal-centering fade" id="login-modal" tabindex="-1" role="dialog" aria-labelledby="custom-tip-modal" aria-hidden="true">
<div id="login" class="modal-wrapper" style="max-width: 500px;">
<div class="modal-body">
<div id="login-form" class="panel panel-default">
<div class="panel-heading">
Login
</div>
<div id="login-success" class="panel-body" style="display:none;">
<div class="alert alert-success no-margin" role="alert">
<h4 class="alert-heading">Erfolg!</h4>
Du hast dich erfolgreich angemeldet, die Seite wird nun neu geladen.
</div>
</div>
<form id="authentication-form" action="/en/authenticate" accept-charset="UTF-8" data-remote="true" method="post"><input name="utf8" type="hidden" value="✓" /><input type="hidden" name="authenticity_token" value="lDQHA+6hVtK7TZqbU3oeVVy5fSHJD1qwQJH5QZkJ57WdNs0Dus8aRLTdIMZXgjpts+5qFx3A27c7tQlmHgwR7A==" />
<div class="panel-body">
<div id="login-verified" class="alert alert-success alert-dismissible no-margin" role="alert" style="display:none;">
<button type="button" class="close" data-dismiss="alert" aria-label="Close"><span aria-hidden="true">×</span></button>
<h4 class="alert-heading">Erfolg!</h4>
Dein Konto wurde aktiviert, du solltest dich nun einloggen können.
</div>
<div id="login-errors" style="display: none;">
<div class="alert alert-danger alert-dismissible" role="alert">
<h4 class="alert-heading">Fehler!</h4>
<span id="login-error-details">Ungültige Anmeldeinformationen.</span>
</div>
</div> <!-- #errors -->
<fieldset>
<div class="form-group required">
<label for="username">Benutzername</label>
<input type="text" name="username" id="username" placeholder="" class="form-control" />
</div>
<div class="form-group required">
<label for="password">Passwort</label>
<i onclick="showPassword('password')" class="show-password bi bi-eye-fill"></i>
<input type="password" name="password" id="password" maxlength="128" class="form-control" />
</div>
<script src="https://hcaptcha.com/1/api.js" async defer></script><div data-callback="onCaptchaSubmit" data-size="invisible" data-theme="light" data-sitekey="ed129b73-97e7-404f-911e-6b0efc434811" class="h-captcha " ></div>
</fieldset>
</div> <!-- .panel-body -->
<div class="panel-footer clearfix">
<p class="pull-left">
<small><a href="/en/register">Du hast noch kein Konto? Jetzt eins erstellen!</a></small> <br>
<small><a href="/en/forgot-pwd" class="js-reset-password-btn">Passwort vergessen?</a></small> <br>
<small><span class="text-danger">*</span> - Pflichtfelder</small>
</p>
<button name="button" type="submit" class="btn btn-default pull-right" data-disable-with="<i class='bi bi-arrow-repeat mr-1 fa-spin'></i> Einreichen......">
<i class="bi bi-send mr-1"></i>
Login
</button> </div>
</form>
</div> <!-- #login-form .panel panel-default -->
</div>
</div> <!-- #login -->
</div> <!-- #login-modal -->
<div class="modal modal-centering fade" id="question-modal" tabindex="-1" role="dialog" aria-labelledby="question-modal" aria-hidden="true">
<div id="question" class="modal-wrapper" style="max-width: 300px;">
<form action="/en/authenticate" accept-charset="UTF-8" data-remote="true" method="post"><input name="utf8" type="hidden" value="✓" /><input type="hidden" name="authenticity_token" value="Q8sR4UtpmGGIV7BOGA2xktYSS+co+puOJEOJcLdvt7tKydvhHwfU94fHChMc9ZWqOUVc0fw1GolfZ3lXMGpB4g==" />
<div class="modal-header">
<a type="button" class="modal-close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">×</span></a>
<h4>Sicherheitsfrage</h4>
</div>
<div class="modal-body">
<p id="question-text"></p>
<label for="answer">Answer</label>
<input type="text" name="answer" id="answer" placeholder="" class="form-control" />
<input type="hidden" name="qid" id="qid" />
<input type="hidden" name="tk" id="tk" />
<input type="hidden" name="usr" id="usr" />
<input type="hidden" name="pwd" id="pwd" />
</div> <!-- .modal-body -->
<div class="modal-footer clearfix">
<div class="pull-right">
<button type="button" class="btn btn-default" data-dismiss="modal">Schließen</button>
<button name="button" type="submit" class="btn btn-danger pull-right" data-disable-with="<i class='bi bi-arrow-repeat mr-1 fa-spin'></i> Einreichen......">
<i class="bi bi-send mr-1"></i>
OK
</button> </div>
</div> <!-- .modal-footer -->
</form>
</div> <!-- #question -->
</div> <!-- #question-modal -->
<nav id="topmenu" class="navbar navbar-default navbar-fixed-top header" role="navigation">
<div class="menu1 submenu">
<div class="container-fluid">
<div class="row">
<div class="col-md-24" style="">
<div class="navbar-header">
<button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target=".navbar-collapse-topmenu">
<span class="sr-only">Toggle navigation</span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
<a class="navbar-brand" href="/en">
<img src="/white_labels/63d109ebc17c860ac26d5f48/images/logo-w200.png?1674647282" alt="logo" width="100" height="100" style="max-height:39px;">
</a>
</div> <!-- .navbar-header -->
<div class="hidden-xs hidden-sm">
<div id="desktop-menu1">
<ul class="nav navbar-nav navbar-left no-margin">
</ul> <!-- .nav .navbar-nav -->
<ul class="nav navbar-nav navbar-right no-margin">
<li><a href="/en">Cams</a></li>
<li class="dropdown">
<a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-expanded="false">
<img class="flag flag-de" src="//granity-pinklabel-static-assets-production.xcdnpro.com/assets/blank-50fd99c7ba443da1d3f8455af419e9a623c7a87013c82580129c7461a9804f27.gif" alt="Blank" />
<span class="caret"></span>
</a>
<ul class="dropdown-menu" role="menu">
<li>
<a class="add-to-query-link-static" href="/en">
<img class="flag flag-en" alt="English" src="//granity-pinklabel-static-assets-production.xcdnpro.com/assets/blank-50fd99c7ba443da1d3f8455af419e9a623c7a87013c82580129c7461a9804f27.gif" /> English (EN)
</a>
</li>
<li>
<a class="add-to-query-link-static" href="/nl">
<img class="flag flag-nl" alt="Dutch" src="//granity-pinklabel-static-assets-production.xcdnpro.com/assets/blank-50fd99c7ba443da1d3f8455af419e9a623c7a87013c82580129c7461a9804f27.gif" /> Nederlands (NL)
</a>
</li>
<li>
<a class="add-to-query-link-static" href="/fr">
<img class="flag flag-fr" alt="French" src="//granity-pinklabel-static-assets-production.xcdnpro.com/assets/blank-50fd99c7ba443da1d3f8455af419e9a623c7a87013c82580129c7461a9804f27.gif" /> Français (FR)
</a>
</li>
<li>
<a class="add-to-query-link-static" href="/it">
<img class="flag flag-it" alt="Italian" src="//granity-pinklabel-static-assets-production.xcdnpro.com/assets/blank-50fd99c7ba443da1d3f8455af419e9a623c7a87013c82580129c7461a9804f27.gif" /> Italiano (IT)
</a>
</li>
<li>
<a class="add-to-query-link-static" href="/es">
<img class="flag flag-es" alt="Spanish" src="//granity-pinklabel-static-assets-production.xcdnpro.com/assets/blank-50fd99c7ba443da1d3f8455af419e9a623c7a87013c82580129c7461a9804f27.gif" /> Español (ES)
</a>
</li>
<li>
<a class="add-to-query-link-static" href="/pt">
<img class="flag flag-pt" alt="Portuguese" src="//granity-pinklabel-static-assets-production.xcdnpro.com/assets/blank-50fd99c7ba443da1d3f8455af419e9a623c7a87013c82580129c7461a9804f27.gif" /> Português (PT)
</a>
</li>
<li>
<a class="add-to-query-link-static" href="/se">
<img class="flag flag-se" alt="Swedish" src="//granity-pinklabel-static-assets-production.xcdnpro.com/assets/blank-50fd99c7ba443da1d3f8455af419e9a623c7a87013c82580129c7461a9804f27.gif" /> Svenska (SE)
</a>
</li>
<li>
<a class="add-to-query-link-static" href="/de">
<img class="flag flag-de" alt="German" src="//granity-pinklabel-static-assets-production.xcdnpro.com/assets/blank-50fd99c7ba443da1d3f8455af419e9a623c7a87013c82580129c7461a9804f27.gif" /> Deutsch (DE)
</a>
</li>
<li>
<a class="add-to-query-link-static" href="/dk">
<img class="flag flag-dk" alt="Danish" src="//granity-pinklabel-static-assets-production.xcdnpro.com/assets/blank-50fd99c7ba443da1d3f8455af419e9a623c7a87013c82580129c7461a9804f27.gif" /> Dansk (DK)
</a>
</li>
<li>
<a class="add-to-query-link-static" href="/no">
<img class="flag flag-no" alt="Norwegian" src="//granity-pinklabel-static-assets-production.xcdnpro.com/assets/blank-50fd99c7ba443da1d3f8455af419e9a623c7a87013c82580129c7461a9804f27.gif" /> Norsk (NO)
</a>
</li>
<li>
<a class="add-to-query-link-static" href="/ru">
<img class="flag flag-ru" alt="Russian" src="//granity-pinklabel-static-assets-production.xcdnpro.com/assets/blank-50fd99c7ba443da1d3f8455af419e9a623c7a87013c82580129c7461a9804f27.gif" /> Русский (RU)
</a>
</li>
<li>
<a class="add-to-query-link-static" href="/ro">
<img class="flag flag-ro" alt="Romanian" src="//granity-pinklabel-static-assets-production.xcdnpro.com/assets/blank-50fd99c7ba443da1d3f8455af419e9a623c7a87013c82580129c7461a9804f27.gif" /> Română (RO)
</a>
</li>
<li>
<a class="add-to-query-link-static" href="/pl">
<img class="flag flag-pl" alt="Polish" src="//granity-pinklabel-static-assets-production.xcdnpro.com/assets/blank-50fd99c7ba443da1d3f8455af419e9a623c7a87013c82580129c7461a9804f27.gif" /> Polski (PL)
</a>
</li>
<li>
<a class="add-to-query-link-static" href="/ua">
<img class="flag flag-ua" alt="Ukranian" src="//granity-pinklabel-static-assets-production.xcdnpro.com/assets/blank-50fd99c7ba443da1d3f8455af419e9a623c7a87013c82580129c7461a9804f27.gif" /> Українська (UA)
</a>
</li>
</ul>
</li>
<li><a href="javascript:showLoginModal();">Einloggen</a></li>
<li><a href="javascript:showRegisterModal();" class="btn btn-pink navbar-btn" style="margin-right: 15px; margin-left: 10px;padding-top:6px;padding-bottom:6px;">Registrieren (Kostenlos)</a></li>
</ul>
</div> <!-- #desktop-menu1 -->
</div> <!-- .hidden-xs hidden-sm -->
<div class="mobile-nav visible-xs visible-sm hidden-md hidden-lg">
<div class="collapse navbar-collapse navbar-collapse-topmenu" id="navbar-collapse-menu1">
<div class="row">
<div class="col-xs-24">
<h2><a href="/en">Home</a></h2>
<h2><a href="/en">Cams</a></h2>
<ul class="nav navbar-nav navbar-left">
<li class="dropdown">
<a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-expanded="false" style="margin-top:5px;">
<img class="flag flag-de" src="//granity-pinklabel-static-assets-production.xcdnpro.com/assets/blank-50fd99c7ba443da1d3f8455af419e9a623c7a87013c82580129c7461a9804f27.gif" alt="Blank" />
<span class="caret"></span>
</a>
<ul class="dropdown-menu" role="menu">
<li>
<a class="add-to-query-link-static" href="/en">
<img class="flag flag-en" alt="English" src="//granity-pinklabel-static-assets-production.xcdnpro.com/assets/blank-50fd99c7ba443da1d3f8455af419e9a623c7a87013c82580129c7461a9804f27.gif" /> English (EN)
</a>
</li>
<li>
<a class="add-to-query-link-static" href="/nl">
<img class="flag flag-nl" alt="Dutch" src="//granity-pinklabel-static-assets-production.xcdnpro.com/assets/blank-50fd99c7ba443da1d3f8455af419e9a623c7a87013c82580129c7461a9804f27.gif" /> Nederlands (NL)
</a>
</li>
<li>
<a class="add-to-query-link-static" href="/fr">
<img class="flag flag-fr" alt="French" src="//granity-pinklabel-static-assets-production.xcdnpro.com/assets/blank-50fd99c7ba443da1d3f8455af419e9a623c7a87013c82580129c7461a9804f27.gif" /> Français (FR)
</a>
</li>
<li>
<a class="add-to-query-link-static" href="/it">
<img class="flag flag-it" alt="Italian" src="//granity-pinklabel-static-assets-production.xcdnpro.com/assets/blank-50fd99c7ba443da1d3f8455af419e9a623c7a87013c82580129c7461a9804f27.gif" /> Italiano (IT)
</a>
</li>
<li>
<a class="add-to-query-link-static" href="/es">
<img class="flag flag-es" alt="Spanish" src="//granity-pinklabel-static-assets-production.xcdnpro.com/assets/blank-50fd99c7ba443da1d3f8455af419e9a623c7a87013c82580129c7461a9804f27.gif" /> Español (ES)
</a>
</li>
<li>
<a class="add-to-query-link-static" href="/pt">
<img class="flag flag-pt" alt="Portuguese" src="//granity-pinklabel-static-assets-production.xcdnpro.com/assets/blank-50fd99c7ba443da1d3f8455af419e9a623c7a87013c82580129c7461a9804f27.gif" /> Português (PT)
</a>
</li>
<li>
<a class="add-to-query-link-static" href="/se">
<img class="flag flag-se" alt="Swedish" src="//granity-pinklabel-static-assets-production.xcdnpro.com/assets/blank-50fd99c7ba443da1d3f8455af419e9a623c7a87013c82580129c7461a9804f27.gif" /> Svenska (SE)
</a>
</li>
<li>
<a class="add-to-query-link-static" href="/de">
<img class="flag flag-de" alt="German" src="//granity-pinklabel-static-assets-production.xcdnpro.com/assets/blank-50fd99c7ba443da1d3f8455af419e9a623c7a87013c82580129c7461a9804f27.gif" /> Deutsch (DE)
</a>
</li>
<li>
<a class="add-to-query-link-static" href="/dk">
<img class="flag flag-dk" alt="Danish" src="//granity-pinklabel-static-assets-production.xcdnpro.com/assets/blank-50fd99c7ba443da1d3f8455af419e9a623c7a87013c82580129c7461a9804f27.gif" /> Dansk (DK)
</a>
</li>
<li>
<a class="add-to-query-link-static" href="/no">
<img class="flag flag-no" alt="Norwegian" src="//granity-pinklabel-static-assets-production.xcdnpro.com/assets/blank-50fd99c7ba443da1d3f8455af419e9a623c7a87013c82580129c7461a9804f27.gif" /> Norsk (NO)
</a>
</li>
<li>
<a class="add-to-query-link-static" href="/ru">
<img class="flag flag-ru" alt="Russian" src="//granity-pinklabel-static-assets-production.xcdnpro.com/assets/blank-50fd99c7ba443da1d3f8455af419e9a623c7a87013c82580129c7461a9804f27.gif" /> Русский (RU)
</a>
</li>
<li>
<a class="add-to-query-link-static" href="/ro">
<img class="flag flag-ro" alt="Romanian" src="//granity-pinklabel-static-assets-production.xcdnpro.com/assets/blank-50fd99c7ba443da1d3f8455af419e9a623c7a87013c82580129c7461a9804f27.gif" /> Română (RO)
</a>
</li>
<li>
<a class="add-to-query-link-static" href="/pl">
<img class="flag flag-pl" alt="Polish" src="//granity-pinklabel-static-assets-production.xcdnpro.com/assets/blank-50fd99c7ba443da1d3f8455af419e9a623c7a87013c82580129c7461a9804f27.gif" /> Polski (PL)
</a>
</li>
<li>
<a class="add-to-query-link-static" href="/ua">
<img class="flag flag-ua" alt="Ukranian" src="//granity-pinklabel-static-assets-production.xcdnpro.com/assets/blank-50fd99c7ba443da1d3f8455af419e9a623c7a87013c82580129c7461a9804f27.gif" /> Українська (UA)
</a>
</li>
</ul>
</li>
<li><a href="javascript:showLoginModal();" style="margin-top:5px">Einloggen</a></li>
<li><a href="javascript:showRegisterModal();" class="btn btn-pink navbar-btn" style="margin-right: 15px; margin-left: 10px;padding-top:6px;padding-bottom:6px;">Registrieren (Kostenlos)</a></li>
</ul> <!-- .nav .navbar-nav .navbar-left -->
<div style="clear:both;"></div>
<ul class="nav navbar-nav navbar-left" style="margin-top:0;">
</ul> <!-- .nav .navbar-nav .navbar-left -->
<div style="clear:both;"></div>
<h2 style="margin-top:5px !important;">KATEGORIEN</h2>
<span class="h5 text-uppercase">Geschlecht</span>
<ul style="padding-left:15px;">
<li><a class="add-to-query-link-static " href="/en/cams">Alle</a></li>
<li>
<a class="add-to-query-link-static " href="/en/cams/gender/female">Weiblich</a>
</li>
<li>
<a class="add-to-query-link-static " href="/en/cams/gender/male">Männlich</a>
</li>
<li>
<a class="add-to-query-link-static " href="/en/cams/gender/shemale">Transsexuell</a>
</li>
<li>
<a class="add-to-query-link-static " href="/en/cams/gender/couple">Paar</a>
</li>
</ul>
<span class="h5 text-uppercase">Alter</span>
<ul style="padding-left:15px;">
<li>
<a class="add-to-query-link" data-toggle="tooltip" data-placement="top" title="Kategorie zusammenfassen" data-subcat="18-19" data-cat="age" href="/en/cams" >Teenager 18+</a>
</li>
<li>
<a class="add-to-query-link" data-toggle="tooltip" data-placement="top" title="Kategorie zusammenfassen" data-subcat="20-29" data-cat="age" href="/en/cams" >Zwanziger Jahre</a>
</li>
<li>
<a class="add-to-query-link" data-toggle="tooltip" data-placement="top" title="Kategorie zusammenfassen" data-subcat="30-49" data-cat="age" href="/en/cams" >MILFs</a>
</li>
<li>
<a class="add-to-query-link" data-toggle="tooltip" data-placement="top" title="Kategorie zusammenfassen" data-subcat="50-59" data-cat="age" href="/en/cams" >Reif</a>
</li>
<li>
<a class="add-to-query-link" data-toggle="tooltip" data-placement="top" title="Kategorie zusammenfassen" data-subcat="60-100" data-cat="age" href="/en/cams" >Omas</a>
</li>
</ul>
<span class="h5 text-uppercase">Orientierung</span>
<ul style="padding-left:15px;">
<li>
<a class="add-to-query-link" data-toggle="tooltip" data-placement="top" title="Kategorie zusammenfassen" data-subcat="gay" data-cat="orientation" href="/en/cams" >Schwul</a>
</li>
<li>
<a class="add-to-query-link" data-toggle="tooltip" data-placement="top" title="Kategorie zusammenfassen" data-subcat="straight" data-cat="orientation" href="/en/cams" >Hetero</a>
</li>
<li>
<a class="add-to-query-link" data-toggle="tooltip" data-placement="top" title="Kategorie zusammenfassen" data-subcat="bisexual" data-cat="orientation" href="/en/cams" >Bisexuell</a>
</li>
<li>
<a class="add-to-query-link" data-toggle="tooltip" data-placement="top" title="Kategorie zusammenfassen" data-subcat="bicurious" data-cat="orientation" href="/en/cams" >Bi-neugierig</a>
</li>
</ul>
<span class="h5 text-uppercase">Ethnizität</span>
<ul style="padding-left:15px;">
<li>
<a class="add-to-query-link" data-toggle="tooltip" data-placement="top" title="Kategorie zusammenfassen" data-subcat="arab" data-cat="ethnicity" href="/en/cams" >Arabisch</a>
</li>
<li>
<a class="add-to-query-link" data-toggle="tooltip" data-placement="top" title="Kategorie zusammenfassen" data-subcat="asian" data-cat="ethnicity" href="/en/cams" >Asiatisch</a>
</li>
<li>
<a class="add-to-query-link" data-toggle="tooltip" data-placement="top" title="Kategorie zusammenfassen" data-subcat="caucasian" data-cat="ethnicity" href="/en/cams" >Kaukasisch</a>
</li>
<li>
<a class="add-to-query-link" data-toggle="tooltip" data-placement="top" title="Kategorie zusammenfassen" data-subcat="ebony" data-cat="ethnicity" href="/en/cams" >Ebony</a>
</li>
<li>
<a class="add-to-query-link" data-toggle="tooltip" data-placement="top" title="Kategorie zusammenfassen" data-subcat="hispanic" data-cat="ethnicity" href="/en/cams" >Hispanoamerikanisch</a>
</li>
</ul>
<span class="h5 text-uppercase">Körper</span>
<ul style="padding-left:15px;">
<li>
<a class="add-to-query-link" data-toggle="tooltip" data-placement="top" title="Kategorie zusammenfassen" data-subcat="petite" data-cat="body" href="/en/cams" >Zierlich</a>
</li>
<li>
<a class="add-to-query-link" data-toggle="tooltip" data-placement="top" title="Kategorie zusammenfassen" data-subcat="athletic" data-cat="body" href="/en/cams" >Sportlich</a>
</li>
<li>
<a class="add-to-query-link" data-toggle="tooltip" data-placement="top" title="Kategorie zusammenfassen" data-subcat="curvy" data-cat="body" href="/en/cams" >Kurvig</a>
</li>
<li>
<a class="add-to-query-link" data-toggle="tooltip" data-placement="top" title="Kategorie zusammenfassen" data-subcat="bbw" data-cat="body" href="/en/cams" >BBW</a>
</li>
</ul>
<span class="h5 text-uppercase">Haare</span>
<ul style="padding-left:15px;">
<li>
<a class="add-to-query-link" data-toggle="tooltip" data-placement="top" title="Kategorie zusammenfassen" data-subcat="black" data-cat="hair" href="/en/cams" >Schwarz</a>
</li>
<li>
<a class="add-to-query-link" data-toggle="tooltip" data-placement="top" title="Kategorie zusammenfassen" data-subcat="brown" data-cat="hair" href="/en/cams" >Braun</a>
</li>
<li>
<a class="add-to-query-link" data-toggle="tooltip" data-placement="top" title="Kategorie zusammenfassen" data-subcat="red" data-cat="hair" href="/en/cams" >Rot</a>
</li>
<li>
<a class="add-to-query-link" data-toggle="tooltip" data-placement="top" title="Kategorie zusammenfassen" data-subcat="blonde" data-cat="hair" href="/en/cams" >Blond</a>
</li>
<li>
<a class="add-to-query-link" data-toggle="tooltip" data-placement="top" title="Kategorie zusammenfassen" data-subcat="grey" data-cat="hair" href="/en/cams" >Grau</a>
</li>
<li>
<a class="add-to-query-link" data-toggle="tooltip" data-placement="top" title="Kategorie zusammenfassen" data-subcat="white" data-cat="hair" href="/en/cams" >Weiß</a>
</li>
<li>
<a class="add-to-query-link" data-toggle="tooltip" data-placement="top" title="Kategorie zusammenfassen" data-subcat="bald" data-cat="hair" href="/en/cams" >Glatze</a>
</li>
</ul>
</div> <!-- .col-xs-24 -->
</div> <!-- .row -->
</div> <!-- #navbar-collapse-menu1 .collapse -->
</div> <!-- .visible-xs visible-sm hidden-md hidden-lg -->
</div>
</div> <!-- .row -->
</div> <!-- .container-fluid -->
</div> <!-- .menu1 .submenu -->
</nav> <!-- #topmenu -->
<div class="container-fluid">
<div class="row">
<div class="col-md-4 hidden-xs hidden-sm">
<h2 style="margin-top:5px !important;">KATEGORIEN</h2>
<span class="h5 text-uppercase">Geschlecht</span>
<ul style="padding-left:15px;">
<li><a class="add-to-query-link-static " href="/en/cams">Alle</a></li>
<li>
<a class="add-to-query-link-static " href="/en/cams/gender/female">Weiblich</a>
</li>
<li>
<a class="add-to-query-link-static " href="/en/cams/gender/male">Männlich</a>
</li>
<li>
<a class="add-to-query-link-static " href="/en/cams/gender/shemale">Transsexuell</a>
</li>
<li>
<a class="add-to-query-link-static " href="/en/cams/gender/couple">Paar</a>
</li>
</ul>
<span class="h5 text-uppercase">Alter</span>
<ul style="padding-left:15px;">
<li>
<a class="add-to-query-link" data-toggle="tooltip" data-placement="top" title="Kategorie zusammenfassen" data-subcat="18-19" data-cat="age" href="/en/cams" >Teenager 18+</a>
</li>
<li>
<a class="add-to-query-link" data-toggle="tooltip" data-placement="top" title="Kategorie zusammenfassen" data-subcat="20-29" data-cat="age" href="/en/cams" >Zwanziger Jahre</a>
</li>
<li>
<a class="add-to-query-link" data-toggle="tooltip" data-placement="top" title="Kategorie zusammenfassen" data-subcat="30-49" data-cat="age" href="/en/cams" >MILFs</a>
</li>
<li>
<a class="add-to-query-link" data-toggle="tooltip" data-placement="top" title="Kategorie zusammenfassen" data-subcat="50-59" data-cat="age" href="/en/cams" >Reif</a>
</li>
<li>
<a class="add-to-query-link" data-toggle="tooltip" data-placement="top" title="Kategorie zusammenfassen" data-subcat="60-100" data-cat="age" href="/en/cams" >Omas</a>
</li>
</ul>
<span class="h5 text-uppercase">Orientierung</span>
<ul style="padding-left:15px;">
<li>
<a class="add-to-query-link" data-toggle="tooltip" data-placement="top" title="Kategorie zusammenfassen" data-subcat="gay" data-cat="orientation" href="/en/cams" >Schwul</a>
</li>
<li>
<a class="add-to-query-link" data-toggle="tooltip" data-placement="top" title="Kategorie zusammenfassen" data-subcat="straight" data-cat="orientation" href="/en/cams" >Hetero</a>
</li>
<li>
<a class="add-to-query-link" data-toggle="tooltip" data-placement="top" title="Kategorie zusammenfassen" data-subcat="bisexual" data-cat="orientation" href="/en/cams" >Bisexuell</a>
</li>
<li>
<a class="add-to-query-link" data-toggle="tooltip" data-placement="top" title="Kategorie zusammenfassen" data-subcat="bicurious" data-cat="orientation" href="/en/cams" >Bi-neugierig</a>
</li>
</ul>
<span class="h5 text-uppercase">Ethnizität</span>
<ul style="padding-left:15px;">
<li>
<a class="add-to-query-link" data-toggle="tooltip" data-placement="top" title="Kategorie zusammenfassen" data-subcat="arab" data-cat="ethnicity" href="/en/cams" >Arabisch</a>
</li>
<li>
<a class="add-to-query-link" data-toggle="tooltip" data-placement="top" title="Kategorie zusammenfassen" data-subcat="asian" data-cat="ethnicity" href="/en/cams" >Asiatisch</a>
</li>
<li>
<a class="add-to-query-link" data-toggle="tooltip" data-placement="top" title="Kategorie zusammenfassen" data-subcat="caucasian" data-cat="ethnicity" href="/en/cams" >Kaukasisch</a>
</li>
<li>
<a class="add-to-query-link" data-toggle="tooltip" data-placement="top" title="Kategorie zusammenfassen" data-subcat="ebony" data-cat="ethnicity" href="/en/cams" >Ebony</a>
</li>
<li>
<a class="add-to-query-link" data-toggle="tooltip" data-placement="top" title="Kategorie zusammenfassen" data-subcat="hispanic" data-cat="ethnicity" href="/en/cams" >Hispanoamerikanisch</a>
</li>
</ul>
<span class="h5 text-uppercase">Körper</span>
<ul style="padding-left:15px;">
<li>
<a class="add-to-query-link" data-toggle="tooltip" data-placement="top" title="Kategorie zusammenfassen" data-subcat="petite" data-cat="body" href="/en/cams" >Zierlich</a>
</li>
<li>
<a class="add-to-query-link" data-toggle="tooltip" data-placement="top" title="Kategorie zusammenfassen" data-subcat="athletic" data-cat="body" href="/en/cams" >Sportlich</a>
</li>
<li>
<a class="add-to-query-link" data-toggle="tooltip" data-placement="top" title="Kategorie zusammenfassen" data-subcat="curvy" data-cat="body" href="/en/cams" >Kurvig</a>
</li>
<li>
<a class="add-to-query-link" data-toggle="tooltip" data-placement="top" title="Kategorie zusammenfassen" data-subcat="bbw" data-cat="body" href="/en/cams" >BBW</a>
</li>
</ul>
<span class="h5 text-uppercase">Haare</span>
<ul style="padding-left:15px;">
<li>
<a class="add-to-query-link" data-toggle="tooltip" data-placement="top" title="Kategorie zusammenfassen" data-subcat="black" data-cat="hair" href="/en/cams" >Schwarz</a>
</li>
<li>
<a class="add-to-query-link" data-toggle="tooltip" data-placement="top" title="Kategorie zusammenfassen" data-subcat="brown" data-cat="hair" href="/en/cams" >Braun</a>
</li>
<li>
<a class="add-to-query-link" data-toggle="tooltip" data-placement="top" title="Kategorie zusammenfassen" data-subcat="red" data-cat="hair" href="/en/cams" >Rot</a>
</li>
<li>
<a class="add-to-query-link" data-toggle="tooltip" data-placement="top" title="Kategorie zusammenfassen" data-subcat="blonde" data-cat="hair" href="/en/cams" >Blond</a>
</li>
<li>
<a class="add-to-query-link" data-toggle="tooltip" data-placement="top" title="Kategorie zusammenfassen" data-subcat="grey" data-cat="hair" href="/en/cams" >Grau</a>
</li>
<li>
<a class="add-to-query-link" data-toggle="tooltip" data-placement="top" title="Kategorie zusammenfassen" data-subcat="white" data-cat="hair" href="/en/cams" >Weiß</a>
</li>
<li>
<a class="add-to-query-link" data-toggle="tooltip" data-placement="top" title="Kategorie zusammenfassen" data-subcat="bald" data-cat="hair" href="/en/cams" >Glatze</a>
</li>
</ul>
</div>
<div class="col-xs-24 col-md-20">
<div class="row">
<div class="thumb-row" style="margin-left:15px;margin-right:15px;">
<div id="mobile-register-cta" style="display:none;">
<br/><a href="javascript:showRegisterModal();" class="btn btn-pink btn-block" style="">Registrieren (Kostenlos)</a><br/>
</div>
<h1 style="float:left;">LIVE-CAMS</h1>
<div style="clear:both;"></div>
<div id="cams-container" style="min-height: 300px; position:relative;">
<div id="cams-loader" class="lds-ring" style="z-index:auto" id="cams-loader"><div></div><div></div><div></div><div></div></div>
</div>
</div> <!-- .thumb-row -->
</div>
<br>
</div>
</div>
<br/>
<div class="row" id="cams-pager" style="display:none;">
<div class="col-xs-24">
<div class="text-center">
<div class="btn-group">
<a id="pager-prev" class="btn btn-pink" href="?page=-1">Vorherige Seite</a>
<a id="pager-next" class="btn btn-pink" href="?page=2">Nächste Seite</a>
</div>
</div>
</div>
</div>
<br/>
</div> <!-- .container-fluid -->
<i id="back-to-top" class="fa fa-chevron-circle-up fa-4x"></i>
<div id="modal-landing"></div>
<!-- FOOTER -->
<footer id="footer">
<div class="container-fluid">
<div class="row">
<div class="col-md-4" style="padding-right:40px;">
<!-- Footer Logo -->
<img class="logo" src="/white_labels/63d109ebc17c860ac26d5f48/images/logo-w200.png?1674647282" alt="logo" width="100" height="100" >
<br/><br/>
<!-- Small Description -->
<p>
Willkommen bei CamVoice! Wir sind eine kostenlose Online-Community, in der du heiße Models in interaktiven Live-Shows beobachten kannst.
</p>
<p style="margin-bottom:10px;">
CamVoice ist 100% kostenlos mit sofortigem Zugang. Stöbere durch Tausende von Cams mit Frauen, Männern, Paaren und Transsexuellen, die rund um die Uhr Live-Sex-Shows zeigen. Neben dem Betrachten kostenloser Live-Cam-Shows hast du auch die Möglichkeit, Private- und Cam2cam-Shows zu sehen und den Modellen Privatnachrichten zu schreiben.
</p>
<p>
Alle auf dieser Website erscheinenden Modelle haben uns vertraglich bestätigt, dass sie 18 Jahre oder älter sind.
</p>
</div>
<div class="col-md-4">
LINKS<br><br>
<a href="https://pepcams.com" target="_top">PepCams Live Cams</a><br/>
</div>
<div class="col-md-4">
<span class="text-uppercase">Land</span><br/><br/>
<a href="/en/countries/brazil">Brazil</a><br/>
<a href="/en/countries/france">France</a><br/>
<a href="/en/countries/germany">Germany</a><br/>
<a href="/en/countries/italy">Italy</a><br/>
<a href="/en/countries/spain">Spain</a><br/>
<a href="/en/countries/united-states">US</a><br/>
<a href="/en/countries/united-kingdom">UK</a><br/>
<a href="/en/countries/canada">Canada</a><br/><br/>
<a href="/en/countries">Alle Länder >></a>
</div>
<div class="col-md-4" style="">
<span class="text-uppercase">Hilfe & Support</span><br/><br/>
<a href="/en/contact">Support Kontaktieren</a><br/>
<a href="/en/report-content">Bericht Inhalt</a><br/>
<a href="/en/billing">Zahlungs-Support</a><br/>
<a target="_blank" href="https://www.cam4pays.com/">Partner werden</a><br/>
<a target="_blank" href="https://www.cam4models.com/">Werden Sie ein Model</a><br/>
</div>
<div class="col-md-4" style="">
<span class="text-uppercase">Rechtliches</span><br/><br/>
<a href="/en/privacy">Datenschutzerklärung</a><br/>
<a href="/en/cookies">Cookie-Richtlinien</a><br/>
<a href="/en/terms">Nutzungsbedingungen</a><br/>
<a href="/en/usc2257">18 U.S.C. 2257</a><br/>
<a href="/en/impressum">Impressum</a><br/>
</div>
<div class="col-md-4" style="">
<span class="text-uppercase">Soziale Medien</span><br/><br/>
<a target="_blank" href="https://twitter.com/camvoice">X</a><br/>
<a target="_blank" href="https://www.reddit.com/user/camvoice">Reddit</a><br/>
<a target="_blank" href="https://www.tumblr.com/videopornosessogratis-blog">Tumblr</a><br/>
</div>
</div>
</div>
</footer>
<div class="copyright" style="">
<div class="container-fluid">
<div class="row">
<div class="col-md-18">
Haftungsausschluss: Alle Mitglieder und Personen, die auf der Website erscheinen, sind 18 Jahre oder älter.<br/>
© Copyright Tropistream Corporation NV, 2007-2025. All Rights Reserved. <a href="/en/usc2257">18 U.S.C. 2257 Record Keeping Requirements Compliance Statement</a>. | v3.12.26.2662
</div>
<div class="col-md-6" style="text-align:right;">
<img width="80" height="30" src="//granity-pinklabel-static-assets-production.xcdnpro.com/assets/icra-8a7256f6b53a380bee135a23dcb30dd0aa048c20c8e94ca3f6c86b106be7d816.png" alt="Icra" />
<img width="88" height="31" src="//granity-pinklabel-static-assets-production.xcdnpro.com/assets/rta_b-fb9edc442aa5152643c98147d7d7afcfd42f2a12ea402078e6af8bd43dafaa50.png" alt="Rta b" />
<img width="87" height="31" src="//granity-pinklabel-static-assets-production.xcdnpro.com/assets/labeled-8b5e87da27508fb982cb6dec82da7e664ad18614262ff32e2b7603a7cbc11a75.gif" alt="Labeled" />
</div>
</div>
</div>
</div>
<!-- /FOOTER -->
<script src="//granity-pinklabel-static-assets-production.xcdnpro.com/assets/default/application-d9738f44b993a0bae91b519487d27b0218d98fb1c70e1ad8c881c3d3b3827c7a.js"></script>
<script type="text/javascript">
is_guest = true;
is_mobile = document.documentElement.clientWidth < 768 ? true : false;
balance = 0;
var urlParams = new URLSearchParams(window.location.search);
var verified = urlParams.get('verified');
var showTokens = urlParams.get('showtokens');
var showLogin = urlParams.get('showlogin');
const hide_membership = urlParams.get('hidemembership');
const no_avs = urlParams.get('noavs');
const tokens_modal_timeout = urlParams.get('tokensmodaltimeout');
const tokens_modal_interval = urlParams.get('tokensmodalinterval');
var tokens_modal_limit = urlParams.get('tokensmodallimit');
if(!tokens_modal_limit)
tokens_modal_limit = 5;
Cam4Api.verbose = false;
var cam4 = new Cam4Api();
cam4.setup({
domain: 'camvoice.com',
full_domain: 'https://www.camvoice.com/',
tokens_return_path: '/en/tokens/done',
membership_return_path: '/en/gold/done',
verification_return_path: '/en/age-verification/done',
username: '',
access_hash: '',
rest_usr: 'www.camvoice.com',
rest_pwd: 'bzgEvjiT7_koqmm6tv6_nY',
disable_upsells: (hide_membership ? true : false),
disable_avs: (no_avs ? true : false),
cams_blacklist: ["kate0000","cyborgc18","chilliteen","june_hotsexy","ladysexylily","mashapink","clarafrenchx","carolyneburell","sahorix","gtantn01","lartssy","tianabrown00","madame_louise","tommyaussie","camboy193"],
onGetProducts: displayProducts,
onGetCryptoProducts: displayCryptoProducts,
onGetMembershipProducts: displayMembershipProducts,
onBalance: function(balance){
$(".member-balance").each(function(){
$(this).find('.lds-ring').hide();
$(this).find('.balance-value').html(balance);
$(this).find('.balance-value').show();
});
},
onUserInfo: function(){
$(document).ready(function() {
//load cams
var cam_page = 1;
var cam_n = 60;
var filters = updateQueryFilters(window.location.search.substring(1));
var qs = "&orderBy=MOST_VIEWERS";
if (!Array.isArray(qs)) {
qs = "&orderBy=MOST_VIEWERS" + filters;
}
loadCamsListing(qs, cam_page, cam_n);
//Reload the loaded cams every 150s
setInterval(function(){
loadCamsListing(qs, cam_page, cam_n);
}, 150000);
});
},
onBadAccessHash: function(){
//only redirect to logout if not on embed page
if(document.location.pathname.indexOf('/embed/') == -1){
window.location = '/en/logout';
}
},
onPaymentPopupOpen: function(){
$('#buy-gold-modal').find('.lds-ring').remove();
$('#buy-tokens-modal').find('.lds-ring').remove();
$('.modal').modal('hide');
}
});
if(!is_guest){
if (!hide_membership) {
cam4.getMembershipProducts();
}
cam4.getTokenProducts();
resetTokensValue();
cam4.getBalance();
}
function showRegisterModal(){
$('#login-modal').modal('hide');
$('#register-modal').modal();
}
function showLoginModal(showVerified){
$('.modal').modal('hide');
if(showVerified)
$("#login-verified").show();
$('#login-modal').modal();
}
function showTokensModal(){
$('#buy-tokens-modal').modal();
}
function showLangModal(){
$('#lang-modal').modal();
$('#sidebar-modal').removeClass('opened');
}
function showProfileDetailsModal(){
$('#profile-details-modal').modal();
}
function showGoldModal(){
$('.modal').modal('hide');
$('#buy-gold-modal').modal();
}
function performerGender(num, icon){
switch(num){
case 0:
case 'male':
return icon ? '<i class="fbi bi-gender-male strong"></i>' : "male";
case 1:
case 'female':
return icon ? '<i class="bi bi-gender-female strong"></i>' : "female";
case 2:
case 'shemale':
return icon ? '<i class="bi bi-gender-ambiguous strong"></i>' : "shemale";
}
}
function setupCamsPager(cam_page, cam_n, show_next){
if(cam_page > 1)
$("#pager-prev").attr('href', '?page='+(cam_page-1)).show();
else{
$("#pager-prev").attr('href', '#').hide();
$("#link-prev").remove();
}
if(show_next)
$("#pager-next").attr('href', '?page='+(cam_page+1)).show();
else{
$("#pager-next").attr('href', '#').hide();
$("#link-next").remove();
}
$("#cams-pager").show();
}
function capitalizeFirstLetter(string) {
if(blank(string))
return '---';
return string.charAt(0).toUpperCase() + string.slice(1);
}
function currentAge(dob){
if(blank(dob)){
return '--';
}
else{
var today = new Date();
var birthDate = new Date(dob);
var age = today.getFullYear() - birthDate.getFullYear();
var m = today.getMonth() - birthDate.getMonth();
if (m < 0 || (m === 0 && today.getDate() < birthDate.getDate())) {
age--;
}
return age;
}
}
//to have the same translation function as rails has.
//ex: t("products.price");
$(function() {
window.t = function(key) {
if(!key){
return "---";
}
var keys = key.split(".");
var comp = window.I18n;
$(keys).each(function(_, value) {
if(comp){
comp = comp[value];
}
});
if(!comp && console){
console.debug("No translation found for key: " + key);
return "N/A";
}
return comp;
};
});
//defined here instead of the bottom otherwise the onerror calls
//on bio images won't work complaining the function is not defined.
function delImg(el, n_parents){
var dad = $(el);
for(var i = 0; i < n_parents; i++)
dad = dad.parent();
dad.remove();
}
function hiddenWatermarkImg(src, css, id){
var html = "<div style='background-color: #fff;border: 1px solid #ddd;border-radius:4px;padding:4px;'>";
html += "<div style='overflow:hidden;'>";
html += "<img id='"+(id ? id : '')+"' src='"+src+"' class='"+css+"' style='width: 100%;margin-bottom:-20px;border:none;padding:0;' onerror='delImg(this, 2);'/>";
html += "</div></div>";
return html;
}
function showPassword(id) {
var x = document.getElementById(id);
if (x.type === "password") {
x.type = "text";
} else {
x.type = "password";
}
}
function updateAgeToMinMaxInQueryString(url) {
const urlParams = new URLSearchParams(url);
if (urlParams.has('age')) {
const ageValue = urlParams.get('age');
const [minAge, maxAge] = ageValue.split('-').map(Number);
urlParams.delete('age');
urlParams.set('minAge', minAge);
urlParams.set('maxAge', maxAge);
}
return urlParams.toString();
}
function updateQueryFilters(filters) {
if (filters) {
// Replace query parameters
let updatedFilters = filters
.replace(/(\?|&)(orientation=)/, '$1sexPreference=')
.replace(/(\?|&)(hair=)/, '$1hairColor=')
.replace(/(\?|&)(body=)/, '$1bodyType=')
.replace(/(\?|&)(bodyType=)(bbw|petite)/g, (match, p1, p2, p3) => p1 + p2 + (p3 === 'bbw' ? 'large' : 'slimPetite'))
.replace(/(\?|&)(bodyType=)morethanAverage/, '$1$2moreThanAverage')
.replace(/(\?|&)(ethnicity=)ebony/, '$1$2black');
updatedFilters = updateAgeToMinMaxInQueryString(updatedFilters);
return '&' + updatedFilters;
}
return '';
}
function defineSiteGender(qs) {
let gender = false;
if (Array.isArray(qs)) {
for (string of qs) {
let params = new URLSearchParams(string);
gender = params.get('gender');
if (gender) {
break;
}
}
} else {
let params = new URLSearchParams(qs);
gender = params.get('gender');
}
if (gender == 'male') {
$('[data-subcat="30-49"]').each(function(){
$(this).html("DILFs");
});
$('[data-subcat="60-100"]').each(function(){
$(this).html("Großväter");
});
} else if (gender == 'female') {
$('[data-subcat="gay"]').each(function(){
$(this).html("Lesbisk");
});
}
}
function onCaptchaSubmit(token) {
if (window.currentCaptchingForm) {
currentCaptchingForm.submit();
window.currentCaptchingForm = false;
}
}
function resetTokensValue(){
$(".member-balance").each(function(){
$(this).find('.balance-value').hide();
$(this).find('.lds-ring').show();
});
}
function requireAllFields(form) {
const submitButton = form.find("button");
const inputs = form.find(".form-control");
let allFilled = true;
inputs.each(function () {
if ($(this).is("input, textarea, select") && !$(this).val().trim()) {
allFilled = false;
}
});
submitButton.toggleClass("disabled", !allFilled);
}
function trackAndRedirect(og_url){
var performer = (og_url.includes('performer') ? og_url.split('performer=')[1] : '');
//generate the transaction id
$.get(og_url+'&aff_sub=traffic_mode&format=json', {}, function(data){
//redirect the user
if(data.response.status == 1){
var red_url = 'https://www.cam4.com/'+performer+'?act=hasOffers_'+data.response.data.transaction_id
document.location = red_url;
}
}, 'json');
}
function setupFieldValidator($input) {
let validationTimer = null;
let currentValidationId = 0;
const $submitBtn = $('#register-form').find("button[type='submit']");
const $alert = $("#username-alert");
const $icon = $("#username-icon");
const $suggestedDiv = $("#usernames-suggested");
$input.on("input", function () {
const value = $input.val().trim();
clearTimeout(validationTimer);
if (value === "") {
$submitBtn.prop("disabled", true);
$icon.attr("class", "bi bi-x text-danger");
return;
}
validationTimer = setTimeout(() => {
const thisValidationId = ++currentValidationId;
const fieldType = $input.data("field-type");
// Dispatch based on type
if (fieldType === "username") {
cam4.validateUsername(value, function (result) {
if (thisValidationId !== currentValidationId) return;
if (result.code === "ok") {
$submitBtn.prop("disabled", false);
$icon.attr("class", "bi bi-check text-success");
$alert.hide();
$suggestedDiv.hide().empty();
} else {
let message = "";
switch (result.code) {
case "username_exists":
message = "Ungültig, Benutzername existiert bereits";
break;
case "invalid_numbers":
message = "Ungültig, enthält Zahlen 10-17";
break;
case "invalid_username":
message = "Der Benutzername ist ungültig";
break;
default:
message = "";
}
$alert.empty().append(`<strong>${message}</strong>`).show();
$submitBtn.prop("disabled", true);
$icon.attr("class", "bi bi-x text-danger");
if (Array.isArray(result.suggestedUsernames) && result.suggestedUsernames.length > 0) {
$suggestedDiv.empty();
result.suggestedUsernames.forEach(username => {
const $pill = $(
`<span class="pill suggested-username-pill">${username}</span>`
);
$suggestedDiv.append($pill);
});
$suggestedDiv.show();
} else {
$suggestedDiv.hide().empty();
}
$suggestedDiv.off("click", ".suggested-username-pill").on("click", ".suggested-username-pill", function () {
const suggested = $(this).text();
$input.val(suggested).trigger("input");
});
}
});
}
}, 300);
});
}
function redirectLink(performer) {
const bizLink = "https://offers.cam4tracking.com/aff_c?offer_id=2744&aff_id=3909";
var decodedLink = bizLink.replace(/&/g, '&').replace('{{REPLACE-ME}}', performer);
trackAndRedirect(decodedLink);
}
$(document).ready(function() {
//show registration modal every 2.5min for a maximum of three times for guests
if (is_guest){
var reg_count = 0;
var reg_int = setInterval(function(){
if(reg_count < 3){
if (!($("#login-modal").is(':visible'))) {
reg_count++;
showRegisterModal();
}
}
else
clearInterval(reg_int);
}, 150000);
}
//age verification overlay
if( !($.cookie("age_check_agree") == 1) ){
$('#age-verification-modal').modal();
$('#age-verification-modal button').on('click', function(e){
if ($(this).attr('data-action') == 'continue') {
$.cookie("age_check_agree", 1, { expires: 365, path: '/' });
}
});
$('#age-verification-modal').on('hidden.bs.modal', function () {
$(".swf-cover").remove();
});
}else{
$(".swf-cover").remove();
}
//do we need to show the login modal with the success message?
if(parseInt(verified) == 1){
showLoginModal(true);
}
//do we need to show the buy tokens/register form
if(parseInt(showTokens) == 1){
if(is_guest)
showRegisterModal();
else
showTokensModal();
}
//do we need to show the login form
if(parseInt(showLogin) == 1 && is_guest){
showLoginModal(false);
}
//do we need to set a timeout for the tokens modal
if(tokens_modal_timeout){
var seconds = parseInt(tokens_modal_timeout);
if(!isNaN(seconds) && !is_guest && balance <= tokens_modal_limit){
setTimeout(function(){
showTokensModal();
}, seconds * 1000);
}
}
//do we need to set an interval for the tokens modal
if(tokens_modal_interval){
var seconds_int = parseInt(tokens_modal_interval);
if(!isNaN(seconds_int) && !is_guest && balance <= tokens_modal_limit){
setInterval(function(){
showTokensModal();
}, seconds_int * 1000);
}
}
//do we need to remove the membership option?
if(hide_membership){
$("#buy-gold-btn").remove();
$("#buy-gold-modal").remove();
}
//Handle invisible hcaptcha
$('button[type="submit"]').on('click', function(e) {
let form = $(this).parents('form:first');
let widgetID = form.find('.h-captcha iframe').data('hcaptcha-widget-id');
let widgetType = form.find('.h-captcha').data('size');
if (widgetID && widgetType=='invisible') {
e.preventDefault();
hcaptcha.reset(widgetID);
hcaptcha.execute(widgetID);
window.currentCaptchingForm = form;
}
});
//Handle username field validator
$(".js-field-validate").each(function () {
setupFieldValidator($(this));
});
//hide the header if we're in a chatroom
$('.navbar-collapse-topmenu').on('hidden.bs.collapse', function () {
if($("#chatroom.mobile").length > 0){
$(".header").hide();
}
})
var url = window.location.href;
var urlObj = new URL(url);
var params = new URLSearchParams(urlObj.search);
var isCamsPage = window.location.href.includes("/cams/") && !window.location.href.includes("/cams/profile");
$('.add-to-query-link').each(function(){
let cat = $(this).attr('data-cat');
let subcat = $(this).attr('data-subcat');
let param = params.get(cat);
if (param == subcat) {
$(this).parents('ul').addClass('active-link-enabled');
$(this).addClass("active");
$(this).attr('title', 'Kategorie entfernen');
}
});
//Add or update query parameter
$('.add-to-query-link').on('click', function(e){
e.preventDefault();
let cat = $(this).attr('data-cat');
let subcat = $(this).attr('data-subcat');
let param = params.get(cat);
if (param !== subcat ) {
urlObj.searchParams.set(cat, subcat);
urlObj.pathname = isCamsPage? urlObj.pathname : $(this).attr('href');
window.location.href = urlObj.toString();
}
});
//Add or update query parameter for static links
$('.add-to-query-link-static').on('click', function(e){
e.preventDefault();
window.location.href = $(this).attr('href') + urlObj.search;
});
//Remove selected query parameter
$('.add-to-query-link.active').on('click', function(e){
e.preventDefault();
let cat = $(this).attr('data-cat');
urlObj.searchParams.delete(cat);
urlObj.pathname = isCamsPage? urlObj.pathname : $(this).attr('href');
window.location.href = urlObj.toString();
});
//Update pager query
$('#cams-pager .btn').on('click', function(e){
e.preventDefault();
let page = this.getAttribute("href").substring(1).split('=')[1];
urlObj.searchParams.set('page', page);
window.location.href = urlObj.toString();
});
$('[data-toggle="tooltip"]').tooltip();
if(is_mobile){
$("#mobile-register-cta").show();
}
forced_trigger_small = '<div class=\"absolute-center\" style=\"width:100%;height:140px;text-align:center;\">\n <img src=\"//granity-pinklabel-static-assets-production.xcdnpro.com/assets/heart-lock-a3abd20f5656784a30de3d6fbaca0830b93e4cbeece754f1ebe871eedfe3573a.png\" style=\"height:75px;min-height:75px !important;position:initial;\"/><br><br>\n <a href=\"javascript:showRegisterModal();\" class=\"btn btn-pink\" style=\"margin-right: 10px;\">Registrieren (Kostenlos)<\/a>\n <a href=\"javascript:showLoginModal();\" class=\"btn btn-pink\">Einloggen<\/a>\n<\/div>';
forced_trigger_big = '<div class=\"absolute-center\" style=\"width:70%;height:190px;text-align:center;\">\n <img src=\"//granity-pinklabel-static-assets-production.xcdnpro.com/assets/heart-lock-a3abd20f5656784a30de3d6fbaca0830b93e4cbeece754f1ebe871eedfe3573a.png\" height=\"90\"/>\n <p style=\"color:white;font-size:16px;text-shadow:2px 2px 3px rgba(0,0,0,0.85);margin-top:20px;\">\n Um diesen Inhalt zu sehen, müssen wir dein Alter überprüfen. Dies ist gesetzlich vorgeschrieben.<br>\n Klicke auf die Schaltfläche unten, um loszulegen.\n <\/p><br>\n <a href=\"javascript:showRegisterModal();\" class=\"btn btn-pink\" style=\"margin-right: 10px;\">Registrieren (Kostenlos)<\/a>\n <a href=\"javascript:showLoginModal();\" class=\"btn btn-pink\">Einloggen<\/a>\n<\/div>';
var url = window.location.href;
var urlObj = new URL(url);
var params = new URLSearchParams(urlObj.search);
var isCamsPage = window.location.href.includes("/cams/") && !window.location.href.includes("/cams/profile");
$('.add-to-query-link').each(function(){
let cat = $(this).attr('data-cat');
let subcat = $(this).attr('data-subcat');
let param = params.get(cat);
if (param == subcat) {
$(this).parents('ul').addClass('active-link-enabled');
$(this).addClass("active");
$(this).attr('title', 'Kategorie entfernen');
}
});
//Add or update query parameter
$('.add-to-query-link').on('click', function(e){
e.preventDefault();
let cat = $(this).attr('data-cat');
let subcat = $(this).attr('data-subcat');
let param = params.get(cat);
if (param !== subcat ) {
urlObj.searchParams.set(cat, subcat);
urlObj.pathname = isCamsPage? urlObj.pathname : $(this).attr('href');
window.location.href = urlObj.toString();
}
});
//Add or update query parameter for static links
$('.add-to-query-link-static').on('click', function(e){
e.preventDefault();
window.location.href = $(this).attr('href') + urlObj.search;
});
//Remove selected query parameter
$('.add-to-query-link.active').on('click', function(e){
e.preventDefault();
let cat = $(this).attr('data-cat');
urlObj.searchParams.delete(cat);
urlObj.pathname = isCamsPage? urlObj.pathname : $(this).attr('href');
window.location.href = urlObj.toString();
});
//Update pager query
$('#cams-pager .btn').on('click', function(e){
e.preventDefault();
let page = this.getAttribute("href").substring(1).split('=')[1];
urlObj.searchParams.set('page', page);
window.location.href = urlObj.toString();
});
$('[data-toggle="tooltip"]').tooltip();
});
function toggleMobileMenu(){
$("button.navbar-toggle")[0].click();
$(".header").show();
}
function displayMembershipProducts(products){
//console.dir(products);
//generate the methods tabs
var payments = [];
for(var i = 0; i < products.length; i++){
for(var j = 0; j < products[i].categories.length; j++){
for(var k = 0; k < products[i].categories[j].methods.length; k++){
var t = products[i].categories[j].methods[k].type;
if(typeof t == "undefined")
t = 13;
if(!payments.includes(t)){
let cryptoSelector = '';
if (t == 'CR') {
cam4.getCryptoProducts(products[i].id);
cryptoSelector = '<div class="crypto-selector" data-tab="gold-tab-CR"></div>';
}
payments.push(t);
$("#gold-payment-tabs").append('<li role="presentation" '+(payments.length == 1 ? 'class="active"' : '')+'><a href="#gold-tab-'+t+'" aria-controls="credit" role="tab" data-toggle="tab" class="tab-'+t+'"></a></li>');
$("#gold-payment-tabs-content").append('<div role="tabpanel" class="tab-pane '+(payments.length == 1 ? 'active' : '')+'" id="gold-tab-'+t+'">'+cryptoSelector+'</div>');
}
let href = 'javascript:cam4.purchaseMembershipProduct(\''+t+'\',\''+products[i].id+'\',\''+products[i].categories[j].methods[k].processorId+'\',);';
var details = '<a init-href="'+href+'" href="'+href +'"><div class="payment-box"><h3>'+getPeriod(products[i].details.recurringPeriod)+'<small class="pull-right">';
details += products[i].currency.symbol+(products[i].amount / Math.round(products[i].details.recurringPeriod / 30)).toFixed(3).replace(/\.(\d\d)\d?$/, '.$1')+' / month</small></h3>(billed at '+products[i].currency.symbol+products[i].amount+')</div></a>';
$("#gold-tab-"+t).append(details);
}
}
}
//adds loader animation to the payment-box link
$('#buy-gold .payment-box').on('click', function(e){
$(this).find('.lds-ring').remove();
$(this).append('<div id="pink-label-loading-animation" class="lds-ring" style="z-index:auto" id="loading-spinner"><div></div><div></div><div></div><div></div></div>');
});
}
function getPeriod(p){
switch(p){
case 30: return "1 Month";
case 90: return "3 Months";
case 365: return "12 Months";
}
}
function getMonthlyCost(p, a){
Math.round(a / p);
}
function displayProducts(products){
// You can now pay for CAM4 Tokens by trading any gift card. Instant access, 100% anonymous, no credit card required.
//generate the methods tabs
var payments = [];
for(var i = 0; i < products.length; i++){
for(var j = 0; j < products[i].categories.length; j++){
for(var k = 0; k < products[i].categories[j].methods.length; k++){
var t = products[i].categories[j].methods[k].type;
if(!payments.includes(t)){
payments.push(t);
let cryptoSelector = '';
if (t == 'CR') {
cam4.getCryptoProducts(products[i].id);
cryptoSelector = '<div class="crypto-selector" data-tab="tab-CR"></div>';
}
$("#payment-tabs").append('<li role="presentation" '+(payments.length == 1 ? 'class="active"' : '')+'><a href="#tab-'+t+'" aria-controls="credit" role="tab" data-toggle="tab" class="tab-'+t+'"></a></li>');
$("#payment-tabs-content").append('<div role="tabpanel" class="tab-pane '+(payments.length == 1 ? 'active' : '')+'" id="tab-'+t+'">'+cryptoSelector+'</div>');
}
var href = 'javascript:cam4.purchaseTokensProduct(\''+t+'\',\''+products[i].id+'\',\''+products[i].categories[j].methods[k].processorId+'\',);';
if(products[i].type == "TOKENS"){
if(false && products[i].quantity >= 0){
var details = '<a init-href="'+href+'" href="'+href+'"><div class="payment-box"><h3><span style="text-decoration: line-through;">'+products[i].quantity+'</span> ';
details += (products[i].quantity + 0)+' Tokens <small class="grey pull-right price-value" init-currency="'+products[i].currency.symbol+'" ammount="'+products[i].amount+'">';
details += products[i].currency.symbol+products[i].amount+'</small></h3>';
details += '<small>0 Bonus-Token ($9.95)</small>';
details += '</div></a>';
}
else{
if (t == 'GC') {
var gcMessage = "Sie können jetzt für CAM4 Token bezahlen, indem Sie eine beliebige Geschenkkarte eintauschen. Sofortiger Zugang, 100% anonym, keine Kreditkarte erforderlich.";
var details = '<a init-href="'+href+'" href="'+href+'"><div class="payment-box"><h3>'+gcMessage+'</h3></div></a>';
} else {
var details = '<a init-href="'+href+'" href="'+href+'"><div class="payment-box"><h3>'+products[i].quantity+' Tokens <small class="grey pull-right price-value" init-currency="'+products[i].currency.symbol+'" ammount="'+products[i].amount+'">';
details += products[i].currency.symbol+products[i].amount+'</small></h3></div></a>';
}
}
$("#tab-"+t).append(details);
}
}
}
}
//adds loader animation to the payment-box link
$('.payment-box').on('click', function(e){
$(this).find('.lds-ring').remove();
$(this).append('<div id="pink-label-loading-animation" class="lds-ring" style="z-index:auto" id="loading-spinner"><div></div><div></div><div></div><div></div></div>');
});
}
function displayCryptoProducts(products) {
let cryptoSelectors = $(".crypto-selector");
cryptoSelectors.each(function(){
let parentTab = $(this).attr("data-tab");
var html = '';
if (products){
html = '<select name="cryptos" class="cryptos" onchange="updateRates(false, false, false,\''+parentTab+'\' );">';
for(var i = 0; i < products.length; i++){
let currency = products[i].currency;
let currencyName = products[i].description;
let rate = products[i].rate;
let currency_fiat = products[i].currency_fiat;
if (i == 0) {
updateRates(rate, currency, currency_fiat, parentTab )
}
html += '<option data-fiat="'+currency_fiat+'" data-rate="'+rate+'" value="'+currency +'">'+currencyName +'</option>';
}
html += '</select>';
}
$(this).html(html);
});
}
function updateRates(rate = false, crypto = false, fiat = false, parentTab) {
//SVG for the convert icon
let convertIcon = '<svg style="display:inline-block; width: 12px;" class="MuiSvgIcon-root PaymentRow__arrowIcon__3JG7T" focusable="false" viewBox="0 0 24 24" aria-hidden="true" role="presentation"><path d="M11 9l1.42 1.42L8.83 14H18V4h2v12H8.83l3.59 3.58L11 21l-6-6 6-6z"></path></svg>';
//get values on page load and cryptoselect
if (!rate)
rate = $('#' + parentTab).find(".cryptos").find(":selected").attr('data-rate');
if (!crypto)
crypto = $('#' + parentTab).find(":selected").val();
if (!fiat)
fiat = $('#' + parentTab).find(":selected").attr('data-fiat');
//Get crypto tab
var priceTabs = $("#" + parentTab);
//Convert prices to the selected crypto
priceTabs.find('.payment-box small.price-value').each(function(){
$(this).html($(this).attr('init-currency') + $(this).attr('ammount') + '<br>' + ($(this).attr('ammount') * (1/rate)).toFixed(8) + ' ' + convertIcon );
});
//Update link to the selected crypto
priceTabs.find('a').each(function(){
const initHref = $(this).attr('init-href');
let updatedHref = initHref.replace(");","'" + crypto + "','" + fiat + "');");
$(this).attr('href', updatedHref);
});
}
/**
* All config. options available here:
* https://cookieconsent.orestbida.com/reference/configuration-reference.html
*/
CookieConsent.run({
guiOptions: {
consentModal: {
layout: 'bar inline',
position: 'bottom left'
}
},
categories: {
necessary: {
enabled: true, // this category is enabled by default
readOnly: true // this category cannot be disabled
},
analytics: {
enabled: true,
}
},
language: {
default: 'de',
translations: {
de: {
consentModal: {
title: 'Wir verwenden Cookies',
description: 'Diese Website verwendet Cookies, um die Benutzerführung zu verbessern und statistische Daten zu sammeln. Für weitere Informationen klicken Sie bitte auf den Link. Indem Sie weiterhin auf dieser Website surfen, akzeptieren Sie die Verwendung von Cookies für die oben genannten Zwecke.',
acceptAllBtn: 'Alle akzeptieren',
acceptNecessaryBtn: 'Alle ablehnen',
showPreferencesBtn: 'Individuelle Einstellungen verwalten'
},
preferencesModal: {
title: 'Cookie-Einstellungen verwalten',
acceptAllBtn: 'Alle akzeptieren',
acceptNecessaryBtn: 'Alle ablehnen',
savePreferencesBtn: 'Aktuelle Auswahl akzeptieren',
closeIconLabel: 'Close modal',
sections: [
{
title: 'Verwendung von Cookies',
description: 'Wir verwenden Cookies, um grundlegende Funktionen der Website zu gewährleisten und Ihr Online-Erlebnis zu verbessern. Sie können sich jederzeit für jede Kategorie ein- oder austragen. Bitte lesen Sie die vollständige Datenschutzerklärung für weitere Informationen über Cookies und andere sensible Daten. <a href="/en/privacy">Hier</a>'
},
{
title: 'Streng notwendige Cookies',
description: 'Diese Cookies sind für das reibungslose Funktionieren der Website unerlässlich und können nicht deaktiviert werden.',
//this field will generate a toggle linked to the 'necessary' category
linkedCategory: 'necessary'
},
{
title: 'Leistung und Analytik',
description: 'Diese Cookies sammeln Informationen darüber, wie Sie unsere Website nutzen. Alle Daten sind anonymisiert und können nicht dazu verwendet werden, Sie zu identifizieren.',
linkedCategory: 'analytics'
},
{
title: 'Weitere Auskünfte',
description: 'Wenn Sie Fragen zu unserer Cookie-Politik und Ihren Wahlmöglichkeiten haben, wenden Sie sich bitte an <a href="/en/contact">Kontaktiere uns</a>'
}
]
}
}
}
}
});
function loadCamsListing(qs, cam_page, cam_n) {
defineSiteGender(qs);
let camsNumber = (Array.isArray(qs)) ? 5000 : cam_n;
let camPage = (Array.isArray(qs)) ? false : cam_page;
cam4.getCams(qs, camPage, camsNumber, function(cams) {
if (Array.isArray(qs)) {
let offset = (cam_page - 1) * cam_n;
let number = offset + cam_n;
cams = cams.slice(offset, number);
}
if (cams.length > 0) {
renderCams(cams, cam_page, cam_n);
setupCamsPager(cam_page, cam_n, (cams.length == cam_n));
} else {
cam4.getCams("&orderBy=MOST_VIEWERS", false, 60, function(fallbackCams) {
renderCams(fallbackCams, cam_page, cam_n);
$('#cams-container').prepend('<div class="alert alert-warning flash-notification">Derzeit sind keine Cams online, die den ausgewählten Filtern entsprechen. Warum schaust du dir nicht stattdessen die folgenden Cams an?</div>');
});
}
});
}
function renderCams(cams, cam_page, cam_n) {
var html = '';
for(var i = 0; i < cams.length; i++){
html += '<div class="col-xs-12 col-md-5ths col-lg-4 thumb-gutter">';
html += '<div class="thumb-box '+(cam4.sfw ? '' : 'pink-preview')+'" data-container="webcam" data-room="/en/cams/profile/'+cams[i]['nickname']+'" data-url="'+cams[i]['preview_url']+'" data-id="'+cams[i]['id']+'">';
html += '<div class="wrapper">';
html += '<div class="thumb-img-limited">';
if(false || cam4.sfw)
html += '<div class="thumb-img '+(cam4.sfw ? 'blur blur-small' : '')+'" style="background-image: url('+cams[i]['profile_thumb_sfw']+' )"></div>';
else
html += '<div class="thumb-img '+(cam4.sfw ? 'blur blur-small' : '')+'" style="background-image: url('+cams[i]['thumb']+')"></div>';
html += '</div>';
html += '<div class="thumb-body text-ellipsis">';
html += '<div class="clearfix thumb-title text-ellipsis">';
html += cams[i]['nickname'];
html += '</div>';
html += '<div class="clearfix">';
html += '<div class="pull-left">';
html += '<i class="fa fa-heart"></i> '+cams[i]['sex_preference'];
html += '</div>';
html += '<div class="pull-right">';
html += performerGender(cams[i]['gender'], true);
if(true)
html += '<img alt="'+cams[i]['country']+' flag" width="16" height="16" src="//granity-pinklabel-static-assets-production.xcdnpro.com/assets/blank-50fd99c7ba443da1d3f8455af419e9a623c7a87013c82580129c7461a9804f27.gif" class="flag flag-'+cams[i]['country']+'"/>';
html += '</div>';
html += '</div>';
html += '</div>';
html += '</div>';
html += '</div>';
html += '</div>';
}
$("#cams-container").html(html);
$(".pink-preview").pinkPreview();
//attach the buttons that trigger this modal to all blurred elements
$("#cams-container div.blur.blur-small").each(function(){
$(this).parent().css('position', 'relative').append(forced_trigger_small);
});
$('.thumb-box').on('click', function(e){
//prevent this from happening if we have a click from the button added by the SFW mode
if(e.target.nodeName == "A") return;
if ($(this).attr('data-room')) {
window.location.href = $(this).attr('data-room');
}
})
}
function showForcedAgeVerificationModal(){
cam4.openAgeVerificationPopup();
}
</script>
</body>
</html>