Jump to content
freezy

Introducing Pind: A Pinball Daemon

Recommended Posts

@Freezy, go ahead and redistribute those modules now that they've been validated. I'm happy to help!

I would think that if there is port 80 conflict on the pincab, then Pind would die on startup because it couldn't bind to the port. Regardless, isn't there an option in the setting file to change the port to something else?

Share this post


Link to post
Share on other sites

MisterB: Thanks! Port setting is the first in the config file.

Viriiguy: What browser are you using? I heard IE gives headache. Try Chrome or Firefox.

Share this post


Link to post
Share on other sites

Freezy, I believe a found a bug last night, after a GitHub pull. I was trying to download a new table and its media, and got an error about the tables.img_playfield field not existing. I manually added that field to the DB and was able to move on. Not sure if the code or the DB is incorrect, but I didn't grab the logs....

Share this post


Link to post
Share on other sites

@viriiguy: The log looks clean. You sure that's the one *after* trying to connect to? Are you connecting on the same machine or from another one?

@MisterB: Bug indeed, should be fixed now (update). I've also added better matching. If you download a table, it will check if you have it in HyperPin already and update the filename if "Add to Hyperpin" was chosen previously. How many tables do you have? It would be interesting to get a big XML from someone so I can adapt the matching algo if necessary.

Share this post


Link to post
Share on other sites

Yea, that is the log after trying to connect and yes, it is running on the same machine.

After running node create-schema I then run node app. A bunch of text comes up on the screen.. I will capture that for you, then it goes back to the cmd prompt. And each time, the site is not running when it finishes.

Share this post


Link to post
Share on other sites

That would be great. I'm specially interested in which 800 tables this are, since all cab downloads on VPF are about 600...

If I can get a high IPDB match rate on those, then the we're pretty much set, since VPF items are all linked to IPDB now.

Share this post


Link to post
Share on other sites
Yea, that is the log after trying to connect and yes, it is running on the same machine.

After running node create-schema I then run node app. A bunch of text comes up on the screen.. I will capture that for you, then it goes back to the cmd prompt. And each time, the site is not running when it finishes.

Oh yeah, that would be interesting indeed. It shouldn't go back to the command prompt.

Share this post


Link to post
Share on other sites

Here you go...


c:\Games\node-pind>node app
info: [db] SQLite storage file at c:\Games\node-pind\pind.db.
info: [hiscore] Watching .nv files at C:\Games\Visual Pinball\VPinMame_23\nvram
for new high scores...
info: UPDATE transfers SET startedAt = NULL WHERE startedAt IS NOT NULL AND fail
edAt IS NULL AND completedAt IS NULL;
Starting SocketStream 0.3.5 in development mode...
info: CREATE TABLE IF NOT EXISTS `users` (`id` INTEGER PRIMARY KEY AUTOINCREMENT
, `user` VARCHAR(255) NOT NULL UNIQUE, `pass` VARCHAR(255) NOT NULL, `authtoken`
VARCHAR(255), `name` VARCHAR(255), `email` VARCHAR(255), `admin` TINYINT(1) DEF
AULT 0, `credits` INTEGER DEFAULT 0, `settings` TEXT, `createdAt` DATETIME NOT N
ULL, `updatedAt` DATETIME NOT NULL);
error: [autoupdate] Cannot retrieve commits from master: { [Error: spawn ENOENT]
code: 'ENOENT', errno: 'ENOENT', syscall: 'spawn' }
error: [init] Error retrieving local version: Error: spawn ENOENT
info: [transfer] Kicking off download queue.
info: SELECT * FROM `transfers` WHERE startedAt IS NULL ORDER BY sort ASC;
info: CREATE TABLE IF NOT EXISTS `tables` (`id` INTEGER PRIMARY KEY AUTOINCREMEN
T, `key` VARCHAR(255) NOT NULL UNIQUE, `name` VARCHAR(255), `manufacturer` VARCH
AR(255), `year` INTEGER, `type` VARCHAR(255), `platform` VARCHAR(255), `filename
` VARCHAR(255), `hpid` VARCHAR(255), `hpenabled` TINYINT(1), `rom` VARCHAR(255),
`ref_src` INTEGER, `ipdb_no` VARCHAR(255), `ipdb_mfg` VARCHAR(255), `ipdb_rank`
INTEGER, `rating` FLOAT, `modelno` VARCHAR(255), `short` VARCHAR(255), `units`
INTEGER, `theme` VARCHAR(255), `designer` VARCHAR(255), `artist` VARCHAR(255), `
features` TEXT, `notes` TEXT, `toys` TEXT, `slogans` TEXT, `table_file` TINYINT(
1), `rom_file` TINYINT(1), `dmd_rotation` INTEGER, `controller` VARCHAR(255), `m
edia_table` TINYINT(1), `media_backglass` TINYINT(1), `media_wheel` TINYINT(1),
`media_video` TINYINT(1), `enabled` TINYINT(1), `createdAt` DATETIME NOT NULL, `
updatedAt` DATETIME NOT NULL);
info: CREATE TABLE IF NOT EXISTS `roms` (`id` INTEGER PRIMARY KEY AUTOINCREMENT,
`name` VARCHAR(255) NOT NULL UNIQUE, `mpu` VARCHAR(255), `extraBalls` INTEGER,
`gamesStarted` INTEGER, `gamesPlayed` INTEGER, `playTime` BIGINT, `runningTime`
BIGINT, `ballsPlayed` INTEGER, `scoreHistogram` TEXT, `playtimeHistogram` TEXT,
`createdAt` DATETIME NOT NULL, `updatedAt` DATETIME NOT NULL);
warn: [announce] Skipping event "statusUpdated", SocketStream unavailable.
info: [transfer] Queue is empty, returning.
info: CREATE TABLE IF NOT EXISTS `hiscores` (`id` INTEGER PRIMARY KEY AUTOINCREM
ENT, `type` TEXT, `score` BIGINT, `rank` INTEGER, `points` INTEGER, `title` VARC
HAR(255), `info` VARCHAR(255), `player` VARCHAR(255), `createdAt` DATETIME NOT N
ULL, `updatedAt` DATETIME NOT NULL, `userId` INTEGER, `tableId` INTEGER);
info: CREATE TABLE IF NOT EXISTS `transfers` (`id` INTEGER PRIMARY KEY AUTOINCRE
MENT, `title` VARCHAR(255), `filename` VARCHAR(255), `url` VARCHAR(255), `type`
TEXT, `engine` TEXT, `ref_src` INTEGER, `ref_parent` INTEGER, `postAction` TEXT,
`size` BIGINT, `startedAt` DATETIME, `completedAt` DATETIME, `failedAt` DATETIM
E, `result` TEXT, `sort` BIGINT, `createdAt` DATETIME NOT NULL, `updatedAt` DATE
TIME NOT NULL);
info: CREATE TABLE IF NOT EXISTS `vpf_files` (`id` INTEGER PRIMARY KEY AUTOINCRE
MENT, `ipdb_id` INTEGER, `category` INTEGER, `letter` VARCHAR(255), `title` VARC
HAR(255), `description` TEXT, `fileId` VARCHAR(255), `downloads` INTEGER, `views
` INTEGER, `author` VARCHAR(255), `lastUpdatedAt` DATETIME, `createdAt` DATETIME
NOT NULL, `updatedAt` DATETIME NOT NULL);
info: CREATE TABLE IF NOT EXISTS `upgrades` (`id` INTEGER PRIMARY KEY AUTOINCREM
ENT, `fromSha` VARCHAR(255), `toSha` VARCHAR(255), `status` VARCHAR(255), `repo`
VARCHAR(255), `result` TEXT, `log` TEXT, `startedAt` DATETIME, `completedAt` DA
TETIME);
info: [db] Connected to SQLite.

c:\Games\node-pind>

I wondered if it was supposed to go back to the cmd prompt or not. It didn't feel like it should......

Share this post


Link to post
Share on other sites
That would be great. I'm specially interested in which 800 tables this are, since all cab downloads on VPF are about 600...

If I can get a high IPDB match rate on those, then the we're pretty much set, since VPF items are all linked to IPDB now.

I would love to see this as well!! My collection is rather lacking at 388 VP tables :D

Share this post


Link to post
Share on other sites

I get this....

c:\Games\node-pind>git status
# On branch master
# Untracked files:
#   (use "git add <file>..." to include in what will be committed)
#
#       cd
#       dir
#       ld
#       node
#       npm-debug.log
nothing added to commit but untracked files present (use "git add" to track)

c:\Games\node-pind>

Share this post


Link to post
Share on other sites

I occasionally run into the same problem as viriiguy, where the process terminates as soon as Pind connects to SQLite. In my case, a little persistence seems to help. If I try starting the app again (sometimes 2-3 more times), eventually it won't drop back to the command prompt, and I can run the app fine.

Share this post


Link to post
Share on other sites

OK, so here is the huge XML file that I promised. But I need to give credit where it is due. The starting point for this list can be found in this thread started by 32assassin. He combined the VP table data in a couple of torrents and then when through an extensive validation process to create a master HyperSpin XML file containing all the recreations he could find - over 800 of them. Yes, this is more than can he be found on VPForums - I believe it includes older VP8 tables that came from other sites like Pinball Nirvana.

Anyway, I thought this would be a great reference for finding tables for my own nascent PinCab, so I wrote a program that converted the XML into HyperPin format, and did a bunch of IPDB lookups to add the table types (but the types are probably not 100% correct or complete). But this should be a great tool for validating the match functionality being built into Pind.

@Freezy, as I alluded to earlier, it would be great if Pind would allow a user to start with a master file such as this. He could then use the enable/disable table features to select the tables he wants, and then request a table/rom/media sync for those tables and be off and running. I think the app is really close to supporting that scenario now. However, I am still having difficulty having Pind download media for tables imported via XML. It only seems to work right for tables I download directly through Pind.

Anyway, here you go. Enjoy!

Visual Pinball.zip

Edited by MisterB

Share this post


Link to post
Share on other sites

Thanks, MisterB! One quick question: What node version do you have running? (in the console, type "node --version")

Yesterday I've noticed that I was still running Node 8 on my box, and after upgrading to 10.18, npm failed for me too. :P Will debug and update install instructions accordingly tonight.

Share this post


Link to post
Share on other sites

So, back home. After installing Node 0.10.18, I got:

C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\Microsoft.Cpp.InvalidPlatform.Targets(23,7): error MSB8007: The Platform for project 'contextify.vcxproj' is invalid. Platform='x64'. You may be seeing this message because you are trying to build a project without a solution file, and have specified a non-default Platform that doesn't exist for this project. [D:\dev\node-pind-compile\node_modules\jsdom\node_modules\contextify\build\contextify.vcxproj]

a few times. Just for fun, I've tested MisterB's binary package and it worked. Then I downloaded the Win7 SDK, ran the installer and the installation failed. Then I opened Windows' "Programs and features" and uninstalled two items:

  • Microsoft Visual C++ 2010 x64 Redistributable - 10.0.40219
  • Microsoft Visual C++ 2010 x86 Redistributable - 10.0.40219

Retried the SDK installation, and it worked. Ran npm install and it worked.

@viriiguy, are you sure the SDK installed successfully?

Share this post


Link to post
Share on other sites

Pretty sure.... I have done it all from scratch 3 times. And the first time I tried I got install failed.. Then did it again after removing the same stuff as you and it worked. But mine won't compile.

However, I will give it another shot from scratch again in an hour.

Share this post


Link to post
Share on other sites

I rolled my system back to a backup prior to any of this.. Removed EVERYTHING not absolutely mandatory for the cabinet, software wise. Uninstalled my existing Visual C stuff.. rebooted. Then did the install from scratch. Same results. I am going to dig thru the log file and see what it complained about.

I finally installed a descent editor on this box.

Share this post


Link to post
Share on other sites

Yeah I figured that if the SDK install went fine, then you'll probably get the same result. I've uploaded my node_modules for node 0.10.18 on win7x64 here.

If you could still paste the red part where it fails from npm install that would be good, so I can Google better for a solution. :)

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.


×
×
  • Create New...