User avatar
Star Shooter
240 posts
Offline
osu!np is a small application which enables you to automatically output the map you're currently playing to a text file in order for other applications to read from it (like an IRC bot for a livestream or web server.. see below for example usage).

osu!np additionally features downloading and auto-installing of maps (with or without video) using an implementation of Hexide's mirror.
As of v2.0, all Beatmaps can be Queried/Previewed/Downloaded when clicking the 'Beatmaps' button, similar in functionality to osu!direct.
As of v2.2, the Beatmaps Downloader has additional features such as: additional results filtering, downloading simultaneously, downloading map mp3's & backgrounds and playing full length mp3's within the osu!np client.
As of v2.4, fullscreen is supported again.

Be sure to check out my other projects.
    osu!db - Read data from osu!.db/collection.db/score.db (Source Included)
    osu!mp3 - Play/export songs in playlists created from your collections.

Localisation
Localisation coming in v2.5? - I need to update this section
Here's a Japanese guide to using osu!np.
You can help with localisation of osu!np here!

I haven't finished with the English locale yet as I'm re-designing the UI and some text may change/be removed.
Anyone is welcome to make changes and add new languages.
The current languages listed are ones of which are either confirmed or have potential to be added.
Currently Supporting: Image Image Image Image Image Image
Partial Support: Image Image Image Image Image Image Image Image

There will be download links here to the locales (you may also download from within osu!np), all you'll need to do is put the file in the same directory as osu!np.
You may switch locales at any time from the Config.

Download Latest [v2.4 - 22.06.14 - 776kb]: [Mediafire][Previous Versions]
Requires: .Net Framework 4If you can't run osu!np, try running .Net Framework Repair Tool
For whatever reason, Chrome may warn that the file is malicious, here's the VirusTotal analysis showing that it's clean.

Screenshot of osu!np when launched. v2.2
Image

Screenshot of Beatmaps Download v2.2
Playing MP3
Image
Downloading Multiple Beatmaps
Image

Screenshots of Output v2.1 (Little change in 2.2)
Map Data of map currently being played.
Image

Outputs to Primary File
Image

FTP Output: (Live Preview on my Userpage)
Offline: Image
Not Playing: Image
Playing: Image

---

Features
★ Display a custom message in place of the map output when you're not playing a map. (Default: "Nothing Q^Q")
★ Output updates whenever you start playing a new map or exit/finish the current map playing, you can also manually update by clicking 'Stop' then 'Start' again.
★ As of v0.5, uploading to web server by FTP is supported.
★ As of v0.6, additional features are implemented such as the ability to download and install new maps by MapsetID.
★ As of v2.0, it is now possible to download maps from a queried selection of all Beatmaps.
★ Add custom commands to the output, below are the list of commands.
☆ Note: As of v1.6, commands require {} braces around them, allowing for optional text to be grouped. Eg. {Playing: [np]} {[diff]}
☆★ General Commands
    ☆ [np] - Default command, outputs "Artist - Title".
    ☆ [dl] - Map Download Link.
    ☆ [img] - Map Image Link.
    ☆ [nl] - Creates New Line.
☆★ Map Metadata Commands
    ☆ [t] - Song Title.
    ☆ [tu] - Song Title in unicode.
    ☆ [a] - Song Artist.
    ☆ [au] - Song Artist in unicode.
    ☆ [c] - Map Creator.
    ☆ [tag] - Map Tags.
    ☆ [mid] - Map ID.
    ☆ [msid] - Mapset ID.
☆★ Map Difficulty Commands
    ☆ [diff] - Map Difficulty.
    ☆ [hpd] - HP Drain Rate.
    ☆ [cs] - Circle Size.
    ☆ [od] - Overall Difficulty.
    ☆ [ar] - Approach Rate.
    ☆ [sm] - Slider Multiplier.
    ☆ [st] - Slider Tick Rate.

Instructions
    #1: Run osu!np, click the 'Config' button and click the 'Directory' tab.
    #2: Change the Osu! directory field to wherever your Osu! root folder is located.
    #3A: Change the Primary directory field to wherever you want to save the output file.
    #3B: Optionally, set the Secondary and Previous directories too (if you want a secondary output, or a output of the previous map).
    #4A: Now click the 'Output' tab and ensure your desired outputs are checked. (Primary/Secondary/Previous)
    #4B: If you've selected to additionally use 'Secondary' output, set the secondary 'Idle'/'Output' fields to whatever you wish to display when idle/playing.
    #5: Click the 'Save' button when you're done making changes.
    #6: Change the primary output field to whatever you wish, commands as mentioned above can be used to output various information.
    #7: Change the primary idle message to whatever you want to have displayed for when you're not playing a map.
    #8: Click the 'Start' button, now whenever you're playing a map it'll update with information relevant to the map you're playing.
You can update all fields after having clicked the 'Stop' button.

Note: osu!np may hang for a couple seconds while retrieving map data.

---

Map Download (By MapID) Instructions
    #1: Click the 'Config' button and navigate to the 'Download' tab to display the Download Config.
    #2A: Toggle 'Install' depending on whether you want osu!np to auto-install maps to Osu!
    #2B: Toggle 'Video' depending on whether you want osu!np to download maps with or without their video file (if any).
    #3: Change the directory to the location you wish to save the downloaded map to. (Do not set this to your Songs directory)
    #4: Save changes and on the main osu!np window input a map ID into the 'MapID' field.
    #5A: Specify what you wish to play/download from the dropdown box (Map, MP3 (Full), Background)
    #5B: Note - Clicking the 'Play' button when 'MP3 (Full)' is not selected will play the preview version of the song.
    #6: Click the 'Download' button to begin downloading the map.
You can find the ID of a map being played by hovering over the /np output of other users in Osu!
You may also find the ID in the URL of a map in your browser. Eg. http://osu.ppy.sh/s/99283 ID is '99283'
Additionally, if you don't know the ID to a map you wish to download, you may use the below method to preview/download from a list of all Beatmaps.

Map Download (From Beatmap List) Instructions
    #1: Click the 'Config' button and navigate to the 'Download' tab to display the Download Config.
    #2A: Toggle 'Install' depending on whether you want osu!np to auto-install maps to Osu!
    #2B: Toggle 'Video' depending on whether you want osu!np to download maps with or without their video file (if any).
    #3: Change the directory to the location you wish to save the downloaded map to. (Do not set this to your Songs directory)
    #4: Save changes, on the main osu!np window toggle the "Open Beatmaps" button.
    #5A: Specify what you wish to play/download from the dropdown box (Map, MP3 (Full), Background)
    #5B: Note - Clicking the 'Play' button when 'MP3 (Full)' is not selected will play the preview version of the song.
    #6: From the below dropdown box, select what you wish to sort by and click the 'ASC/DESC' button to the right to toggle between Ascending/Descending.
    #7: Optionally input any search terms in the search field to the left of the sort dropdown.
    #8: Set the 'PerPage' input field to however many results you wish to display per page (1 - 999).
    #9: Set the 'Index' input field to wherever you wish for the list to start from (0 - 8000, 0 = Most recent beatmap).
    #10A: Click the button with the musical note icon to begin the query.
    #10B: Click the buttons with Left/Right arrows to browse through the pages.
    #11A: Select Beatmap(s) from the queried list and click either 'Play' or 'Download' to play the song or download the beatmap.
    #11B: Note - You may select multiple beatmaps to add them all to the download queue.

---

OBS Instructions
Example method of displaying the output file on stream:
    #1 In OBS, right-click within the Sources area and create a new source by clicking 'Add' > 'Text'.
    #2: Give your new source a name and click 'OK'.
    #3: Set your desired style properties for this text source.
    #4: Near the bottom, click the 'Use Text From File' radio button.
    #5: Click the 'Browse' button and navigate to the osu!np output file then click 'OK'.
Now the contents of the output file will be updated on your stream.

XSplit Instructions
Example method of displaying the output file on stream:
    #1: In XSplit, add a new source by clicking 'Add' in the bottom left of the sources panel then click 'Add title...'.
    #2: Set your desired style properties for this text source and delete the default "Title text".
    #3: Near the bottom, click the 'Remote text update' button.
    #4: Set the 'Refresh Interval' to however long you wish for XSplit to wait before updating the text.
    #5: Set the 'Remote url' to the location of the output file. Eg. 'C:\osu!np\np.txt' then click 'OK'.
Now the contents of the output file will be updated on your stream.

IRC Bot Example (for Twitch.tv and such)
Here's an example implementation of osu!np to have a Twitch.tv bot output the contents of the np.txt file when it finds !np being typed in the chat. (Using mIRC as the example IRC program)
    #1 Connect to your IRC channel using your Twitch.tv credentials.
    - Nickname/Pass: Twitch User/Pass
    - Channel: username.jtvirc.com
    - Port: 6667
    #2: Open the 'Script Editor' by pressing 'Alt+R' and switch to the 'Remote' tab.
    #3: Paste the following code and click 'OK'.
    (Change 'np.txt' to the directory that you have it output to, the above assumes it's in the mIRC install directory.)
    Code:
    on *:TEXT:!np:#: {
      msg $chan $read(np.txt)
    }
Now whenever a user types !np in your Twitch chat, you'll automatically output what you're now playing.

---

FTP Instructions
    #1: Click the 'Config' button and navigate to the 'Upload (FTP)' tab to display the FTP Config.
    #2: Change the Location field to the directory on the FTP Server you wish to upload outputs to, include trailing slash.
    (EG. "ftp://host.com/www/host.com/np/")
    #3: Change the User and Pass fields to the credentials of your FTP host.
    #4A: Select which outputs you wish to upload. (They must first be selected on the 'Output' tab in the Config)
    The 'Status' output will show whether you're 'Online' or 'Offline' depending on whether the Osu! window is open.
    #4B: Change the directories of where to locally save the outputs on the 'Directory' tab of the Config.
    #5A: Toggle the 'Group' checkbox depending on whether you wish to upload outputs individually or as a group (excluding Status).
    FTP Group - Follow the below instructions only if 'Group' checkbox is selected
    #5B: Change the 'File' field to the name of the file you wish to upload the group file as. (Default: npgroup.txt)
    #5C: Change the 'Key' field to your desired format of the Key portion of the output, more info below.
    #5D: Change the 'Val' field to your desired format of the Value portion of the output, more info below.
    Information on FTP Group:
    > Status will always output to its own file, considering your status updates at a different rate compared to the NP Outputs.
    > The 'Key' and 'Value' input fields determine the format of the output to the group file. (Where '[Key]' is 'Primary'/'Secondary'/'Previous' and '[Value]' is the output of the Key)
    > Text within double braces {{ }} in the Key field will only display before the first Key.
    > Text within double braces {{ }} in the Value field will only display after the last Value.
    > [nl] will create a new line.

    FTP Group presents various methods of implementation, like the following 2 examples~

    Example of a Key:Value .ini file where only 'Primary' and 'Previous' outputs are selected:
    File Field: npgroup.ini
    Key Field: [key]:
    Value Field: [val][nl]
    Output:
    Code:
    Primary:Value
    Previous:Value

    Example of PHP file where all three outputs are selected:
    File Field: npgroup.php
    Key Field: {{<?php[nl]}}$[key] =
    Value Field: "[val]";[nl]{{?>}}
    Output:
    Code:
    <?php
    $Primary = "Value";
    $Secondary = "Value";
    $Previous = "Value";
    ?>

FTP Example
Here's an example implementation of osu!np to have the contents of the np.txt file uploaded to a server to generate a dynamic image in PHP and displayed on your Osu! Userpage.
This implementation will only work if you have a web server with the PHP GD library enabled in your 'php.ini' file.
    #1: Follow the 'FTP Instructions' from above to enable FTP in osu!np.
    Note: This example assumes you're not using FTP Group.
    For use with FTP Group, you will have to additionally substring/replace the contents stored in '$np'.

    #2: Create a new PHP file and copy the below code and upload it to your web server. (The below example is saved as image.php in the root web directory).
    #3: Add it as an image to your userpage or wherever else you would like it, like so:
    Code:
    [img]http://host.com/image.php[/img]
You will need the font 'calibril.ttf' (replace with any font of your choice) in the same directory you upload to.
(Thanks to givenameplz for the user friendly modifications.)

Code:
<?php
//File/Image Variables.
$txtFont = 'calibril.ttf'; //Location of uploaded ttf font.
$npFile = 'np.txt' //Location and name of output file. (Change depending on whether Primary/Secondary/Previous output)
$statusFile = 'status.txt' //Location and name of online status file.
$imageWidth = 620; //Desired width of the dynamic image.
$imageHeight = 10; //Desired height of the dynamic image.
$bgColour = array(0, 0, 0, 127); //Background Colour (0 to 255: Red, Green, Blue, Alpha)
$idleString = "Nothing Q^Q" //The message you have set in osu!np, for when you're not playing a map.

//Username Text.
$userString = "Username is"; //Your username, appears before status message by default. ("Username is [Online]")
$userColour = array(128, 64, 128); //Font colour. (0 to 255: Red, Green, Blue)
$userSize = 8; //Font size.
$userAngle = 0; //Text angle.
$userX = 1; //X Position.
$userY = 8; //Y Position.

//Status/Suffix Text.
$statusOnlineString = "[Online]"; //Status message displayed when you're online.
$statusOfflineString = "[Offline]"; //Status message displayed when you're offline.
$statusOnlineColour = array(0, 180, 0); //Font colour for online. (0 to 255: Red, Green, Blue)
$statusOfflineColour = array(180, 0, 0); //Font colour for offline. (0 to 255: Red, Green, Blue)
$statusSize = 8; //Font size.
$statusAngle = 0; //Text angle.
$statusX = $userX + 46; //X Position.
$statusY = 8; //Y Position.

$suffixOnlineString = "(*^v^)/"; //Additional string that appears after status message when you're online.
$suffixOfflineString = "(Q^Q)~"; //Additional string that appears after status message when you're offline.
$suffixOnlineColour = array(218, 54, 108); //Font colour for online. (0 to 255: Red, Green, Blue)
$suffixOfflineColour = array(218, 54, 108); //Font colour for offline. (0 to 255: Red, Green, Blue)
$suffixSize = 8; //Font size.
$suffixAngle = 0; //Text angle.
$suffixX = $statusX + 36; //X Position.
$suffixY = 8; //Y Position.

//'Now Playing' Text.
$npString = "Now Playing: " //Text displayed before map title by default.
$npColour = array(218, 54, 108); //Font colour. (0 to 255: Red, Green, Blue)
$npSize = 8; //Font size.
$npAngle = 0; //Text angle.
$npX = $suffixX + 34; //X Position.
$npY = 8; //Y Position.

//Map Title Text.
$mapColour = array(188, 54, 98); //Font colour. (0 to 255: Red, Green, Blue)
$mapSize = 8; //Font size.
$mapAngle = 0; //Text angle.
$mapX = $npX + 58; //X Position.
$mapY = 8; //Y Position.

//----------------------
//Important Stuff Below
header('content-type: image/png');
$image = imagecreatetruecolor($imageWidth, $imageHeight);
imagealphablending($image, false);
$bgCol = imagecolorallocatealpha($image, $bgColour[0], $bgColour[1], $bgColour[2], $bgColour[3]);
imagefill($image, 0, 0, $bgCol);
imagesavealpha($image, true);
$txtUserCol = imagecolorallocate($image, $userColour[0], $userColour[1], $userColour[2]);
$txtNPCol = imagecolorallocate($image, $npColour[0], $npColour[1], $npColour[2]);
$txtMapCol = imagecolorallocate($image, $mapColour[0], $mapColour[1], $mapColour[2]);
$txtSufOnCol = imagecolorallocate($image, $suffixOnlineColour[0], $suffixOnlineColour[1], $suffixOnlineColour[2]);
$txtSufOffCol = imagecolorallocate($image, $suffixOfflineColour[0], $suffixOfflineColour[1], $suffixOfflineColour[2]);
$np = file_get_contents($npFile, NULL, NULL, 0, filesize($npFile));
$status = file_get_contents($statusFile, NULL, NULL, 0, filesize($statusFile));

if(strpos($status,"Online") !== false && strpos($np,$idleMessage) !== false){
    //Output if we're online but not playing anything.
    $txtStatus = $statusOnlineString;
    $txtStatusCol = imagecolorallocate($image, $statusOnlineColour[0], $statusOnlineColour[1], $statusOnlineColour[2]);
    imagettftext($image, $suffixSize, $suffixAngle, $suffixX, $suffixY, $txtSufOnCol, $txtFont, $suffixOnlineString);
} elseif(strpos($status,"Offline") !== false){
    //Output if we're offline.
    $txtStatus = $statusOfflineString;
    $txtStatusCol = imagecolorallocate($image, $statusOfflineColour[0], $statusOfflineColour[1], $statusOfflineColour[2]);
    imagettftext($image, $suffixSize, $suffixAngle, $suffixX, $suffixY, $txtSufOffCol, $txtFont, $suffixOfflineString);
} else {
    //Output if we're online playing a map!
    $txtStatus = $statusOnlineString;
    $txtStatusCol = imagecolorallocate($image, $statusOnlineColour[0], $statusOnlineColour[1], $statusOnlineColour[2]);
    imagettftext($image, $suffixSize, $suffixAngle, $suffixX, $suffixY, $txtSufOnCol, $txtFont, $suffixOnlineString);
    if(strlen($np) > 2){
        imagettftext($image, $npSize, $npAngle, $npX, $npY, $txtNPCol, $txtFont, $npString);
        imagettftext($image, $mapSize, $mapAngle, $mapX, $mapY, $txtMapCol, $txtFont, $np);
    }
    
}
//Output Online/Offline message.
imagettftext($image, $userSize, $userAngle, $userX, $userY, $userCol, $txtFont, $userString);
imagettftext($image, $statusSize, $statusAngle, $statusX, $statusY, $txtStatusCol, $txtFont, $txtStatus);

imagepng($image);
imagedestroy($image);
?>

Example Outcome: (online/offline/online + playing map)
Image

---

POST Instructions
TODO

---

Known Issues
    ★ Problem: Outputs are not updating.
    ☆ Solution: This is probably due to having "MSN Live display" option enabled (Config > Output tab) in osu!np (it's enabled by default) while having the "Integrate MSN Live.." option in osu! disabled. Simply either disable the option in osu!np if you don't wish to use the new output method, or enable the integration option in osu!
    ★ Problem: osu!np throws an 'access denied' exception when updating/starting.
    ☆ Solution: This issue should be fixed in 2.4, you'll need to manually update by downloading from the download link in this thread.
    ★ Problem: Upon starting osu!np, the icon is displayed in the taskbar but the window is not visible.
    ☆ Solution: This issue should be fixed since 2.3, but if you do experience it just do the following:
    Navigate to: C:\Users\Username\AppData\Local\Primpri\osu!np.exe_blarghh\2.4.0.0
    Open user.config in Notepad.
    Search for 'setPosition'.
    If the value is something bizarre, change it to 0, 0. Like:
    <setting name="setPosition" serializeAs="String">
    <value>0, 0</value>
    </setting>
    ★ Problem: osu!np will throw a System.InvalidOperation Exception and will not startup.
    ☆ Solution: This happens if you're using a version of osu!np prior to v2.2 or if you don't have WMP installed. (It's installed by default on Windows operating systems but you may have uninstalled it.)
    Control Panel > Programs & Features > Turn Windows features on/off > Media > Enable 'Windows Media Player' > Restart if necessary

TODO List (In order of priority)
    ★ Implement user friendly method of creating PHP image.
    ☆ Finish implementation of localization.
    ★ Implement Skin Configuration which will allow you to select skin elements from all skins you currently have installed (in Songs & Skins folder) and create a new skin from them. All elements (including sounds) will be able to be previewed from within osu!np and will be displayed in an organized listed structure.
    ☆ Display the modes & difficulties available of Beatmaps listed.

Change Log
V2.4 - 22.06.14 - 776kb
    ★ Implemented method to automatically find the osu! directory for default config.
    ☆ Fixed error when checking for map while spectating.
    ★ Fixed full screen issue by implementing alternative method of finding map, this new method is enabled by default and can be configured on the 'Output' tab of the config. (Requires the 'Integrate MSN Live Status Display' option to be enabled in osu!)
    Additionally, this new method supports finding the map playing on menu/beatmap selection which can either be output to a new file or override the idle message of an existing output.
    Note: When clicking the Start button with this new method, the output may only start updating after first beatmap selection. Additionally, previous output may not function (haven't tested).
    ☆ Fixed issue that could cause directories to not set correctly.
    ★ Updated the application icon to be less confusingly similar to the osu icon~ (Squares o3o)
    ☆ Small Hotfix: Fixed updating issue that would occur if you renamed osu!np.
V2.3 - 02.09.13 - 534kb
    ★ Added the capability of selecting multiple maps from the Beatmap list in which all selected will be added to the download queue. (Ctrl + Click to highlight individually, Shift + Click to highlight a range).
    ☆ Fixed issue with file names of downloaded beatmaps of which contain special characters.
    ★ Map checking is now compatible with maps of which contain special characters.
    ☆ Map checking now has two fallback methods if the first pattern search attempt fails.
    ★ Map checking will now attempt to intelligently decide a correct map when more than one map is returned.
    ☆ Switched to using beatmap thumbnails provided by Hexide's mirror, as Osu! thumbnails were causing delays in beatmap listing (due to current server issues).
    ★ Added the capability of disabling the listing of thumbnails. Beatmap listing is much faster when thumbnails are removed so this will be useful if you wish to query many maps per page.
    ☆ Increased the limit to the amount of beatmaps you can display per page to 999. This is only recommended when you have the above IMG checkbox disable (you can toggle it during the query and you can abort the query if it's taking too long).
    ★ Fixed issue causing duplicate output when playing full length songs.
    ☆ Fixed issue preventing the Download/Play buttons from functioning if an error occured when attempting to process the selected/specified map.
    ★ Fixed issue causing some controls to display with a classic Windows visual style.
    ☆ Definitely have fixed the issue with the inability for a new version of osu!np to delete its old self.
V2.2 - 01.09.13 - 530kb
    ★ Fixed the unicode issue again.
    ☆ Fixed issue with Beatmap list being transparent.
    ★ Added option for which output 'previous' should record from in the 'Output' tab.
    ☆ Fixed undesired behaviour of 'previous' output, will now only update when the current map playing is different.
    ★ Added option to choose whether to minimize to taskbar or tray in the 'General' tab.
    ☆ Added 'Debug' output option to the 'Output' tab, will append output log to file every 10 minutes.
    ★ Moved the osu!np Update button to the 'General' tab in 'Config'.
    ☆ Integrated the Beatmaps window into the main window, still need to toggle the 'Beatmaps' button to view it.
    ★ Downloading functionality has been re-designed, it now supports:
    ----★ Simultaneous downloads.
    ----★ Pausing/Resuming/Aborting of downloads.
    ☆ Changed "Preview" button to "Play Song" as it now supports playing full length songs instead of just preview.
    ★ Beatmaps in the list which have been played/downloaded will display in orange.
    ☆ Added dropdown box to select the media to play/download. (Beatmap / MP3 (Full) / Background)
    ----☆ Clicking the 'Download' button will: Download Beatmap / Download Full Length MP3 / Download Background
    ----☆ Clicking the 'Play Song' button will: Play Preview MP3 / Play Full Length MP3 / Play Preview MP3
    ★ 'Play Song' and 'Download' buttons will assume the desired map as the one selected in the Beatmap list unless an ID is defined in the MapID input box.
    ☆ Downloaded mp3's/backgrounds will be saved to the same directory as the directory used for downloading beatmaps to.
    ★ Added capability of stopping a song while it's playing.
    ☆ Added progress display of the song playing.
    ★ Added search functionality to the Beatmap listing to optionally limit results by search terms.
    ☆ Added option for determining what list results should be ordered by. (Date, ID, Name, Index)
    ★ Added button for determining whether to list results in ascending (ASC) or descending (DESC) order.
    ☆ Beatmap listing can now be aborted during the current page listing.
    ★ Made several changes to the UI of osu!np.
    ★ All windows can now be resized to meet user preference.
    ☆ Fixed issue causing InvalidOperation exception.
    ★ Fixed issue causing exception on beatmap search, maps with no returned image will now display a default image.
    ☆ Fixed issue with 'Default' button failing to reset to default settings.
    ★ Fixed issue preventing osu!np from removing older version after update.
    ☆ Started adding localisation to the config, this feature is not yet functional, check the first post for more details if you would like to help with localisation.
V2.1 - 25.08.13 - 600kb
    ★ Make Unicode data output the Non-Unicode variant if it returns nothing.
    ☆ Beatmaps in the download list will now display a green ID if they're already installed.
    ★ Fixed escaping issue with POST requests.
    ☆ Added threading to map checking, no more hanging~!
    ★ Made map checking even more efficient by changing the method used to find and read from maps.
    ☆ Added function for removing characters from MapName before map checking to prevent no map being returned.
    ★ Removed additional blank lines from all outputs.
    ☆ Fixed yet another issue with importing configs.
    ★ Fixed issue related to osu!test (Definitely working now >-<! Thanks to Givenameplz for gifting Supporter so I could debug this)
    ☆ Redesigned MapChecking/FTP/POST functionalities to make them more efficient.
    ★ Added a notice message which outputs whether more than one result was returned when MapChecking. This is a limitation of osu!np due to the nature of how map data is obtained. osu!np does not have access to the ID of a Mapset instantly so it's unable to determine which map is truly being played if there are two or more maps with identical Name & Difficulty. I am currently attempting to figure out a solution for this.
    ☆ Added web status handling to map requests, will now return error if the MapID does not return a preview/download.
    ★ Added functionality for removing Videos (of format avi/flv/wmp/mpg) and Images (of format jpg/png). Only images below the specified Dimensions will be removed (Default: 640x480), and images of which are corrupt for whatever reason will be skipped but the directory of that image will be outputted to the log for manual deletion.
    ☆ Fixed issue which presented an error after closing osu!np while it was still processing. osu!np will now minimize to tray before closing if it still needs to finish processing whatever it's doing.
    ★ Setting osu!np to default settings will now clean up any old settings that have been removed.
    ☆ Potentially fixed error some users may have experienced when attempting to launch osu!np v2.0
    ★ Added better error checking, with more useful output. (If you receive errors, PM them to me)
V2.0 - 19.08.13 - 587kb
    ★ Changed styles to System defaults.
    ☆ Additional windows (Config/Update/Beatmaps) will now close when osu!np is minimized.
    ★ Additional windows will now retain focus of osu!np main window.
    ☆ Fixed importing exception caused by the previous update.
    ★ Partially encoded MapName when saving downloaded MapID's.
    ☆ Encoded data sent via POST.
    ★ Potentially fixed issue causing osu!np to throw an error when closing.
    ☆ Added map song previewing functionality, right-click the map download button to preview.
    ★ Added multi-line log to replace the current log output from various functions, regular info messages will be displayed on the osu!np title instead.
    ☆ Added 'Beatmaps' list to allow for Querying/Previewing/Downloading of all ranked/approved Beatmaps.
v1.9 - 17.08.13 - 367kb
    ★ Added button to allow user to launch osu!/osu!test (left/right click).
    ☆ Made several changes to make osu!np more efficient.
    ★ Fixed issue causing update setting to be ignored.
    ☆ Addressed exception when attempt to connect to FTP fails.
    ★ Fixed issue causing FTP to overwrite primary output.
    ☆ FTP will now correctly send offline status when the osu! process is not running.
    ★ FTP now uses threading to reduce hanging, only map checking should cause hangs for now.
    ☆ Status messages of FTP will now display on osu!np title to not conflict with other status messages.
    ★ Changed FTP Upload to additionally support uploading Secondary/Previous outputs.
    ☆ Added option of whether to group outputs when uploading to FTP, more info on this in the 'FTP Grouping' section.
    ★ Implemented method for sending status and outputs to a PHP page using POST method, more info on this in the 'POST' section.
v1.8 - 14.08.13 - 347kb
    ★ Added ability to optionally downloading maps without video.
    ☆ Added recent updates display to client.
    ★ Potentially fixed implemented support for osu!test client. (Needs confirmation)
v1.7 - 14.08.13 - 351kb
    ★ Added optional auto-updating of the osu!np client. (Will soon add option to view latest changes after updating)
    ☆ Added User-Agent header for map downloads which corresponds to the current version.
v1.6 - 14.08.13 - 348kb
    ★ Improved efficiency with several features of osu!np (like querying map data, and downloading maps/osu!np updates). The UI should no longer hang for these features, still working on other improvements.
    ☆ Made changes to the command formatting, allowing for text to be grouped with a command so if the command returns nothing, the text will not output at all.
    The new format is: {Prefix[C]Suffix} (The prefix/suffix are optional text)
    Example: {np: [np]} {[diff]} Commands without optional text will still require the {} braces for now, eg: {[np]}
    ★ Support for downloading maps is back using Hexide's mirror, maps will now be correctly named and can easily be installed to Osu!
    ☆ Implemented support for osu!test client.
    ★ Fixed casting error when exporting config.
    ☆ Fixed unhandled exception when attempting to import when no config is found.
    ★ May have potentially fixed the problem which was making few users unable to start osu!np.
v1.5 - 02.08.13 - 342kb
    ★ Fixed problem that some users may have experienced when attempting to start osu!np.
    ☆ Still need to find time to get Hexide's download mirror implemented.
    ★ Added link to previous versions on the thread, only versions which work are listed but they may contain bugs.
v1.4 - 29.07.13 - 340kb
    ★ Updated main thread post with OBS/XSplit instructions.
    ☆ Changed extraction method to reduce file size (required changing from .rar to .zip so using the update button in versions previous to v1.4 will not work).
    ★ Made 'Primary Output' optional.
    ☆ Added optional 'Secondary Output'.
    ★ Added optional 'Previous Output'.
    ☆ Adjusted the config UI. (Everything looked normal on my custom theme, forgot to try it with a normal Windows theme >-<)
v1.3 - 07.06.13 - 3.45mb
    ★ Added capability of auto-applying update after downloading an updated version of osu!np.
    ☆ Added optional export/import of settings when updating.
    ★ Fixed downloading error due to file naming issue.
    ☆ Minor optimizations.
    ★ Minor UI changes.
v1.2 - 07.06.13 - 347kb
    ★ Fixed crash caused by directory fields being left blank.
v1.1 - 07.06.13 - 347kb
    ★ Moved the directory input fields to the Config window on a new 'Directory' tab.
    ☆ Removed the Prefix/Suffix input fields and replaced with one main field for all output.
    ★ Seperated output and idle input fields as a result of the above change. (Idle field becomes the output preview when the Start button is pressed).
    ☆ Added the capability of exporting/importing saved settings, so you can preserve your settings if you wish whenever osu!np is updated.
    ★ Mediafire download mirror is being a bit iffy again. >-<
v1.0 - 03.06.13 - 344kb
    ★ Increased the width of the main window by 100px to make it easier to read the Prefix/Suffix fields.
    ☆ Added many additional commands for map data.
    ★ Fixed directory error with auto installation of downloaded maps.
    ☆ Optimized some code for efficiency.
    ★ Mediafire download mirror is now working again. >-<
v0.9 - 02.06.13 - 338kb
    ★ Fixed minor bug caused by latest Osu! update.
v0.8 - 02.06.13 - 338kb
    ★ Added new [nl] command which enables you to create new lines.
    ☆ Removed case sensitivity from commands so now you can input like [DIFF] or [diff] etc.
    ★ Added description of commands in the 'Config' on the 'General' tab.
v0.7 - 01.06.13 - 336kb
    ★ Minor update to address bug with progress bar splitting.
v0.6 - 01.06.13 - 336kb
    ★ Added capability of downloading by Map ID and optionally allowing auto-installation of maps - makes it easy to install maps when you reach the Osu! download limit.
    ☆ Added capability of restoring osu!np settings to their default values.
    ★ Added update checking (requires you to manually click the Update button for now).
    ☆ Changed default output directory to application directory.
    ★ Optimized user interface, added directory browsing buttons.
    ☆ Changed 'FTP' button to 'Config', to include additional options.
v0.5 - 24.05.13 - 313kb
    ★ Added support for output to web server through FTP.
    ☆ Few optimizations, but osu!np process will hang during prior connection to FTP (only a bit of an issue if you click Start button during map play).
v0.4 - 21.05.13 - 233kb
    ★ Various minor bug fixes and optimizations, improved error handling.
    ☆ Fixed crash when Osu! process is terminated.
    ★ Added a status label to make the program more user friendly.
v0.3 - 16.05.13 - 228kb
    ★ Added capability of adding [DL] to prefix/suffix in order to output the download link of the map you're currently playing.
v0.2 - 15.05.13 - 215kb
    ★ Little UI enhancements like minimize to tray.
    ☆ Ability to change text displayed when no map is currently playing.
    ★ Variable saving implemented.
Last edited by Primula on , edited 162 times in total.
Image
User avatar
Rhythm Incarnate
834 posts
Offline
Since I have similar thingy on my PC: You can always(besides map choosing- it never changes there) get map name/diff using MSNWindow hook and enabling this in osu!
If you want I can give you a (C#)code for this.
User avatar
Star Shooter
240 posts
Offline
Added support for uploading to web server, among other smaller updates~ ^-^
Image
User avatar
Slider Savant
95 posts
Offline
Greetings!

First of, good job on your application, I like the idea of it and will keep using it.
I will just go on with some feedback and suggestions I guess, lets see.

Feeback/Suggestions:
  • Increase size of the texts, they appear really small for me.
  • Think of other fun things to include, as querying the picture of the song playing.
    (But thats just something fancy I would like, tee-hee. After all it would be something thats only interesting for the PHP part I guess.)
  • Maybe more placeholders like [Diff] and [DL] for the user to input.
  • As for the placeholders, I didn't read it anywhere in the app, but you should put a note somewhere what they do and which exist.
    (I know its written here in your post, but as you are already using a MouseOver hint, the bottom right string, you could maybe put something like this there.)

The PHP part:
I loved the idea with PHP, as I like working with it, I had to try this idea out, but I noticed a few things so...
I hope you don't mind, but I made a few changes, because on other user names (like mine), it keeps overlapping:
Image

I changed it a litte, its not perfect, but its working good so far.
Every username should be fine now, as its calculated by its pixel width with a offset:
Image

The code for the "image.php"
Code:
<?php
/* ############################################################# */
// Simply put your user name and desired font here and you are set!
$user = "givenameplz";
$txtFont = 'calibri.ttf';    // File has to be in the same folder as this file!
/* ############################################################# */
// If you want to change the output messages, please do it here.
$output_is = "is";
$outputHappy = "(*^v^)/";
$outputSad = "(Q^Q)~";
$output_nowplaying = "Now Playing:";
/* ############################################################# */
// If you have no idea whats going on, don't touch anything below~

// Adding spaces~
$output_is = " ".$output_is." ";
$outputHappy = " ".$outputHappy;
$outputSad = " ".$outputSad;
$output_nowplaying = " ".$output_nowplaying." ";

header('content-type: image/png');
$image = imagecreatetruecolor(620, 10);
imagealphablending($image, false);
$bgCol = imagecolorallocatealpha($image, 0, 0, 0, 127);
imagefill($image, 0, 0, $bgCol);
imagesavealpha($image, true);

$txtCol = imagecolorallocate($image, 128, 64, 128);
$txtNPCol = imagecolorallocate($image, 218, 54, 108);
$txtMapCol = imagecolorallocate($image, 188, 54, 98);
$txtSize = 8;
$txtAngle = 0;
$txtX = 1;
$txtY = 8;

$offset = calcMyFontPlz($user.$output_is,$txtFont,$txtSize,$txtAngle);    // Offset for USERNAME is...

$np = file_get_contents('np.txt', NULL, NULL, 0, filesize('np.txt'));
$status = file_get_contents('status.txt', NULL, NULL, 0, filesize('status.txt'));

if(strpos($status,"Online") !== false && strpos($np,"Nothing Q^Q") !== false){
    //Output if we're online but not playing anything
    $txtStatus = "[Online]";
    $txtStatusCol = imagecolorallocate($image, 0, 180, 0);
    $offset2 = calcMyFontPlz($txtStatus,$txtFont,$txtSize,$txtAngle);
    imagettftext($image, $txtSize, $txtAngle, $txtX + $offset + $offset2, $txtY, $txtCol, $txtFont, $outputHappy);
} elseif(strpos($status,"Offline") !== false){
    //Output if we're offline
    $txtStatus = "[Offline]";
    $txtStatusCol = imagecolorallocate($image, 180, 0, 0);
    $offset2 = calcMyFontPlz($txtStatus,$txtFont,$txtSize,$txtAngle);
    imagettftext($image, $txtSize, $txtAngle, $txtX + $offset + $offset2, $txtY, $txtCol, $txtFont, $outputSad);
} else {
    //Output if we're online playing a map!
    $txtStatus = "[Online]";
    $txtStatusCol = imagecolorallocate($image, 0, 172, 0);
    $offset2 = calcMyFontPlz($txtStatus,$txtFont,$txtSize,$txtAngle);
    imagettftext($image, $txtSize, $txtAngle, $txtX + $offset + $offset2, $txtY, $txtCol, $txtFont, $outputHappy);
    if(strlen($np) > 2){
        $offset2 += calcMyFontPlz($outputHappy,$txtFont,$txtSize,$txtAngle);
        imagettftext($image, $txtSize, $txtAngle, $txtX + $offset + $offset2, $txtY, $txtNPCol, $txtFont, $output_nowplaying);
        $offset2 += calcMyFontPlz($output_nowplaying,$txtFont,$txtSize,$txtAngle);
        imagettftext($image, $txtSize, $txtAngle, $txtX + $offset + $offset2, $txtY, $txtMapCol, $txtFont, $np);
    }
    
}
//Output Online/Offline message.
imagettftext($image, $txtSize, $txtAngle, $txtX, $txtY, $txtCol, $txtFont, $user.$output_is);
imagettftext($image, $txtSize, $txtAngle, $txtX + $offset, $txtY, $txtStatusCol, $txtFont, $txtStatus);

imagepng($image);
imagedestroy($image);

function calcMyFontPlz($string, $font, $size, $angle)
{
    $result = imagettfbbox($size,$angle,$font,$string);
    return $result[2];
}
?>

(If you like, you can use it or change it as much as you want. Well, I did the same to yours. Hehe)

Anyways, keep going. And thanks for developing this application.

Best wishes,

-givenameplz
Image
User avatar
Rhythm Incarnate
1,424 posts
Offline
I'm liking this program (planning to use it as a song display whenever I livestream), but I think I found a bug. When playing through a song, osu!np records the progress bar in the text once you play through 5% of the song (or when the progress bar in the window title updates), replacing the suffix tags:
Code:
Italobrothers - Stamp On The Ground [Insane] [--|------------------]

EDIT: If you remove all of the suffixes, then the difficulty appears at the 5% mark.
Image
YouTube - MyAnimeList - Steam - ask.fm
My skin ver.37 [all modes, HD] work-in-progress, 7月17日

pls support my feature request
User avatar
Star Shooter
240 posts
Offline
YayMii wrote:
I'm liking this program (planning to use it as a song display whenever I livestream), but I think I found a bug. When playing through a song, osu!np records the progress bar in the text once you play through 5% of the song (or when the progress bar in the window title updates), replacing the suffix tags:
Code:
Italobrothers - Stamp On The Ground [Insane] [--|------------------]

EDIT: If you remove all of the suffixes, then the difficulty appears at the 5% mark.


Yeah, I recently only just realized what that bar is for lol.
I might use it to optionally output your progress in the map.

Updated to v0.6 but still need to fix that issue. >-<
Edit: Updated to v0.7 to fix the issue~! ^-^

As for your suggestions, givenameplz.
Increase size of the texts, they appear really small for me.
I increased it a little, hope it's okay o.o I'd like to keep it compact considering it's an application which should just run in the background most of the time.

Think of other fun things to include, as querying the picture of the song playing.
I have a few ideas, not too sure how to get the picture of a map (is there a different ID for a mapset maybe? I guess that'd be why >-<)

Maybe more placeholders like [Diff] and [DL] for the user to input.
I'm not sure what else there is to output, (otherthan the many possibilities of map data).

As for the placeholders, I didn't read it anywhere in the app, but you should put a note somewhere what they do and which exist.
I'll add command info to the config window soon~!


--
Thank you both for the feedback~! (*^▽^)/
Image
User avatar
Slider Savant
95 posts
Offline
Update is looking good~

Primula wrote:
[...]
Think of other fun things to include, as querying the picture of the song playing.
I have a few ideas, not too sure how to get the picture of a map (is there a different ID for a mapset maybe? I guess that'd be why >-<)
[...]

The picture of the map thing was just something that came to mind as an example, looking forward to your ideas for more features!

Primula wrote:
[...]
Maybe more placeholders like [Diff] and [DL] for the user to input.
I'm not sure what else there is to output, (otherthan the many possibilities of map data).
[...]

Just another thought aswell, I myself can't think of useful things to output.

Primula wrote:
[...]
As for your suggestions, givenameplz.
Increase size of the texts, they appear really small for me.

I increased it a little, hope it's okay o.o I'd like to keep it compact considering it's an application which should just run in the background most of the time.
[...]

Looking perfect! Thanks, I like the compact design, its just that I don't want to put on my reading glasses. (As I would need to buy some in the first place!)
Thats why I asked.
Last edited by givenameplz on , edited 1 time in total.
Image
User avatar
Rhythm Incarnate
1,424 posts
Offline
Woah, you update fast. Just hours after my post, and you already fixed the issues I found!

As for the suffix data, the only thing I can think of that might be useful is having the mapper's name. Another feature that could potentially be useful would be the ability to export the data in multiple lines. Anyways, keep up the good work!
Image
YouTube - MyAnimeList - Steam - ask.fm
My skin ver.37 [all modes, HD] work-in-progress, 7月17日

pls support my feature request
User avatar
Star Shooter
240 posts
Offline
YayMii wrote:
Woah, you update fast. Just hours after my post, and you already fixed the issues I found!

As for the suffix data, the only thing I can think of that might be useful is having the mapper's name. Another feature that could potentially be useful would be the ability to export the data in multiple lines. Anyways, keep up the good work!


Updated to v0.8 with the newline feature you recommended. ^-^
Still working on commands for other map data.
Image
User avatar
Rhythm Incarnate
1,424 posts
Offline
peppy removed the progress bar from the titlebar in the newest update (since it's completely unnecessary, there is a progress bar/pie on the screen already), but I think this caused osu!np to stop working :/
Image
YouTube - MyAnimeList - Steam - ask.fm
My skin ver.37 [all modes, HD] work-in-progress, 7月17日

pls support my feature request
User avatar
Star Shooter
240 posts
Offline
Fixed it by reverting the other fix yesterday xD
Image
User avatar
Cymbal Sounder
31 posts
Offline
I was just thinking of something like this last night, great job guys.
User avatar
Star Shooter
240 posts
Offline
Updated with new commands for outputting map data (like map creator, tags, map id, difficulty variables etc + url for mapset image)
Image
User avatar
Star Shooter
240 posts
Offline
Planning on adding support for generating dynamic signatures that will update your score and such along with your currently playing map/status (the score/pp/acc and whatever would be retrieved from Osu! in intervals, status/np retrieved from osu!np (at a user defined interval) in order to reduce load on the Osu! side of things).

Would be mostly a PHP implementation and I'll probably add my server as a method to upload to which will also mean not needing your own FTP server anymore for uploading the np/status.
Image
User avatar
Rhythm Incarnate
1,424 posts
Offline
Just tried the newest version, and I have a few suggestions:
1. Since you already added the commands for songtitle and artist, why not just use one big text field instead of 3 smaller ones?
2. How about 2 different lines for when you're playing a song and when you're not? I have mine saying "Mapped by: [c]" and the "Mapped by:" part shows up even when I'm not playing a song.
3. Maybe save the configuration to a file? My settings seem to be resetting every update.
Image
YouTube - MyAnimeList - Steam - ask.fm
My skin ver.37 [all modes, HD] work-in-progress, 7月17日

pls support my feature request
Locked 170 posts jump | 1, 2, 3, 4, 5 ... 12  next

Users browsing this forum: None


Jump to: