സേവനപദവികൾ

ടിക്ക് എല്‍സി ("ടിക്ക് എല്‍സി") അല്ലെങ്കില്‍ "ടിക്ക്ലിറ്റ്" ഉപയോഗിക്കുമ്പോള്‍, ഈ രേഖയില്‍ പറഞ്ഞിരിക്കുന്ന പ്രകാരം ഡിക്കറ്റിന്‍റെ സേവനപദങ്ങള്‍ നിങ്ങളെ ബന്ധിപ്പിക്കുന്നു. നിങ്ങള്‍ ഈ നിര്‍ദ്ദേശങ്ങള്‍ സ്വീകരിക്കില്ലെങ്കില്‍, ടിക്കറ്റ് അല്ലെങ്കില്‍ അതിന്‍റെ സേവനങ്ങള്‍ ഉപയോഗിക്കാന്‍ നിങ്ങള്‍ക്ക് അനുവാദമില്ല.

Tiko. ഏതു സമയത്തും മാറ്റാനും, പരിഷ്കരിക്കാനും, നിര്‍വചിക്കാനും, സേവനത്തിന്റെ ഭാഗം നിര്‍ത്താനും അവകാശപ്പെടുന്നു. ഏതു കാരണത്താലും, ഏതു സമയത്തും, ഏതു സമയത്തും. ടി.സി.റ്റി.റ്റി. അല്ലെങ്കില്‍ അതിന്‍റെ സേവനങ്ങള്‍ ഉപയോഗിക്കാന്‍ തുടരുന്നു. അല്ലെങ്കില്‍ നിങ്ങള്‍ അംഗീകരിക്കുന്ന സേവന രേഖകള്‍ ഈ സേവന രേഖകള്‍ക്ക് വളച്ചൊടിക്കാന്‍ ഞങ്ങള്‍ ശുപാര്‍ശ ചെയ്യുന്നു. ഇങ്ങനെ, ഈ സേവനത്തിന്റെ സമയങ്ങളില്‍ നിങ്ങള്‍ക്ക് മുന്‍ഗണന നല്‍കണം.

നിങ്ങള്‍ സേവനത്തിന്റെ നിബന്ധനകള്‍ ലംഘിക്കുകയാണെങ്കില്‍, മുന്‍‌കൂര്‍ അല്ലെങ്കില്‍ നിര്‍ണ്ണയിക്കപ്പെട്ട, അല്ലെങ്കില്‍ നിര്‍ണ്ണയിച്ചിട്ടുള്ളതെങ്കില്‍, Tikt അല്ലെങ്കില്‍ അതിലെ സേവനങ്ങള്‍ ശ്രദ്ധിക്കാതെ ഉടന്‍ തന്നെ അവസാനിപ്പിക്കും. ഈ സേവനത്തിന്റെ നിബന്ധനകള്‍ ലംഘിക്കുമ്പോള്‍, സേവനത്തിന്റെ നിബന്ധനകള്‍ ഒഴിവാക്കും.

ഒരു തൊഴിലുടമയുടെ ബന്ധവും കൂട്ടായ്മയും മറ്റു ഏജൻസിയുമായി ബന്ധവും ഇല്ല. ഈ സേവനത്തിന്റെ നിബന്ധനകള്‍ സ്വീകരിച്ചതിനാല്‍ തന്നെ.

ഇറ്റാലിയന്‍

നിങ്ങള്‍ ഒരു വ്യക്തിയാണ്, നിങ്ങള്‍ ( a. A. കോര്‍ട്ടിയോലേഷന്‍ അല്ല). നിങ്ങള്‍ നിയമപരമായി ഒരു കരാര്‍ ഉണ്ടാക്കാന്‍ നിയമപരമായ പ്രായമുള്ളവര്‍ അല്ലെങ്കില്‍ മാതാപിതാക്കളുടെ അനുവാദം അല്ലെങ്കില്‍ നിങ്ങള്‍ക്ക് നല്‍കേണ്ടതാണ്. കുറഞ്ഞത് 13 അല്ലെങ്കില്‍ അല്ലെങ്കില്‍ കൂടുതല്‍ പ്രായം അല്ലെങ്കില്‍ കൂടുതല്‍ പ്രായമുള്ളവര്‍, നിങ്ങള്‍ അര്‍ഹിക്കുന്ന എല്ലാ വിവരങ്ങളും കൃത്യതയുള്ളതാണ്. ഇത്തരം വിവരങ്ങള്‍ നിങ്ങള്‍ക്ക് പൂര്‍ണ്ണമായും പൂര്‍ണ്ണമായും നല്‍കുവാന്‍ അനുവാദങ്ങള്‍ നല്‍കണം. ഈ നിയമങ്ങള്‍ക്കനുവദിച്ചും നല്‍കാനും അതിന്‍റെ നിയമാനുസരണവും നല്‍കാനും നിങ്ങള്‍കേണ്ടതും നിര്‍ബന്ധിതമാണ്. ഈ നിയമങ്ങള്‍ക്കനുസരിച്ചു് ഇതിന്‍റെ നിയമങ്ങള്‍ സ്വീകരിക്കാനും അതിന്‍റെ നിയമങ്ങള്‍ സ്വീകരിക്കാനും പാടില്ല.

ഉള്ളടക്കം

Tikt.io, അതിന്‍റെ യഥാര്‍ത്ഥമായ വിവരങ്ങള്‍ക്ക് അവകാശങ്ങള്‍ പാലിക്കുന്നു. tikt.io.fo, അതിന്റെ വെബ്സൈറ്റില്‍.

Tiki. Tiko. Tiko നിങ്ങള്‍ ഉപയോഗിക്കുന്നതിലൂടെ വിവരങ്ങളും അതിന്റെ സേവനങ്ങളും നിങ്ങള്‍ക്ക് ലഭ്യമാക്കാം. ഉദാഹരണമായി, Tiko. Tigtiയോ നിങ്ങളുടെ IP റെക്കോഡ് ഉപയോക്താക്കളല്ലെങ്കില്‍ നിങ്ങളുടെ ഐപി റെക്കോര്‍ഡിങ്ങിനുള്ള വിലാസം ശേഖരിക്കുന്നു. Tikio. Tikt. Tipli. Tipli. Ti. lio. Ti. lio. lio എന്ന ഏതെങ്കിലും എപിപി. കോഡര്‍ പ്രവര്‍ത്തിപ്പിയ്ക്കുന്നിടത്തത്തില്‍ ഒരു ഐപിയും ഇല്ല. അതു് റിക്കോര്‍വ്വേറെ റെക്കോ റെക്കോഡുല്യൂട്ട് ചെയ്യുന്നില്ല. അതു് ഒരു നിമിഷം വരെ ഒരു ഐപിയിലോ ഓഡിയോ ആയിട്ടില്ല. IPAP- ല്‍ നല്‍കുമ്പോള്‍ ആവര്‍ക്കിയില്‍ പ്രവര്‍ത്തിപ്പിച്ചിട്ടുള്ള വിവരങ്ങള്‍ക്ക് ഒരു പ്രത്യേക വിവരങ്ങള്‍ നല്‍കുവാന്‍ സാധ്യമായില്ല. ഐപിപിയും മറ്റു വിവരങ്ങള്‍ക്ക് ഉപയോഗിക്കുമ്പോള്‍ മതി.

നിങ്ങളുടെ ഉപയോക്താവിനെക്കുറിച്ചുള്ള വിവരങ്ങള്‍ നല്‍കാനുള്ള അവകാശം നിങ്ങള്‍ക്കുണ്ടെന്നു് നിങ്ങള്‍ക്കുറപ്പുണ്ട്. നിങ്ങള്‍ എല്ലാ ഉപയോക്താക്കളും Tikt.io. അല്ലെങ്കില്‍ നേരിട്ട്, അതിന്റെ സേവനങ്ങള്‍ ഉപയോഗിക്കുന്നു എന്നും, ടിക്കറ്റിന്‍റെ പ്രൈവേഴ്സ് പോളിസി നല്‍കും എന്നും നിങ്ങള്‍ അംഗീകരിക്കുന്നു.

ഇത്തരം സാമൂഹ്യ മാധ്യമങ്ങളുടെ ഉപയോഗം ടിക്കറ്റിന്‍റെയോ അതിന്‍റെ സേവനങ്ങളുടെയോ അനുയോജ്യമായ ഒരു അംഗീകാരത്തെ പ്രതിഫലിപ്പിക്കുന്നില്ല.

മൂന്നാമത്തെ പാർട്ടിയുടെയോ വിവരങ്ങളുടെയോ ശേഖരണത്തിന്‍റെയോ ശേഖരണത്തിന്‍റെയോ ഒന്നും ശേഖരിച്ചിട്ടില്ല.

റ്റിക്‌റ്റ്‌യോയുമായി ബന്ധപ്പെട്ട മൂന്നാമത്തെ പാർട്ടിയുടെ ഉള്ളടക്കം ഉപയോഗിക്കുമ്പോൾ, ടിക്‌റ്റിയോയുടെ സേവനങ്ങളുടെ ഉപയോഗത്തിന്‌ നിങ്ങൾ തികച്ചും ഉത്തരവാദിയാണ്‌ എന്ന് നിങ്ങൾ മനസ്സിലാക്കുന്നു.

Tict. Tiki. Tiki. oni, നിങ്ങള്‍ക്കു് നേരിട്ട് ഉള്ളടക്കവും പൈപ്പുകളും സൂക്ഷിക്കുന്നില്ല. തത്ഫലമായി, DRM- ല്‍ സംരക്ഷിക്കപ്പെടാത്ത ഉള്ളടക്കം മാത്രമേ ടിക്സിയോയ്ക്ക് നല്‍കുവാന്‍ സാധിക്കൂ. Tikt. Tikti and and vo. tict and the thiss in the and by. Tikimo, tict. ed എന്ന വസ്തുക്കള്‍ അംഗീകരിക്കുകയോ, ഫീഡ്യൂളുകള്‍ക്ക് വിധേയമാക്കുകയോ, പൂര്‍ണ്ണമായും ഉപയോഗിക്കുകയോ ചെയ്യില്ല.

അത്തരം ഡിജിറ്റൽ അവകാശങ്ങൾ കൈകാര്യം ചെയ്യുന്നതിനുള്ള ശ്രമങ്ങൾ നടത്താൻ നിങ്ങൾ സമ്മതിക്കുന്നില്ല.

നിങ്ങളുടെ സ്വന്തം വിവേകവും അപകടവും നിങ്ങള്‍ക്കുപയോഗിക്കാം.

ടി.സി.ടി.ഇയോ, മറ്റുള്ളവരുടെ ബുദ്ധിപരമായ അവകാശങ്ങളെ ആദരിക്കുന്നു, പിന്നെ പകര്‍പ്പവകാശം അനുവദിക്കുന്നില്ല, പകര്‍പ്പവകാശം അനുവദിക്കുന്നില്ല. അതുകൊണ്ട് സേവനം ഔട്ട്പുട്ട് ഇന്‍റർനെറ്റ്- ഇന്‍റര്‍വേഷന്‍ പരസ്യമായി രേഖപ്പെടുത്താന്‍ അനുവദിക്കുന്നു.

വീണ്ടും, Tikt. Tact. Tacti എന്ന മൂന്നാമത്തെ അംശത്തിലുള്ള ഉള്ളടക്കം അതിന്റെ സേവനങ്ങള്‍ അല്ലെങ്കില്‍ വെബ്സൈറ്റിലൂടെ ലഭ്യമാകുന്നവയില്‍ നിന്നും നീക്കം ചെയ്യുവാന്‍ സാധ്യമല്ല. മറ്റു വെബ്സൈറ്റുകളില്‍ നിന്നു് ലഭ്യമാകുന്ന ഉള്ളടക്കം നീക്കം ചെയ്യുകയോ നിര്‍ജ്ജീവമാക്കുകയോ ചെയ്യുകയാണെങ്കില്‍ (ഉദാ. ഉദാ, ഹാന്‍ഡ്രം, പ്രൊഫൈല്‍, ഇന്‍സ്റ്റന്‍സ് തുടങ്ങിയവ) ദയവായി ഏതെങ്കിലും നോട്ടീസ് നിര്‍ദ്ദേശിക്കുക. അവയില്‍ താഴെ കൊടുത്തിരിക്കുന്ന കണ്ണികള്‍ വഴി നിങ്ങള്‍ക്ക് നേരിട്ട് ബന്ധപ്പെടാം: ഇന്‍സ്റ്റാള്‍സുകള്‍ ഡൌണ്‍ലോട് ചെയ്യുന്നു, പൈന്റര്‍ ഡൌണ്‍ലോട് ചെയ്യുന്നു.

പെരുമാറ്റം

. അതിന്റെ സേവനങ്ങളും സേവനങ്ങളും സ്വകാര്യവും കമ്മ്യൂണിറ്റി ലഭ്യമല്ലാത്തതുമായ രീതിയില്‍ മാത്രമേ ഉപയോഗിക്കാവൂ.

പിന്നെ, നിങ്ങള്‍ സമ്മതിക്കുന്നില്ല:

  • നിങ്ങളുടെ അധികാരത്തില്‍ ഉള്ള നിയമങ്ങള്‍ ലംഘിക്കുക, പ്രതിഷേധപരമായ നിയമങ്ങള്‍ ഉള്‍പ്പെടുത്തുക.
  • മൂന്നാമത്തെ പാര്‍ട്ടിയോ പാര്‍ട്ടിയോ ഞാന്‍ കൊള്ളയടിക്കും.
  • മറ്റു ടിക്കറ്റ് ഉപയോക്താക്കളുടെ പ്രവര്‍ത്തനങ്ങളെ വികലമാക്കൂ.

നിങ്ങള്‍ Tikt.ioയുടെ സേവനങ്ങള്‍ ഉത്തരവാദിത്വത്തോടെ ഉപയോഗിക്കാന്‍ സമ്മതിക്കുന്നു.

ഏതെങ്കിലും പാർട്ടിയുടെ ഈ നിയമങ്ങളും അവകാശങ്ങളും ലംഘിക്കുന്നത്‌, ടിസിറ്റോ മറ്റു മൂന്നാമത്തെ പാർട്ടികളാല്‍ ആഭ്യന്തരമോ ക്രിമിനല്‍ ശിക്ഷിക്കപ്പെടാൻ ഇടയാക്കിയേക്കാം.

ഡിഎം- കാസി നയം

Tikio. tict. Tict.io തനിയെ അതിന്റെ വെബ്സൈറ്റില്‍ അല്ലെങ്കില്‍ സര്‍വറുകളിലുള്ള മൂന്നാമത്തെ പാരന്‍ഷന്‍ സൂക്ഷിക്കുന്നില്ല, ഇതു് നമ്മുടെ മാതൃകയില്‍ കാണാവുന്നതാണ്, ഇതു് ഗാലറിയല്‍-dl-ഉം ഇതുപോലുള്ളവ ക്രമീകരിക്കാന്‍. "ahtcp=/ahtfftps.htpax/cfb559555959559555.796-5959-ല്‍ ചേര്‍ക്കാന്‍ ഇതു് കാണാം.

നിങ്ങള്‍ക്ക് ഏതെങ്കിലും പകര്‍പ്പവകാശത്തിന്റെയോ നിയന്ത്രണത്തിലോ ഉള്ള ഏതെങ്കിലുമൊരു വസ്തു നിങ്ങള്‍ക്ക് വിശ്വാസമുണ്ടെങ്കില്‍, നിങ്ങള്‍ പകര്‍പ്പവകാശം എക്സെപ്ഷന്‍ ഇന്‍ഫൈന്‍സിങ്ങിലേക്ക് (ഇന്‍ഷന്‍) എഴുതി അയയ്ക്കാം. നമ്മുടെ ഡിജിറ്റല്‍ സഹസ്രാബ് പകര്‍പ്പവകാശ നിയമം (DMCAC) താഴെ തിരിച്ചറിയാന്‍ അറിയപ്പെടുന്നു. അറിയിപ്പില്‍, നിങ്ങള്‍ക്ക് അറിയിപ്പു് നല്‍കണം:

( എ) മതിയായ വിശദാംശത്തില്‍, പകര്‍പ്പവകാശമുള്ള ജോലിയോ ബുദ്ധിപരമായ ഗുണമോ കണ്ടെത്തുക.

(B) ടിടിറ്റിലുള്ള യുആര്‍എല്‍ അല്ലെങ്കില്‍ മറ്റു പ്രത്യേക സ്ഥാനം തിരിച്ചറിയുക. നിങ്ങള്‍ പകര്‍പ്പവകാശം ഇന്‍വേഴ്സ് ചെയ്യുന്നു എന്നതില്‍ ഉള്‍പ്പെടുന്നവയും;

(C) പകര്‍പ്പവകാശത്തിന്‍റെ ഉടമസ്ഥന്‍റെ ഇലക്ട്രോണിക് അല്ലെങ്കില്‍ ഫിസിക്കല്‍ ഒപ്പ് നല്‍കുക അല്ലെങ്കില്‍ ഉടമസ്ഥന്‍ വേണ്ടി പ്രവര്‍ത്തിപ്പിയ്ക്കാന്‍ അധികാരമുള്ള ആളെ

(D) നിങ്ങള്‍ക്ക് ഒരു നല്ല വിശ്വാസം ഉണ്ടെന്ന് ഒരു മൊഴി ഉള്‍പ്പെടുത്തുക. തര്‍ക്കത്തിന്റെ ഉപയോഗം പകര്‍പ്പവകാശി, പകര്‍പ്പവകാശി, അതിന്‍റെ ഏജന്‍റ്, നിയമങ്ങള്‍ എന്നിവയുടെ അധികാരത്തിലല്ല.

() നിങ്ങളുടെ അറിയിപ്പിലുള്ള വിവരങ്ങള്‍ കൃത്യവും സാക്ഷ്യപ്പെടുത്തുന്നതുമായ ഒരു പ്രസ്താവനയില്‍ ഉള്‍പ്പെടുത്തുക. നിങ്ങള്‍ പകര്‍പ്പവകാശിയാണ്, പകര്‍പ്പവകാശികള്‍ക്ക് വേണ്ടി പ്രവര്‍ത്തിക്കാന്‍ അധികാരമുണ്ട്.

( എ) നിങ്ങളുടെ പേര്, മെയിലിങ്‌ വിലാസം, ടെലിഫോൺ നംബര്‍, ഈമെയില്‍ വിലാസം എന്നിവ ഉള്‍പ്പെടുത്തുക.

നിങ്ങളുടെ അറിയിപ്പ് നിങ്ങള്‍ക്ക് ഞങ്ങളുടെ DMCA ഏജന്റ്‌ ഇമെയില്‍, ഫാക്സ്, കത്തുകള്‍ വഴി അയയ്ക്കാം:

Tikt LLC

ശ്രദ്ധിക്കുക: DMCA ഏജന്റ്

850 Clark st.

P.O. Box 1232

South Windsor CT 06074

ഫാക്സ്: +18604837010

ഈമെയില്‍: hello@tikt.io

ടിക്റ്റിയോക്ക് ശരിയായ ഒരു അറിയിപ്പ് ലഭിച്ചാൽ, അത് ഉടനടി നീക്കം ചെയ്യുകയോ പ്രവര്‍ത്തനരഹിതമാക്കുകയോ ചെയ്‌തിരിക്കുന്ന സാധനങ്ങളുമായി ബന്ധപ്പെട്ട വിവരണങ്ങള്‍ (ഡിഎംഎ - യോടു യോജിക്കുന്നപക്ഷം) അവസാനിപ്പിക്കുകയോ ചെയ്യുന്നു.

Tiketi, അനുയോജ്യമായ സാഹചര്യങ്ങളിലും ശരിയായ വിവേകത്തോടെയും നിര്‍ബന്ധമായും അവസാനിക്കാനുള്ള ഒരു നയം സ്വീകരിച്ചിരിക്കുന്നു. റ്റക്ടിയോ. അതിന്‍റെ ശരിയായ പരിധിയില്‍, ടിക്കറ്റിനും, അല്ലെങ്കില്‍ അല്ലെങ്കില്‍ മറ്റുള്ളവരുടെ ഏതെങ്കിലും അവകാശങ്ങള്‍ ഒഴിവാക്കുന്ന ആര്‍ക്കെങ്കിലും അതിന്റെ ഉപയോഗം ഒഴിവാക്കാന്‍ കഴിയും.

ന്യൂ കാലിഡോമിയRegion/ state in France

നിങ്ങള്‍ ഡിഫന്‍സിറ്റിയില്‍ ഡിഫന്‍റ് ചെയ്തു കൊടുക്കണം. എല്ലാ അംഗങ്ങളും, സഹപ്രവർത്തകരും, ഉപഭോക്താക്കളും, ഉപഭോക്താക്കളും, നഷ്ടപരിഹാരം, നിയമപരമായ മറ്റു ഘടകങ്ങളും.

ഭരണസംഘ നിയമം

ഈ നിബന്ധനകളും അവസ്ഥകളും കമ്മിറ്റിയുടെ നിയമങ്ങള്‍ക്കനുസരിച്ചാണ് ഭരിക്കുന്നത്. നിങ്ങള്‍ക്ക് ആ രാജ്യത്തിലെ കോടതിയുടെയോ സ്ഥലത്തിന്‍റെയോ അനന്യമായ അധികാരത്തിനു കീഴ്‌പെടാന്‍ കഴിയില്ല.

എന്‍റെ വരിസംഖ്യ ഞാന്‍ എങ്ങനെ റദ്ദാക്കും?

അംഗത്വം റദ്ദാക്കാന്‍ ദയവായി ഇവിടെ ക്ളിക്ക് ചെയ്യുക

വീണ്ടും തുടങ്ങേണ്ട നയം

നിങ്ങളുടെ വിലയ്ക്ക് 30 ദിവസത്തിനുള്ളില്‍ ഒരു റദ്ദ് ചെയ്യണമെങ്കില്‍, ദയവായി -ലേക്ക് പോകുക. അല്ലെങ്കില്‍ 0) { var dur = parseFloat(attrDuration); info.data('duration', dur); info.find('.clip-fields').show(); info.find('.clip-loading').hide(); initClipSlider(info, dur); } else { info.find('.clip-loading').show(); info.find('.clip-fields').hide(); info.find('.clip-error').hide(); var itemPageUrl = info.attr('data-item-page-url') || ''; var pageUrl = decodeURIComponent(info.find('.download-button').data('page-url') || ''); var directUrl = decodeURIComponent(info.find('.download-button').data('url') || ''); var fetchUrl = itemPageUrl || pageUrl || directUrl; $.ajax({ url: '/api/duration/', type: 'POST', data: { url: fetchUrl, csrfmiddlewaretoken: 'eFwJROg1D8qFrGumFliQrQy4zdT3R6BLelKVe02qFBdZ1IENpxQZAGQU27uz0X8j' }, success: function(data) { if (data.duration) { info.data('duration', data.duration); info.find('.clip-loading').hide(); info.find('.clip-fields').show(); initClipSlider(info, data.duration); } else { info.find('.clip-loading').hide(); info.find('.clip-error').text('Could not get duration').show(); } }, error: function() { info.find('.clip-loading').hide(); info.find('.clip-error').text('Could not get duration').show(); } }); } } } else { clipInputs.hide(); } resetDownloadButton(info); }); container.on("click", ".download-button", function (e) { var target = $(this); var info = target.closest('.result-item-info'); var itemType = target.data('type') || ''; var format = info.find('[data-input=format]:checked').val() || ''; var quality = info.find('[data-input=quality]').val() || ''; var h264 = info.find('input[name=h264]').is(':checked'); // Image conversion (available to all users) if (itemType === 'image' && GO_API_URL) { var imgFormat = info.find('[data-input=img-format]:checked').val() || ''; var imgWidth = info.find('[data-input=img-width]').val() || ''; var imgHeight = info.find('[data-input=img-height]').val() || ''; var imgAspectRatio = info.find('[data-input=img-aspect-ratio]').val() || ''; var needsImageConversion = imgFormat !== '' || imgWidth !== '' || imgHeight !== '' || imgAspectRatio !== ''; if (needsImageConversion) { e.preventDefault(); if (!hasPro) { var modal = new bootstrap.Modal(document.getElementById('upgradeModal')); modal.show(); return; } var sourceUrl = decodeURIComponent(target.data('url')); var fn = target.data('fn') || 'image'; var form = document.createElement('form'); form.method = 'POST'; form.action = '/api/convert/image/'; form.style.display = 'none'; function addImgField(name, value) { var input = document.createElement('input'); input.type = 'hidden'; input.name = name; input.value = value; form.appendChild(input); } addImgField('csrfmiddlewaretoken', 'eFwJROg1D8qFrGumFliQrQy4zdT3R6BLelKVe02qFBdZ1IENpxQZAGQU27uz0X8j'); addImgField('url', sourceUrl); addImgField('title', fn); if (imgFormat) addImgField('image_format', imgFormat); if (imgWidth) addImgField('width', imgWidth); if (imgHeight) addImgField('height', imgHeight); if (imgAspectRatio) addImgField('aspect_ratio', imgAspectRatio); document.body.appendChild(form); form.submit(); document.body.removeChild(form); onDownloadButton.call(target[0]); return; } } var needsConversion = (format === 'wav') || (quality !== '') || h264; if (needsConversion && !hasPro) { e.preventDefault(); var modal = new bootstrap.Modal(document.getElementById('upgradeModal')); modal.show(); return; } if (needsConversion && GO_API_URL) { e.preventDefault(); var pageUrl = decodeURIComponent(target.data('page-url') || ''); var fn = target.data('fn') || 'download'; var sourceUrl = pageUrl; if (pageUrl.indexOf('tiktok.com') !== -1) { var proxyType = (itemType === 'audio') ? 'audio' : 'video'; sourceUrl = GO_API_URL + '/api/proxy?url=' + encodeURIComponent(pageUrl) + '&type=' + proxyType + '&fn=' + encodeURIComponent(fn); } var fmt; if (format === 'wav') { fmt = 'wav'; } else if (itemType === 'audio') { fmt = 'mp3'; } else { fmt = 'mp4'; } var form = document.createElement('form'); form.method = 'POST'; form.action = '/api/convert/' + fmt + '/'; form.style.display = 'none'; function addField(name, value) { var input = document.createElement('input'); input.type = 'hidden'; input.name = name; input.value = value; form.appendChild(input); } addField('csrfmiddlewaretoken', 'eFwJROg1D8qFrGumFliQrQy4zdT3R6BLelKVe02qFBdZ1IENpxQZAGQU27uz0X8j'); addField('url', sourceUrl); addField('title', fn); if (fmt === 'mp3' && quality) addField('audio_quality', quality + 'k'); if (fmt === 'mp4' && quality) addField('video_quality', quality); if (fmt === 'mp4' && h264) addField('h264', 'true'); document.body.appendChild(form); form.submit(); document.body.removeChild(form); onDownloadButton.call(this); } else { onDownloadButton.call(this); } }); container.on("change", "[data-input=format]", function () { var info = $(this).closest('.result-item-info'); var row = info.find('.quality-row'); if ($(this).val() === 'wav') { row.addClass("d-none"); } else { row.removeClass("d-none"); } resetDownloadButton(info); }); container.on("change input", "[data-input=quality]", function () { resetDownloadButton($(this).closest('.result-item-info')); }); container.on("change", "input[name=h264]", function () { resetDownloadButton($(this).closest('.result-item-info')); }); onChangeURLValue(); function onDownloadAll() { var target = $(this); target.find(".spinner-border").removeClass("d-none"); target.prop("disabled", true); var filter = container.find('input[name="downloadFilter"]:checked').val() || 'all'; var downloadLinks = []; var downloadButtons = container.find(".download-button"); downloadButtons.each(function (index, item) { var type = $(item).data("type") || ""; if (filter === "all" || type === filter || (filter === "video" && (type === "video" || type === "video_watermark"))) { downloadLinks.push($(item).data("url")); $(item).addClass("downloaded"); } }); if (downloadLinks.length === 0) { target.find(".spinner-border").addClass("d-none"); target.prop("disabled", false); return; } var batchDownloadI18n = { intro: "We detected {count} files. To keep things reliable we will download them in {n} batches of up to {size}. Each batch is saved separately as it finishes.", progress: "Batch {current} of {total}", retrying: "Batch {batch} failed, retrying in {sec}s…", failed: "Batch {batch} failed after retries. Press Resume to try again.", done_status: "All batches downloaded.", resume_prompt: "You already downloaded {done} of {total} batches for this list. Continue from there?", cancel_confirm: "Cancel the remaining batches?" }; batchDownload.show({ urls: downloadLinks, baseName: "Tikt", csrfToken: "eFwJROg1D8qFrGumFliQrQy4zdT3R6BLelKVe02qFBdZ1IENpxQZAGQU27uz0X8j", goApiUrl: GO_API_URL || "", i18n: batchDownloadI18n, onAllDone: function () { setTimeout(function () { target.find(".spinner-border").addClass("d-none"); target.text('Tikt.io പങ്കിടുക'); target.removeClass('btn-primary').addClass('btn-success'); target.prop("disabled", false); launchConfetti(target, 150, 2200); }, 100); }, onError: function (err) { alert(err && err.message ? err.message : err); target.find(".spinner-border").addClass("d-none"); target.prop("disabled", false); }, onCancel: function () { target.find(".spinner-border").addClass("d-none"); target.prop("disabled", false); } }); } var individualDownloadCount = 0; function onDownloadButton() { var target = $(this); if (!target.data('original-html')) { target.data('original-html', target.html()); target.data('original-class', target.attr('class')); } target.find(".spinner-border").removeClass("d-none"); setTimeout(function () { target.find(".spinner-border").addClass("d-none"); target.text('Tikt.io പങ്കിടുക'); target.removeClass('btn-outline-primary').addClass('btn-success'); launchConfetti(target, 150, 2200); }, 100) if (!hasPro) { individualDownloadCount++; var banner = $('#batchUpsellBanner'); if (banner.length && individualDownloadCount >= 3) { $('#batchUpsellCount').text(individualDownloadCount); banner.removeClass('d-none'); } } } function resetDownloadButton(info) { var btn = info.find('.download-button'); var originalHtml = btn.data('original-html'); if (originalHtml) { btn.html(originalHtml); btn.attr('class', btn.data('original-class')); } } // Multi-select for batch download container.on('change', '.select-item-checkbox', function () { var checked = container.find('.select-item-checkbox:checked'); var count = checked.length; if (!hasPro && count > 1) { $(this).prop('checked', false); var modal = new bootstrap.Modal(document.getElementById('upgradeModal')); modal.show(); return; } $('#selectedCount').text(count); if (count > 1) { $('#downloadSelectedBtn').removeClass('d-none'); } else { $('#downloadSelectedBtn').addClass('d-none'); } }); $('#downloadSelectedBtn').on('click', function () { var target = $(this); target.find('.spinner-border').removeClass('d-none'); target.prop('disabled', true); var selectedUrls = []; container.find('.select-item-checkbox:checked').each(function () { selectedUrls.push($(this).data('url')); }); if (selectedUrls.length === 0) { target.find('.spinner-border').addClass('d-none'); target.prop('disabled', false); return; } var batchDownloadI18n = { intro: "We detected {count} files. To keep things reliable we will download them in {n} batches of up to {size}. Each batch is saved separately as it finishes.", progress: "Batch {current} of {total}", retrying: "Batch {batch} failed, retrying in {sec}s…", failed: "Batch {batch} failed after retries. Press Resume to try again.", done_status: "All batches downloaded.", resume_prompt: "You already downloaded {done} of {total} batches for this list. Continue from there?", cancel_confirm: "Cancel the remaining batches?" }; batchDownload.show({ urls: selectedUrls, baseName: "Tikt-selected", csrfToken: "eFwJROg1D8qFrGumFliQrQy4zdT3R6BLelKVe02qFBdZ1IENpxQZAGQU27uz0X8j", goApiUrl: GO_API_URL || "", i18n: batchDownloadI18n, onAllDone: function () { target.find('.spinner-border').addClass('d-none'); target.prop('disabled', false); launchConfetti(target, 150, 2200); }, onError: function (err) { alert(err && err.message ? err.message : 'An error occurred'); target.find('.spinner-border').addClass('d-none'); target.prop('disabled', false); }, onCancel: function () { target.find('.spinner-border').addClass('d-none'); target.prop('disabled', false); } }); }); function launchConfetti($btn, amount, lifetime) { var colors = ['#FF4757', '#2ED573', '#1E90FF', '#FFA502', '#A55EEA', '#2ECC71', '#FF6B81']; var offset = $btn.offset(); var btnWidth = $btn.outerWidth(); var btnHeight = $btn.outerHeight(); for (var i = 0; i < amount; i++) { var $c = $(''); var size = 3 + Math.random() * 4; // 🎯 más pequeño: 3–7 px var dur = 0.8 + Math.random() * 0.8; // más rápido: 0.8–1.6 s var delay = Math.random() * 0.2; var color = colors[Math.floor(Math.random() * colors.length)]; var rotateStart = Math.floor(Math.random() * 360); var startLeft = offset.left + Math.random() * btnWidth; var startTop = offset.top + Math.random() * btnHeight; $c.css({ position: 'absolute', left: startLeft + 'px', top: startTop + 'px', background: color, width: size + 'px', height: (size + 2) + 'px', transform: 'rotate(' + rotateStart + 'deg)', animation: 'fall linear forwards', animationDuration: dur + 's', animationDelay: delay + 's', zIndex: 9999, pointerEvents: 'none', opacity: 0.9 }); $('body').append($c); (function (el) { setTimeout(function () { el.remove(); }, lifetime || 2000); })($c); } } function onChangeURLValue() { const inputValue = $('#url').val(); if (!inputValue) { return } const button = $('#copyPasteText'); const pasteText = button.data('paste'); const clearText = button.data('clear'); if (inputValue.trim() === '') { button.text(pasteText); } else { button.text(clearText); } } function onLoadMore() { var wrapper = $(this).closest(".job-wrapper"); container.find("#loadMoreEntries").prop("disabled", true); container.find("#loadMoreEntries").find(".spinner-border").removeClass("d-none"); var target = container.find("#form"); var formData = target.serializeArray(); var nextPageToken = wrapper.find("[name=next_page_token]").val(); formData.push({name: 'page', value: page}); formData.push({name: 'next_page_token', value: nextPageToken}); $.ajax({ url: `/api/extract/`, type: 'POST', data: formData, success: function (data) { if (data.error === true || data.success === false) { $('.m-progress').removeClass('m-progress').removeAttr('disabled'); container.find("#loadMoreEntries .spinner-border").addClass("d-none"); container.find("#loadMoreEntries").prop("disabled", false); if (data.html) { wrapper.find(".job-result").append(data.html); } return; } wrapper.find("#actionsWrapper").remove(); wrapper.find(`.job-result #postListWrapper`).append(data.html); wrapper.find(`[name=next_page_token]`).val(data.next_page_token); if (!data.next_page_token) { container.find("#loadMoreEntries").remove(); } else { container.find("#loadMoreEntries .spinner-border").addClass("d-none"); container.find("#loadMoreEntries").removeClass('m-progress').removeAttr('disabled'); } initializeLazyLoad(); page += 1; }, error: function (xhr, status, error) { container.find("#loadMoreEntries .spinner-border").addClass("d-none"); container.find("#loadMoreEntries").prop("disabled", false); try { var response = JSON.parse(xhr.responseText); if (response.html) { wrapper.find(".job-result").append(response.html); } } catch (e) { alert(error); } } }); } function onSubmit(e) { page = 1; var target = $(this); container.find("#result").html(""); container.find("#heading").html(""); e.preventDefault(); var urlInput = target.find("#url").val(); if (!isValidURL(urlInput)) { alert("ദയവായി ഒരു സാധുവായ URL നൽകുക"); return; } target.find("button").addClass("m-progress").attr('disabled', 'disabled'); // Show loader var wrapperId = 'extract-' + Date.now(); var wrapperHtml = "

" + "" + "
" + "
"; container.find("#result").append(wrapperHtml); container.find("#" + wrapperId + " .job-result").append($(loader)); $.ajax({ url: `/api/extract/`, type: 'POST', data: target.serialize(), success: function (data) { if (data.error === true || data.success === false) { $('.m-progress').removeClass('m-progress').removeAttr('disabled'); if (data.html) { container.find("#" + wrapperId + " .job-result").html(data.html); } else { container.find("#" + wrapperId + " .job-result").html( '
ഒരു അജ്ഞാത പിശക് സംഭവിച്ചു.
' ); } return; } container.find("#heading").html(data.heading); container.find("#" + wrapperId + " .job-result").html(data.html); container.find("#" + wrapperId + " [name=next_page_token]").val(data.next_page_token); if (!data.next_page_token) { container.find("#loadMoreEntries").remove(); } $('.m-progress').removeClass('m-progress').removeAttr('disabled'); initializeLazyLoad(); page += 1; }, error: function (xhr, status, error) { $('.m-progress').removeClass('m-progress').removeAttr('disabled'); try { var errorJSON = JSON.parse(xhr.responseText); // Rate limit error if (errorJSON.rate_limit || errorJSON.no_credits) { container.find("#" + wrapperId).remove(); container.find("#rateModal .exceeded-wrapper").html(errorJSON.error); container.find('#rateModal').modal('show'); if (errorJSON.until) { var rateInterval; var totalSeconds = errorJSON.until; container.find('.time-exceeded').text(utils.formatDuration(totalSeconds)); rateInterval = setInterval( function () { totalSeconds--; container.find('.time-exceeded').text(utils.formatDuration(totalSeconds)); if (totalSeconds < 0) { clearInterval(rateInterval); window.location.reload(); } }, 1000 ); } return; } // Bulk URL error if (errorJSON.bulk === false) { container.find("#" + wrapperId).remove(); container.find("#rateModal .exceeded-wrapper").html(errorJSON.error); container.find('#rateModal').modal('show'); return; } // Other error with HTML if (errorJSON.html) { container.find("#" + wrapperId + " .job-result").html(errorJSON.html); } else if (errorJSON.error) { container.find("#" + wrapperId + " .job-result").html( '
' + errorJSON.error + '
' ); } } catch (e) { container.find("#" + wrapperId + " .job-result").html( '
അഭ്യർത്ഥന പ്രോസസ്സ് ചെയ്യുമ്പോൾ ഒരു പിശക് സംഭവിച്ചു.
' ); } } }); } function isValidURL(string) { try { // Extraer solo la parte antes de los parámetros (?) let baseUrl = string.split("?")[0]; // Intentar crear un objeto URL para validar let url = new URL(baseUrl); // Asegurar que el hostname (dominio) es válido return !!(url.hostname && url.hostname.includes(".")); } catch (e) { return false; // Si la URL no es válida, devolver false } } function getResults(jobId, $wrapper, onComplete, next_page_token) { $.ajax({ url: `/api/result/`, type: 'GET', data: { job_id: jobId, nextPageToken: next_page_token, }, success: function (data) { if (data.loading) { setTimeout(function () { getResults(jobId, $wrapper, onComplete, next_page_token); }, 4000); return; } // Check if response indicates failure (even with status 200) // This happens when job completes but with errors if (data.error === true || data.success === false) { $('.m-progress').removeClass('m-progress').removeAttr('disabled'); if (data.html) { container.find(`#${jobId} .job-result`).html(data.html); } else { container.find(`#${jobId} .job-result`).html( '
ഒരു അജ്ഞാത പിശക് സംഭവിച്ചു.
' ); } if (onComplete) onComplete(); return; } container.find("#heading").html(data.heading); if (page > 1 && $wrapper) { $wrapper.find("#actionsWrapper").remove(); $wrapper.find(`.job-result #postListWrapper`).append(data.html); $wrapper.find(`[name=next_page_token]`).val(data.next_page_token); } else { container.find(`#${jobId} .job-result`).html(data.html); container.find(`#${jobId} [name=next_page_token]`).val(data.next_page_token); } if (!data.next_page_token) { container.find("#loadMoreEntries").remove(); } else { container.find("#loadMoreEntries .spinner-border").addClass("d-none"); container.find("#loadMoreEntries").removeClass('m-progress').removeAttr('disabled'); } $('.m-progress').removeClass('m-progress').removeAttr('disabled'); initializeLazyLoad(); page += 1; if (onComplete) onComplete(); }, error: function (xhr, status, error) { $('.m-progress').removeClass('m-progress').removeAttr('disabled'); try { const response = JSON.parse(xhr.responseText); if (response.html) { container.find(`#${jobId} .job-result`).html(response.html); } else { container.find(`#${jobId} .job-result`).html( '
ഒരു അജ്ഞാത പിശക് സംഭവിച്ചു.
' ); } } catch (e) { container.find(`#${jobId} .job-result`).html( '
അഭ്യർത്ഥന പ്രോസസ്സ് ചെയ്യുമ്പോൾ ഒരു പിശക് സംഭവിച്ചു.
' ); } if (onComplete) onComplete(); } }); } function initializeLazyLoad() { const lazyImages = document.querySelectorAll('img.lazyload[data-src]'); if (!('IntersectionObserver' in window)) { // Fallback simple para navegadores antiguos lazyImages.forEach(img => { img.src = img.getAttribute('data-src'); img.removeAttribute('data-src'); img.classList.remove('lazyload'); }); return; } const observer = new IntersectionObserver((entries, observer) => { entries.forEach(entry => { if (entry.isIntersecting) { const img = entry.target; if (!img.getAttribute('data-src')) return; img.src = img.getAttribute('data-src'); img.removeAttribute('data-src'); img.onload = () => { const parent = img.closest('.thumbnail-container') || img.closest('.result-image'); const loader = parent ? parent.querySelector('.loader-gif') : null; if (loader) { loader.style.display = 'none'; } }; img.classList.remove('lazyload'); observer.unobserve(img); } }); }); lazyImages.forEach(img => observer.observe(img)); // Initialize Bootstrap tooltips on newly loaded content document.querySelectorAll('[data-bs-toggle="tooltip"]').forEach(function(el) { if (!bootstrap.Tooltip.getInstance(el)) { new bootstrap.Tooltip(el); } }); } } ); }());