[Tease Program] Tease-AI Java (1.4)

Webteases are great, but what if you're in the mood for a slightly more immersive experience? Chat about Tease AI and other offline tease software.

Moderator: 1885

ski23
Explorer At Heart
Explorer At Heart
Posts: 464
Joined: Sun Jun 11, 2017 12:53 am
Gender: Male
Sexual Orientation: Bisexual/Bi-Curious
I am a: Switch
Dom/me(s): Courtney
Sub/Slave(s): Courtney
Location: Virginia
Contact:

Re: [Tease Program] Tease-AI Java (1.0.18)

Post by ski23 »

Yanker wrote: Thu Jan 10, 2019 3:04 am Hi all,
I've just downloaded TAJ 1.0.18 & the Mischievous personality onto a Mac running Mojave. TAJ starts up fine, but I can't load the personality. File > Run Script does nothing. Start does nothing and the dropdown menu next to Start is not opening. I've put the TAJ files are in a TAJ folder within Applications. Can someone tell me where I'm going wrong, please?

Thanks,
Yanker
Did you put the Mischevious folder in the personalities folder. Also, can you post the contents of your most recent log file in the logs folder.
User avatar
Yanker
Explorer
Explorer
Posts: 32
Joined: Fri Dec 08, 2006 6:54 pm
Gender: Male
Sexual Orientation: Straight
I am a: Submissive
Location: UK

Re: [Tease Program] Tease-AI Java (1.0.18)

Post by Yanker »

ski23 wrote: Thu Jan 10, 2019 3:07 am
Did you put the Mischevious folder in the personalities folder. Also, can you post the contents of your most recent log file in the logs folder.
Thanks ski123. I had put the Mischevious folder in the personalities folder but just before I started posting logs I thought I'd try restarting my laptop. Hey presto, TAJ recognised the presence of the personality. :blush:

Yanker
Yanker
________________________________________________________________
Noun 1. yanker - someone who gives a strong sudden pull
User avatar
genome231
Explorer At Heart
Explorer At Heart
Posts: 687
Joined: Wed Nov 12, 2014 8:35 am

Re: [Tease Program] Tease-AI Java (1.0.18)

Post by genome231 »

I was wondering if I can count the number of files in a folder (pictures, I want to count how many pictures there are in a folder).

I did a search online and I can find some help, but sadly it seems a bit out my "skill range", at least I dont understand a lot of the scripts people have written.

Any help creating a function for Tease-AI java that can return me the number of files in a given directory would be a great help!

Cheers
Genome

EDIT:
Second question.
Is it possible to do a showImage and text on the same line?
I was hoping this would work though I didn't count on it:

Code: Select all

lockImages();
sendMessage("hello" + showImage(Path));
It did show the image I wanted but it also showed the image path in the chat.
Is there something I'm missing?

Cheers
Genome
Tribute to 1885 & those involved with Tease-AI.
Thank you for spending time on this awesome project! :-)
ski23
Explorer At Heart
Explorer At Heart
Posts: 464
Joined: Sun Jun 11, 2017 12:53 am
Gender: Male
Sexual Orientation: Bisexual/Bi-Curious
I am a: Switch
Dom/me(s): Courtney
Sub/Slave(s): Courtney
Location: Virginia
Contact:

Re: [Tease Program] Tease-AI Java (1.0.18)

Post by ski23 »

genome231 wrote: Tue Jan 15, 2019 11:37 am I was wondering if I can count the number of files in a folder (pictures, I want to count how many pictures there are in a folder).

I did a search online and I can find some help, but sadly it seems a bit out my "skill range", at least I dont understand a lot of the scripts people have written.

Any help creating a function for Tease-AI java that can return me the number of files in a given directory would be a great help!

Cheers
Genome

EDIT:
Second question.
Is it possible to do a showImage and text on the same line?
I was hoping this would work though I didn't count on it:

Code: Select all

lockImages();
sendMessage("hello" + showImage(Path));
It did show the image I wanted but it also showed the image path in the chat.
Is there something I'm missing?

Cheers
Genome
For your second question, just disable the delay on the message and it will work as u want:
sendMessage(“test”,0);
showImage(Path);
They will happen at nearly exactly the same time.
For your first question, here is a function from my mediautils that will give u all files in a folder:
Spoiler: show

Code: Select all

        /**
        * listFilesInFolder method that will return all files in a folder. Pass in either a path or a java file.
        **/
        function listFilesInFolder(folder,flag=false) {
            let folderFile;
            if (folder instanceof java.io.File) {
                folderFile = folder;
            }
            else if (folder.search("C:") != -1 || folder.search("Users") != -1) {
                folderFile = new java.io.File(folder);
            }
            else {
                if (flag)
                {
                    folderFile = new java.io.File(teasePath + separator + folder);
                }
                else
                {
                    folderFile = new java.io.File(personalityPath + separator + folder);
                }
            }
            if (!folderFile.exists())
            {
                folderFile = new java.io.File(teasePath + separator + folder);
                if (!folderFile.exists())
                {
                    WMessage("File does not exist " + folderFile.getPath());
                    return;
                }
            }
            if (!folderFile.isDirectory())
            {
                EMessage("File is not a directory " + folderFile.getPath());
            }
            return folderFile.listFiles();
        }
However, if you want only pictures, you should use something like this. This is from TAJ java code so u need to convert it to work in js:
Spoiler: show

Code: Select all

        File[] locFiles = directory.listFiles(new FilenameFilter() {
            @Override
            public boolean accept(File dir, String name) {
                return (name.toLowerCase().endsWith(".jpg") || name.toLowerCase().endsWith(".png") || name.toLowerCase().endsWith(".gif"));
            }
        });
User avatar
genome231
Explorer At Heart
Explorer At Heart
Posts: 687
Joined: Wed Nov 12, 2014 8:35 am

Re: [Tease Program] Tease-AI Java (1.0.18)

Post by genome231 »

ski23 wrote: Tue Jan 15, 2019 4:15 pm For your second question, just disable the delay on the message and it will work as u want:
sendMessage(“test”,0);
showImage(Path);
They will happen at nearly exactly the same time.
For your first question, here is a function from my mediautils that will give u all files in a folder:
Spoiler: show

Code: Select all

        /**
        * listFilesInFolder method that will return all files in a folder. Pass in either a path or a java file.
        **/
        function listFilesInFolder(folder,flag=false) {
            let folderFile;
            if (folder instanceof java.io.File) {
                folderFile = folder;
            }
            else if (folder.search("C:") != -1 || folder.search("Users") != -1) {
                folderFile = new java.io.File(folder);
            }
            else {
                if (flag)
                {
                    folderFile = new java.io.File(teasePath + separator + folder);
                }
                else
                {
                    folderFile = new java.io.File(personalityPath + separator + folder);
                }
            }
            if (!folderFile.exists())
            {
                folderFile = new java.io.File(teasePath + separator + folder);
                if (!folderFile.exists())
                {
                    WMessage("File does not exist " + folderFile.getPath());
                    return;
                }
            }
            if (!folderFile.isDirectory())
            {
                EMessage("File is not a directory " + folderFile.getPath());
            }
            return folderFile.listFiles();
        }
However, if you want only pictures, you should use something like this. This is from TAJ java code so u need to convert it to work in js:
Spoiler: show

Code: Select all

        File[] locFiles = directory.listFiles(new FilenameFilter() {
            @Override
            public boolean accept(File dir, String name) {
                return (name.toLowerCase().endsWith(".jpg") || name.toLowerCase().endsWith(".png") || name.toLowerCase().endsWith(".gif"));
            }
        });
Okay so I couldn't accept your solution so I tried a few things and I actually (to own surprise) found a solution:

Code: Select all

function STVocabulary() {
    showImage(Path);
    return "";
}
Now for the other issue.
Just looking at that function scares me :lol: So here's a lot of questions:
Your function seems to return all the file names is that stored in an array or?
The flag that you set to false, how does that come into play, since it will never change?

Any further explanation to the function would be very welcome! :D

Cheers
Genome
Tribute to 1885 & those involved with Tease-AI.
Thank you for spending time on this awesome project! :-)
User avatar
genome231
Explorer At Heart
Explorer At Heart
Posts: 687
Joined: Wed Nov 12, 2014 8:35 am

Re: [Tease Program] Tease-AI Java (1.0.18)

Post by genome231 »

A whole new issue

So I dived into dates and I cant for life of me make sense of it. I read this one:
https://github.com/GodDragoner/TeaseAIJ ... ate-Object

So if anyone could explaing to me (preferably using examples and really dumb it down):
How do I set a date?
How can I check if the date has passed?
What's the difference between set and add?

Code: Select all

addDay(7).setHour(0)
I'm guessing that set will override any current set date for the given variable while add increases it?

EDIT: FOUND A SOLUTION TO MY DATE ISSUES

Cheers
Genome
Tribute to 1885 & those involved with Tease-AI.
Thank you for spending time on this awesome project! :-)
ski23
Explorer At Heart
Explorer At Heart
Posts: 464
Joined: Sun Jun 11, 2017 12:53 am
Gender: Male
Sexual Orientation: Bisexual/Bi-Curious
I am a: Switch
Dom/me(s): Courtney
Sub/Slave(s): Courtney
Location: Virginia
Contact:

Re: [Tease Program] Tease-AI Java (1.0.18)

Post by ski23 »

So, the flag actually can change. I’m using something called a default variable there. Basically if you called the function and only gave it one argument instead of 2, the flag gets set to false by default. However, if you call the function with 2 arguments, as long as the second argument isn’t null, it will take it’s value instead of the value of the default (false). That flag just determines whether the path is a path within the personality or a path within the TAJ directory. Also, yes, the function does return an array. If you look at the last line, that is where the magic happens:

Code: Select all

folderFile.listFiles();
listFiles is a function on the java File object that will work if the file is a directory. It returns an array of all of the folder’s children. The second function I linked will only return jpg, png, or gif files instead of all files like the first function. It needs to be adapted a bit since it’s in java code. Unfortunately, since I’m on vacation and away from my computer, I can’t make those changes for you right now but I can give you some code when I get back if you’re still having trouble.
ilikelatex
Explorer
Explorer
Posts: 30
Joined: Sat Aug 26, 2017 4:34 pm

Re: [Tease Program] Tease-AI Java (1.0.18)

Post by ilikelatex »

Just saw you found a solution but maybe still useful.
I also had some problems with the date and figured this out.

SetDate() gives you the current time and date for use in one script, or you can save it later with setDate()
Example:

Code: Select all

function test(){
	cornerTime = setDate();			//local variable just for use in this script
	cornerTime.addMinute(1);
	CMessage("go to the corner till you hear the bell.");
	while( !cornerTime.hasPassed() ){
		// do nothing or something but sleep/wait has to stay otherwise it will get laggy ;)
		CMessage(cornerTime + " hasPassed: " + cornerTime.hasPassed());
		sleep(1);
	}
	//playAudio("bell.mp3")
	//Question are you back? ...
	setVar("lastReturnFromCorner", cornerTime); //saves the date for later use
	CMessage("Test end");
	return;
}
setDate(String variableName) saves the current time and date directly to variableName:
just a small difference in the example

Code: Select all

function test(){
	setDate("lastReturnFromCorner");
	cornerTime = getVar("lastReturnFromCorner");
	cornerTime.addMinute(1);
	...
}
setDate(String variableName, TeaseDate date) is the same like setVar() in my example.

But i also had some strange side effects. If you use the second version from my example, the setVar() at the end of the example doesn't work anymore. The Variable will only get updated in TAIJ, but the file remains the old value. Also setDate() didn't work for me there and i don't know why. Maybe someone else has an idea?

And i also wrote me a helper function like getMillisPassed() from personalityutils.js, because i also had some issues with the date format.

Example:

Code: Select all

function timeTest(){
	let tmp = getTimePassed("AV_SessionTime","auto");
	CMessage( "Our last session is " + tmp[0] + " " + tmp[1] + " ago." );
	// or
	if (tmp[1] === "minutes"){
		CMessage("We just had a session");
		//...
	}
	//or
	if( getTimePassed("AV_SessionTime")<= 60 ) {
		CMessage( "Our last session is " + getTimePassed("AV_SessionTime") + " minutes ago." );
	}
}
Function:

Code: Select all

/**
* simple helper method to calculate the time passed since the given date in seconds/minutes/hours/...
* or beginning of the session in minutes
* format = "auto" return an array with the time passed and if its seconds/minutes/hours/...
**/
function getTimePassed(timeVar = "startDate", format = "minutes") {//stdValue: startDate,minute 
	DMessage("getTimePassed: Beginning");
	if(format == "minutes"){
		let startedAt = getVariable(timeVar).getTimeInMillis();	//get time from var and convert to milliSec
		startedAt = Math.round( startedAt/1000/60 );		//convert millis to minutes
		DMessage("startedAt = " + startedAt);
		let n = Math.round( new Date().getTime()/1000/60 );		//get current time in minutes
		DMessage("n = " + n);
		DMessage("n - startedAt = " + (n - startedAt) );
		DMessage("getTimePassed: End_minute");
		return n - startedAt;
	} else if(format == "hours"){
		let startedAt = getVariable(timeVar).getTimeInMillis();
		startedAt = Math.round( startedAt/1000/60/60 );	
		let n = Math.round( new Date().getTime()/1000/60/60 );
		DMessage("getTimePassed: End_hours");		
		return n - startedAt;
	}else if(format == "seconds"){
		let startedAt = getVariable(timeVar).getTimeInMillis();
		startedAt = Math.round( startedAt/1000 );
		let n = Math.round( new Date().getTime()/1000 );
		DMessage("getTimePassed: End_seconds");
		return n - startedAt;
	}else if(format == "days"){
		let startedAt = getVariable(timeVar).getTimeInMillis();
		startedAt = Math.round( startedAt/1000/60/60/24 );
		let n = Math.round( new Date().getTime()/1000/60/60/24 );
		DMessage("getTimePassed: End_days");
		return n - startedAt;
	}else if(format == "weeks"){
		let startedAt = getVariable(timeVar).getTimeInMillis();
		startedAt = Math.round( startedAt/1000/60/60/24/7 );
		let n = Math.round( new Date().getTime()/1000/60/60/24/7 );
		DMessage("getTimePassed: End_weeks");
		return n - startedAt;
	}else if(format == "auto"){
		let startedAt = getVariable(timeVar).getTimeInMillis();
		startedAt = Math.round( startedAt/1000);
		let n = Math.round( new Date().getTime()/1000);	
		if( n - startedAt < 120 ){
			DMessage("getTimePassed: End_auto_seconds");
			return [n - startedAt,"seconds"];
		}else {
			n = Math.round(n/60);
			startedAt = Math.round( startedAt/60);
			if(n - startedAt <120){
				DMessage("getTimePassed: End_auto_minutes");
				return [n - startedAt,"minutes"];
			}else {
				n = Math.round(n/60);
				startedAt = Math.round( startedAt/60);
				if(n - startedAt <120){
					DMessage("getTimePassed: End_auto_hours");
					return [n - startedAt,"hours"];
				}else {
					n = Math.round(n/24);
					startedAt = Math.round( startedAt/24);
					if(n - startedAt <14){
						DMessage("getTimePassed: End_auto_days");
						return [n - startedAt,"days"];
					}else {
						n = Math.round(n/7);
						startedAt = Math.round( startedAt/7);
						DMessage("getTimePassed: End_auto_weeks");
						return [n - startedAt,"weeks"];
					}
				}
			}
		}
	}
	DMessage("getTimePassed: End_Error");
	return false;
}
DiDi
Explorer
Explorer
Posts: 19
Joined: Thu Oct 08, 2015 3:45 pm
Gender: Male
Sexual Orientation: Straight
I am a: Switch

Re: [Tease Program] Tease-AI Java (1.0.18)

Post by DiDi »

Hey,
just to let you know, Title says 1.0.18 but Download says 1.0.17.

Thanks for this nice piece of Software!
GodDragon
Explorer At Heart
Explorer At Heart
Posts: 790
Joined: Sun Jun 11, 2017 4:30 pm
Gender: Male
Sexual Orientation: Straight
I am a: Switch

Re: [Tease Program] Tease-AI Java (1.0.18)

Post by GodDragon »

ilikelatex wrote: Wed Jan 16, 2019 5:08 pm But i also had some strange side effects. If you use the second version from my example, the setVar() at the end of the example doesn't work anymore. The Variable will only get updated in TAIJ, but the file remains the old value. Also setDate() didn't work for me there and i don't know why. Maybe someone else has an idea?
What exactly is your issue? Can you give me an example code piece pls?
ilikelatex
Explorer
Explorer
Posts: 30
Joined: Sat Aug 26, 2017 4:34 pm

Re: [Tease Program] Tease-AI Java (1.0.18)

Post by ilikelatex »

I just noticed it in the test code.

Version 1:

Code: Select all

function test(){
	cornerTime = setDate();
	cornerTime.addMinute(1);
	CMessage("go to the corner till you hear the bell.");
	while( !cornerTime.hasPassed() ){
		// do nothing or something but sleep/wait has to stay otherwise it will get laggy ;)
		CMessage(cornerTime + " hasPassed: " + cornerTime.hasPassed());
		sleep(1);
	}
	CMessage(cornerTime + " hasPassed: " + cornerTime.hasPassed());
	//playAudio("bell.mp3")
	//Question are you back? ...
	setVar("lastReturnFromCorner", cornerTime);
	CMessage("Test end");
	return;
}
This works, at the end the time in file will have the 1 minute added.

Version 2:

Code: Select all

function test(){
	setDate("lastReturnFromCorner");
	cornerTime = getVar("lastReturnFromCorner");
	cornerTime.addMinute(1);
	CMessage("go to the corner till you hear the bell.");
	while( !cornerTime.hasPassed() ){
		// do nothing or something but sleep/wait has to stay otherwise it will get laggy ;)
		CMessage(cornerTime + " hasPassed: " + cornerTime.hasPassed());
		sleep(1);
	}
	CMessage(cornerTime + " hasPassed: " + cornerTime.hasPassed());
	//playAudio("bell.mp3")
	//Question are you back? ...
	setVar("lastReturnFromCorner", cornerTime);
	//setDate("lastReturnFromCorner", cornerTime);
	CMessage("Test end");
	return;
}
Doesn't work, the second setVar/Date will not update the file only the var in TAJ. If you restart TAJ it's loaded from the file and the added minute is missing.

It's no big deal at the moment but i don't understand why this happens.
GodDragon
Explorer At Heart
Explorer At Heart
Posts: 790
Joined: Sun Jun 11, 2017 4:30 pm
Gender: Male
Sexual Orientation: Straight
I am a: Switch

Re: [Tease Program] Tease-AI Java (1.0.18)

Post by GodDragon »

ilikelatex wrote: Sun Jan 20, 2019 1:50 pm I just noticed it in the test code.

Version 1:

Code: Select all

function test(){
	cornerTime = setDate();
	cornerTime.addMinute(1);
	CMessage("go to the corner till you hear the bell.");
	while( !cornerTime.hasPassed() ){
		// do nothing or something but sleep/wait has to stay otherwise it will get laggy ;)
		CMessage(cornerTime + " hasPassed: " + cornerTime.hasPassed());
		sleep(1);
	}
	CMessage(cornerTime + " hasPassed: " + cornerTime.hasPassed());
	//playAudio("bell.mp3")
	//Question are you back? ...
	setVar("lastReturnFromCorner", cornerTime);
	CMessage("Test end");
	return;
}
This works, at the end the time in file will have the 1 minute added.

Version 2:

Code: Select all

function test(){
	setDate("lastReturnFromCorner");
	cornerTime = getVar("lastReturnFromCorner");
	cornerTime.addMinute(1);
	CMessage("go to the corner till you hear the bell.");
	while( !cornerTime.hasPassed() ){
		// do nothing or something but sleep/wait has to stay otherwise it will get laggy ;)
		CMessage(cornerTime + " hasPassed: " + cornerTime.hasPassed());
		sleep(1);
	}
	CMessage(cornerTime + " hasPassed: " + cornerTime.hasPassed());
	//playAudio("bell.mp3")
	//Question are you back? ...
	setVar("lastReturnFromCorner", cornerTime);
	//setDate("lastReturnFromCorner", cornerTime);
	CMessage("Test end");
	return;
}
Doesn't work, the second setVar/Date will not update the file only the var in TAJ. If you restart TAJ it's loaded from the file and the added minute is missing.

It's no big deal at the moment but i don't understand why this happens.
Strange. I will take a look at it! Thanks for reporting
Zefram
Explorer
Explorer
Posts: 6
Joined: Sun Feb 03, 2019 11:27 am

Re: [Tease Program] Tease-AI Java (1.0.18)

Post by Zefram »

I noticed some odd behavior with TAJ 1.0.18. I did a clean install and installed Mischievous. Then I went into the setting and played around with the media URLs as supplied by the distribution. Then I started Mischievious. Not always was a tease picture shown but the few tagged picture I had always showed perfectly.

I tracked this down to the image files in the system/tumbler folder. Some of them did not display and the error log showed an error when resizing. I then looked closer at the content of these files (all suspiciously around 7KB) and they did contain html. E.g. tumblr_p5uirhPjJX1s0si5no1_1280.jpg was such a file:
Spoiler: show

Code: Select all

<!doctype html>
<html lang="en">
  <head>
    <meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="shortcut icon" href="https://assets.tumblr.com/pop/favicons/favicon-dfdfff4a.ico" type="image/png"/><link rel="apple-touch-icon" sizes="40x40" href="https://assets.tumblr.com/pop/manifest/icon_40-a17390a1.png"/><link rel="apple-touch-icon" sizes="80x80" href="https://assets.tumblr.com/pop/manifest/icon_80-d2a21227.png"/><link rel="apple-touch-icon" sizes="120x120" href="https://assets.tumblr.com/pop/manifest/icon_120-e7b839b0.png"/><link rel="apple-touch-icon" sizes="180x180" href="https://assets.tumblr.com/pop/manifest/icon_180-977de9c8.png"/><title>Boobs Are The Greatest !! (184k Followers): Photo</title><meta name="description" content="This blog contains EXPLICIT content and is only for people 18 and over. All the images are borrowed from the internet and public domain. All Models are presumed to be 18+. I do not hold any copyrights for any of these images. Please send me a private message if you want to take down any copyrighted material."/><meta property="og:title" content="Boobs Are The Greatest !! (184k Followers): Photo"/><meta property="og:description" content="This blog contains EXPLICIT content and is only for people 18 and over. All the images are borrowed from the internet and public domain. All Models are presumed to be 18+. I do not hold any copyrights for any of these images. Please send me a private message if you want to take down any copyrighted material."/><meta property="og:image" content="https://66.media.tumblr.com/23fb35ebf133fe159f241bd5e48e7dbf/tumblr_p5uirhPjJX1s0si5no1_1280.jpg"/><meta property="og:image:width" content="853"/><meta property="og:image:height" content="1280"/>
    <link rel="stylesheet" type="text/css" href="https://assets.tumblr.com/pop/css/main-e9f04461.css" />
<link rel="stylesheet" type="text/css" href="https://assets.tumblr.com/pop/css/image-url-page-541427af.css" />
    
  </head>
  <body id="tumblr">
    <div id="root"><div id="base-container" data-reactroot=""><div class="dnZGw"><style>body {  }</style><div class="_3Is8U"><a class="_23-Al" href="https://boobsarethegreatest.tumblr.com/post/172036365063"><figure class="_2lKUc"><div class="_1hq-D"><svg viewBox="0 0 20 17" fill="#ffffff" width="20" height="17"><path d="M5.7,10.0088757 L10.5,14.535503 C10.7,14.7366864 10.7,15.1390533 10.5,15.3402367 L9,16.8491124 C8.8,17.0502959 8.4,17.0502959 8.2,16.8491124 L0,8.90236686 L0,8.09763314 L8.2,0.150887574 C8.4,-0.050295858 8.8,-0.050295858 9,0.150887574 L10.5,1.65976331 C10.7,1.86094675 10.7,2.26331361 10.5,2.46449704 L5.7,6.99112426 L19.1,6.99112426 C19.1,6.99112426 20,7.8964497 20,7.99704142 L20,8.90236686 L19,10.0088757 L5.7,10.0088757 L5.7,10.0088757 Z"></path></svg></div><div class="_33fn5"><div class="_6FocL"><div class="_1e2yz " style="width:26px;height:26px"><div class="XLjeO _23jVi"><div class="_3LljV" style="padding-bottom:100%;background:linear-gradient(to bottom left, #001935, #A9D5BF)"><img alt="Avatar" role="img" srcSet="https://assets.tumblr.com/images/default_avatar/cone_open_16.png 16w, https://assets.tumblr.com/images/default_avatar/cone_open_24.png 24w, https://assets.tumblr.com/images/default_avatar/cone_open_30.png 30w, https://assets.tumblr.com/images/default_avatar/cone_open_40.png 40w, https://assets.tumblr.com/images/default_avatar/cone_open_48.png 48w, https://assets.tumblr.com/images/default_avatar/cone_open_64.png 64w, https://assets.tumblr.com/images/default_avatar/cone_open_96.png 96w, https://assets.tumblr.com/images/default_avatar/cone_open_128.png 128w, https://assets.tumblr.com/images/default_avatar/cone_open_512.png 512w" style="width:26px;height:26px" class="_28CuW" sizes="26px"/></div></div></div></div></div><figcaption class="_11TEo">Boobs Are The Greatest !! (184k Followers)</figcaption></figure></a><div class="_5Qd-p"><div style="height:50px;width:250px"><iframe class="_11MOp" title="Tumblr toolbar" src="https://www.tumblr.com/dashboard/iframe?tumblelogName=boobsarethegreatest&amp;variant=singleMedia" scrolling="no" frameBorder="0"></iframe></div></div></div><main class="_1oRBZ"><figure class="TkBFT" role="presentation"><img alt="Image" role="img" srcSet="https://66.media.tumblr.com/23fb35ebf133fe159f241bd5e48e7dbf/tumblr_p5uirhPjJX1s0si5no1_75sq.jpg 75w, https://66.media.tumblr.com/23fb35ebf133fe159f241bd5e48e7dbf/tumblr_p5uirhPjJX1s0si5no1_100.jpg 100w, https://66.media.tumblr.com/23fb35ebf133fe159f241bd5e48e7dbf/tumblr_p5uirhPjJX1s0si5no1_250.jpg 250w, https://66.media.tumblr.com/23fb35ebf133fe159f241bd5e48e7dbf/tumblr_p5uirhPjJX1s0si5no1_400.jpg 400w, https://66.media.tumblr.com/23fb35ebf133fe159f241bd5e48e7dbf/tumblr_p5uirhPjJX1s0si5no1_500.jpg 500w, https://66.media.tumblr.com/23fb35ebf133fe159f241bd5e48e7dbf/tumblr_p5uirhPjJX1s0si5no1_540.jpg 540w, https://66.media.tumblr.com/23fb35ebf133fe159f241bd5e48e7dbf/tumblr_p5uirhPjJX1s0si5no1_640.jpg 640w, https://66.media.tumblr.com/23fb35ebf133fe159f241bd5e48e7dbf/tumblr_p5uirhPjJX1s0si5no1_1280.jpg 853w" style="cursor:zoom-in" class="_2s-6_" sizes="(max-width: 853px) 100vw, 853px"/></figure></main></div></div></div>

    <script type="text/javascript">
      window['___INITIAL_STATE___'] = {"routeSet":"media","routeName":"image-url-page","isBlogNetwork":false,"viewport-monitor":{"height":800,"width":1280},"chunkNames":["image-url-page"],"image-url-page":{"photo":{"type":"photo","mediaUrlTemplate":"https:\u002F\u002F66.media.tumblr.com\u002F23fb35ebf133fe159f241bd5e48e7dbf\u002Ftumblr_p5uirhPjJX1s0si5no1_{id}.jpg","width":853,"height":1280,"sizes":{"100":{"id":"100","width":100,"height":150},"250":{"id":"250","width":250,"height":375},"400":{"id":"400","width":400,"height":600},"500":{"id":"500","width":500,"height":750},"540":{"id":"540","width":540,"height":810},"640":{"id":"640","width":640,"height":960},"1280":{"id":"1280","width":853,"height":1280},"75sq":{"id":"75sq","width":75,"height":75}},"colors":{"c0":"ff9f9c","c1":"0062c6"},"mediaUrlTemplates":[{"url":"https:\u002F\u002F66.media.tumblr.com\u002F23fb35ebf133fe159f241bd5e48e7dbf\u002Ftumblr_p5uirhPjJX1s0si5no1_{id}.jpg"}]},"post":{"postUrl":"https:\u002F\u002Fboobsarethegreatest.tumblr.com\u002Fpost\u002F172036365063","postId":172036365063},"blog":{"name":"boobsarethegreatest","title":"Boobs Are The Greatest !! (184k Followers)","avatar":{"type":"avatar","mediaUrlTemplates":[{"type":"image\u002Fpng","url":"https:\u002F\u002Fassets.tumblr.com\u002Fimages\u002Fdefault_avatar\u002Fcone_open_{id}.png"}],"width":512,"height":512,"sizes":{"16":{"id":"16","width":16,"height":16},"24":{"id":"24","width":24,"height":24},"30":{"id":"30","width":30,"height":30},"40":{"id":"40","width":40,"height":40},"48":{"id":"48","width":48,"height":48},"64":{"id":"64","width":64,"height":64},"96":{"id":"96","width":96,"height":96},"128":{"id":"128","width":128,"height":128},"512":{"id":"512","width":512,"height":512}}},"description":"This blog contains EXPLICIT content and is only for people 18 and over. All the images are borrowed from the internet and public domain. All Models are presumed to be 18+. I do not hold any copyrights for any of these images. Please send me a private message if you want to take down any copyrighted material.","url":"https:\u002F\u002Fboobsarethegreatest.tumblr.com\u002F"}},"apiHost":null,"apiFetchStore":{"API_TOKEN":"aIcXSOoTtqrzR8L8YEIOmBeW94c3FmbSNSWAUbxsny9KKx5VFh","csrfToken":"IfSrYRvk20vr.1549823607"},"languageData":{"code":"en_US","data":{}},"reportingToken":"1549822708018|be0270079980c0ab9cb18e8ec0ca15cd","safeMode":{"enabled":true,"canModify":false},"krakenInfo":{"basePage":"ImageUrlPage","routeSet":"media","krakenHost":"","clientDetails":{"platform":"Redpop","language":"en_US","build_version":"a52cdb4","form_factor":"Desktop","model":"","connection":"","carrier":""}},"obfuscatedFeatures":"e30="};
    </script>

    <script type="text/javascript" src="https://assets.tumblr.com/pop/js/runtime-f0a6aabf.js"></script>
<script type="text/javascript" src="https://assets.tumblr.com/pop/js/vendor-eb6d0d77.js"></script>
<script type="text/javascript" src="https://assets.tumblr.com/pop/js/main-dfe62269.js"></script>
  </body>
</html>
Maybe this is related to the recent changes in Tumblr adult policy? In any case it leads to very confusing behavior as some but not all images in system/tumblr are displaying at the moment.
ski23
Explorer At Heart
Explorer At Heart
Posts: 464
Joined: Sun Jun 11, 2017 12:53 am
Gender: Male
Sexual Orientation: Bisexual/Bi-Curious
I am a: Switch
Dom/me(s): Courtney
Sub/Slave(s): Courtney
Location: Virginia
Contact:

Re: [Tease Program] Tease-AI Java (1.0.18)

Post by ski23 »

Zefram wrote: Sun Feb 10, 2019 9:11 pm I noticed some odd behavior with TAJ 1.0.18. I did a clean install and installed Mischievous. Then I went into the setting and played around with the media URLs as supplied by the distribution. Then I started Mischievious. Not always was a tease picture shown but the few tagged picture I had always showed perfectly.

I tracked this down to the image files in the system/tumbler folder. Some of them did not display and the error log showed an error when resizing. I then looked closer at the content of these files (all suspiciously around 7KB) and they did contain html. E.g. tumblr_p5uirhPjJX1s0si5no1_1280.jpg was such a file:
Spoiler: show

Code: Select all

<!doctype html>
<html lang="en">
  <head>
    <meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="shortcut icon" href="https://assets.tumblr.com/pop/favicons/favicon-dfdfff4a.ico" type="image/png"/><link rel="apple-touch-icon" sizes="40x40" href="https://assets.tumblr.com/pop/manifest/icon_40-a17390a1.png"/><link rel="apple-touch-icon" sizes="80x80" href="https://assets.tumblr.com/pop/manifest/icon_80-d2a21227.png"/><link rel="apple-touch-icon" sizes="120x120" href="https://assets.tumblr.com/pop/manifest/icon_120-e7b839b0.png"/><link rel="apple-touch-icon" sizes="180x180" href="https://assets.tumblr.com/pop/manifest/icon_180-977de9c8.png"/><title>Boobs Are The Greatest !! (184k Followers): Photo</title><meta name="description" content="This blog contains EXPLICIT content and is only for people 18 and over. All the images are borrowed from the internet and public domain. All Models are presumed to be 18+. I do not hold any copyrights for any of these images. Please send me a private message if you want to take down any copyrighted material."/><meta property="og:title" content="Boobs Are The Greatest !! (184k Followers): Photo"/><meta property="og:description" content="This blog contains EXPLICIT content and is only for people 18 and over. All the images are borrowed from the internet and public domain. All Models are presumed to be 18+. I do not hold any copyrights for any of these images. Please send me a private message if you want to take down any copyrighted material."/><meta property="og:image" content="https://66.media.tumblr.com/23fb35ebf133fe159f241bd5e48e7dbf/tumblr_p5uirhPjJX1s0si5no1_1280.jpg"/><meta property="og:image:width" content="853"/><meta property="og:image:height" content="1280"/>
    <link rel="stylesheet" type="text/css" href="https://assets.tumblr.com/pop/css/main-e9f04461.css" />
<link rel="stylesheet" type="text/css" href="https://assets.tumblr.com/pop/css/image-url-page-541427af.css" />
    
  </head>
  <body id="tumblr">
    <div id="root"><div id="base-container" data-reactroot=""><div class="dnZGw"><style>body {  }</style><div class="_3Is8U"><a class="_23-Al" href="https://boobsarethegreatest.tumblr.com/post/172036365063"><figure class="_2lKUc"><div class="_1hq-D"><svg viewBox="0 0 20 17" fill="#ffffff" width="20" height="17"><path d="M5.7,10.0088757 L10.5,14.535503 C10.7,14.7366864 10.7,15.1390533 10.5,15.3402367 L9,16.8491124 C8.8,17.0502959 8.4,17.0502959 8.2,16.8491124 L0,8.90236686 L0,8.09763314 L8.2,0.150887574 C8.4,-0.050295858 8.8,-0.050295858 9,0.150887574 L10.5,1.65976331 C10.7,1.86094675 10.7,2.26331361 10.5,2.46449704 L5.7,6.99112426 L19.1,6.99112426 C19.1,6.99112426 20,7.8964497 20,7.99704142 L20,8.90236686 L19,10.0088757 L5.7,10.0088757 L5.7,10.0088757 Z"></path></svg></div><div class="_33fn5"><div class="_6FocL"><div class="_1e2yz " style="width:26px;height:26px"><div class="XLjeO _23jVi"><div class="_3LljV" style="padding-bottom:100%;background:linear-gradient(to bottom left, #001935, #A9D5BF)"><img alt="Avatar" role="img" srcSet="https://assets.tumblr.com/images/default_avatar/cone_open_16.png 16w, https://assets.tumblr.com/images/default_avatar/cone_open_24.png 24w, https://assets.tumblr.com/images/default_avatar/cone_open_30.png 30w, https://assets.tumblr.com/images/default_avatar/cone_open_40.png 40w, https://assets.tumblr.com/images/default_avatar/cone_open_48.png 48w, https://assets.tumblr.com/images/default_avatar/cone_open_64.png 64w, https://assets.tumblr.com/images/default_avatar/cone_open_96.png 96w, https://assets.tumblr.com/images/default_avatar/cone_open_128.png 128w, https://assets.tumblr.com/images/default_avatar/cone_open_512.png 512w" style="width:26px;height:26px" class="_28CuW" sizes="26px"/></div></div></div></div></div><figcaption class="_11TEo">Boobs Are The Greatest !! (184k Followers)</figcaption></figure></a><div class="_5Qd-p"><div style="height:50px;width:250px"><iframe class="_11MOp" title="Tumblr toolbar" src="https://www.tumblr.com/dashboard/iframe?tumblelogName=boobsarethegreatest&amp;variant=singleMedia" scrolling="no" frameBorder="0"></iframe></div></div></div><main class="_1oRBZ"><figure class="TkBFT" role="presentation"><img alt="Image" role="img" srcSet="https://66.media.tumblr.com/23fb35ebf133fe159f241bd5e48e7dbf/tumblr_p5uirhPjJX1s0si5no1_75sq.jpg 75w, https://66.media.tumblr.com/23fb35ebf133fe159f241bd5e48e7dbf/tumblr_p5uirhPjJX1s0si5no1_100.jpg 100w, https://66.media.tumblr.com/23fb35ebf133fe159f241bd5e48e7dbf/tumblr_p5uirhPjJX1s0si5no1_250.jpg 250w, https://66.media.tumblr.com/23fb35ebf133fe159f241bd5e48e7dbf/tumblr_p5uirhPjJX1s0si5no1_400.jpg 400w, https://66.media.tumblr.com/23fb35ebf133fe159f241bd5e48e7dbf/tumblr_p5uirhPjJX1s0si5no1_500.jpg 500w, https://66.media.tumblr.com/23fb35ebf133fe159f241bd5e48e7dbf/tumblr_p5uirhPjJX1s0si5no1_540.jpg 540w, https://66.media.tumblr.com/23fb35ebf133fe159f241bd5e48e7dbf/tumblr_p5uirhPjJX1s0si5no1_640.jpg 640w, https://66.media.tumblr.com/23fb35ebf133fe159f241bd5e48e7dbf/tumblr_p5uirhPjJX1s0si5no1_1280.jpg 853w" style="cursor:zoom-in" class="_2s-6_" sizes="(max-width: 853px) 100vw, 853px"/></figure></main></div></div></div>

    <script type="text/javascript">
      window['___INITIAL_STATE___'] = {"routeSet":"media","routeName":"image-url-page","isBlogNetwork":false,"viewport-monitor":{"height":800,"width":1280},"chunkNames":["image-url-page"],"image-url-page":{"photo":{"type":"photo","mediaUrlTemplate":"https:\u002F\u002F66.media.tumblr.com\u002F23fb35ebf133fe159f241bd5e48e7dbf\u002Ftumblr_p5uirhPjJX1s0si5no1_{id}.jpg","width":853,"height":1280,"sizes":{"100":{"id":"100","width":100,"height":150},"250":{"id":"250","width":250,"height":375},"400":{"id":"400","width":400,"height":600},"500":{"id":"500","width":500,"height":750},"540":{"id":"540","width":540,"height":810},"640":{"id":"640","width":640,"height":960},"1280":{"id":"1280","width":853,"height":1280},"75sq":{"id":"75sq","width":75,"height":75}},"colors":{"c0":"ff9f9c","c1":"0062c6"},"mediaUrlTemplates":[{"url":"https:\u002F\u002F66.media.tumblr.com\u002F23fb35ebf133fe159f241bd5e48e7dbf\u002Ftumblr_p5uirhPjJX1s0si5no1_{id}.jpg"}]},"post":{"postUrl":"https:\u002F\u002Fboobsarethegreatest.tumblr.com\u002Fpost\u002F172036365063","postId":172036365063},"blog":{"name":"boobsarethegreatest","title":"Boobs Are The Greatest !! (184k Followers)","avatar":{"type":"avatar","mediaUrlTemplates":[{"type":"image\u002Fpng","url":"https:\u002F\u002Fassets.tumblr.com\u002Fimages\u002Fdefault_avatar\u002Fcone_open_{id}.png"}],"width":512,"height":512,"sizes":{"16":{"id":"16","width":16,"height":16},"24":{"id":"24","width":24,"height":24},"30":{"id":"30","width":30,"height":30},"40":{"id":"40","width":40,"height":40},"48":{"id":"48","width":48,"height":48},"64":{"id":"64","width":64,"height":64},"96":{"id":"96","width":96,"height":96},"128":{"id":"128","width":128,"height":128},"512":{"id":"512","width":512,"height":512}}},"description":"This blog contains EXPLICIT content and is only for people 18 and over. All the images are borrowed from the internet and public domain. All Models are presumed to be 18+. I do not hold any copyrights for any of these images. Please send me a private message if you want to take down any copyrighted material.","url":"https:\u002F\u002Fboobsarethegreatest.tumblr.com\u002F"}},"apiHost":null,"apiFetchStore":{"API_TOKEN":"aIcXSOoTtqrzR8L8YEIOmBeW94c3FmbSNSWAUbxsny9KKx5VFh","csrfToken":"IfSrYRvk20vr.1549823607"},"languageData":{"code":"en_US","data":{}},"reportingToken":"1549822708018|be0270079980c0ab9cb18e8ec0ca15cd","safeMode":{"enabled":true,"canModify":false},"krakenInfo":{"basePage":"ImageUrlPage","routeSet":"media","krakenHost":"","clientDetails":{"platform":"Redpop","language":"en_US","build_version":"a52cdb4","form_factor":"Desktop","model":"","connection":"","carrier":""}},"obfuscatedFeatures":"e30="};
    </script>

    <script type="text/javascript" src="https://assets.tumblr.com/pop/js/runtime-f0a6aabf.js"></script>
<script type="text/javascript" src="https://assets.tumblr.com/pop/js/vendor-eb6d0d77.js"></script>
<script type="text/javascript" src="https://assets.tumblr.com/pop/js/main-dfe62269.js"></script>
  </body>
</html>
Maybe this is related to the recent changes in Tumblr adult policy? In any case it leads to very confusing behavior as some but not all images in system/tumblr are displaying at the moment.
Try renaming the tumblr folder, “Downloaded Images”.
Zefram
Explorer
Explorer
Posts: 6
Joined: Sun Feb 03, 2019 11:27 am

Re: [Tease Program] Tease-AI Java (1.0.18)

Post by Zefram »

Try renaming the tumblr folder, “Downloaded Images”.
Not sure this really helped. The Tumblr folder was recreated when the software was started and the partially broken image downloads resumed eventually. Disabling the "use for tease" flag in the settings was also not stopping the downloads. Removing the URL files resulted in an error in the log.

I finally decided to empty the URL files except for first two lines. I then put all my images into the Tumblr folder and removed the tags.txt file. When now started it seemed to work, at least there was not immediately an unexpected error in the log file. Not ideal (only try to do the same if you believe you need this and have everything backed things up) but for the time being I don't need the URL downloads working for me.

As far as I can tell there seem to be 2 cases of behavior from Tumblr.

Case 1: A redirect to the correct file e.g. with https://78.media.tumblr.com/618bdbbec06 ... o1_500.gif

Case 2: A redirect to a html page containing the file e.g. with https://78.media.tumblr.com/bc38e90db55 ... o1_500.gif
Post Reply

Who is online

Users browsing this forum: No registered users and 38 guests