Jump to content

[BSNova] Burning Series Nova - Das Mega-Tool für BS.TO


NeoGriever
 Share

Recommended Posts

vor 1 Stunde schrieb User51:

aber das wäre doch weniger als man für Internet-telefonie höchlädt, oder ?

Kommt auf die Download-Geschwindigkeit des Hosters an. Wenn das, wie bei Openload zum Beispiel, die Bandbreite denes Anschlusses erreicht, hast du nen ziemlich hohen Upload. Was und wie bei Telefonie so übertragen wird, hab ich mir noch nie angesehen, aber ich vermut mal, dass da nur deinem Analyseprogramm eine Menge Pakete entgehen, denn Realtime Videoübertragung müsste mindestens das 100-1000fache an Upload erzeugen, wie die paar Steuerungs-Bytes, die beim Download ausgetauscht werden.

Link to comment
Share on other sites

vor 1 Stunde schrieb Blackcrow:

@NeoGriever Ich würde es übrigens auch sehr begrüßen, wenn du die Farbe der Hervorhebung bereits gesehener Folgen dunkler oder einstellbar machen könntest. Der Unterschied ist auf meinem farbkalibrierten System auch kaum zu erkennen.

Das ist eine coole Idee aber was noch besser wäre wenn man eine Funktion baut wo man selber entscheiden kann ob man die Folge gesehen habe möchte oder nicht und nicht nur wenn man was downloaden dann automatisch als gelesen markieren

Link to comment
Share on other sites

Hallo Freunde.

 

Ich habe aktuell nur eingeschränkte Internetgeschwindigkeit.

 

Die Einstellung für die Farbe der Hervorhebung der gesehenen Episoden kommt mit dem nächsten Update. Auch werde ich eine "Mark-As-Watched" und eine "Mark-As-Unwatched"-Option hinzufügen. Die API bietet ja die Möglichkeit, eine Episode wieder als ungesehen zu markieren.

 

Werde mich morgen reinhängen und die neuen Features umsetzen.

 

PS: Ich arbeite nebenbei noch an meinem neuen Browsergame. Sowie ich es weit genug entwickelt habe für die ersten Tests, werde ich 10 Betatest-Tickets vergeben. ;) Es handelt sich bei dem Browsergame übrigens um ein Weltraum-Simulations-Browsergame ala Eve Online. Aber halt in 2D :) Falls da jemand Interesse hat, mache ich dafür ein neuen Post hier auf ;)

  • Like 4
Link to comment
Share on other sites

vor 5 Stunden schrieb NeoGriever:

Die Einstellung für die Farbe der Hervorhebung der gesehenen Episoden kommt mit dem nächsten Update. Auch werde ich eine "Mark-As-Watched" und eine "Mark-As-Unwatched"-Option hinzufügen. Die API bietet ja die Möglichkeit, eine Episode wieder als ungesehen zu markieren.

 

Werde mich morgen reinhängen und die neuen Features umsetzen.
 

Prima! :)

Zitat

PS: Ich arbeite nebenbei noch an meinem neuen Browsergame. Sowie ich es weit genug entwickelt habe für die ersten Tests, werde ich 10 Betatest-Tickets vergeben. ;) Es handelt sich bei dem Browsergame übrigens um ein Weltraum-Simulations-Browsergame ala Eve Online. Aber halt in 2D :) Falls da jemand Interesse hat, mache ich dafür ein neuen Post hier auf ;)

Klingt wie eine Neuauflage von VGA Planets, einem BBS Game zu DOS-Zeiten ... würde ich mir gerne mal ansehen. :)

Link to comment
Share on other sites

Wenn du etwa 4 Jahre darauf warten kannst, bis ich c++ gelernt habe?

 

Ich habe schon versucht, c++ zu lernen. Wenns so einfach wär, hätt ich bsnova schon längst in c++ umgesetzt. Aber 1. ist C++ keine "kostenlose" programmiersprache, wie sich herausstellte (IDE's die was taugen = teuer, Kostenlose Tutorials = für'n a..., Tutorials, die was taugen = teuer ...).

 

vb.net ist derzeit eine weit verbreitete, leicht zu lernende programmiersprache, womit auch ohne c++-leistungsumfang eine ganze menge möglich ist.

Mal davon abgesehen: BSNova besitzt Libraries, welche grundlegende Klassen von .net bereits "umschreiben", um die funktionalität zu gewährleisten. Allein der Fortschrittsbalken ist eine abstrakte Klasse des ProgressBar-Controls. Denn kein mir bekanntes Control bietet direkt die möglichkeit, Text UND fortschrittsbalken aufeinandergelagert anzuzeigen.

Etwa 40% des BSNova sind eigenst für den BSNova geschriebene Klassen und Controls. Sonst würde dieser nämlich ... gelinde gesagt ... zu popelig aussehen.

 

Allein der emmense Aufwand, welcher z. b. für die API.dll nötig wäre, diese in c++ umzusetzen ... prost mahlzeit ...

 

Wie gesagt: Würde gerne c++ nutzen. Aber ich würde viel zu lange brauchen, um genügend erfahrung zu sammeln, damit ich bsnova auf heutigem niveau neu schreiben könnte. Diesen habe ich nämlich nur entwickeln können, da ich zuvor ungefähr 50 bis 100 mehr oder minder große programme entwickelt habe, die mir und anderen die Arbeit am PC erleichtert hatten. Learning by Doing war bisher meine Devise. Angefangen hat alles mit einem Türme-Von-Hanoi-Simulator xD

  • Like 1
Link to comment
Share on other sites

Am 26.5.2016 um 21:30 schrieb Shyim:

Wie benutzt man denn diese Option GUI => Öffnen mit?

Ich habe dort VLC Media Player ausgewählt und wenn ich das Video nun öffne dann spielt er eine Datei namens unins000.exe aus.

Kann für meinen Teil sagen, dass die Wiedergabe mit dem MPC HC problemlos funktioniert, nutze allerdings auch noch die 3.0.0.0.

Link to comment
Share on other sites

Wer es noch nicht durch die automatische Update-Funktion des 3.0.1-BSNova mitbekommen hat: Es ist die 3.1.0.0 draußen!

 

Da ich zu langsames Internet habe: Klick auf meine Signatur. Da kommt ihr zu allen Versionen von BSNova. Inklusive der neuesten BSNova 3.1.0.0 B

  • Like 2
Link to comment
Share on other sites

vor 15 Stunden schrieb NeoGriever:

Ähm. Leider nein. Sharp Develop 4.4 unterstützt meines Wissens keine Compilierung von Framework-Freien c++-Anwendungen.

 

Das naheliegenste, was da in die richtung ginge: C#, was aber nichts anderes ist als .net in C++-"Optik".

Kenne VB kaum, aber in C# ist man recht frei was das GUI angeht :)

Link to comment
Share on other sites

Nicht ganz. Alles, was du mit C# machen kannst, ist auch mit vb.net möglich. Es ist lediglich eine ander darstellung des Sourcecodes, welche auf das .net framework zugreift.

 

Daher ist es mit SharpDevelop auch möglich, kompletten C#-Code via 1-Klick in VB.Net code konvertieren zu lassen. Dies geht auch in die andere Richtung. Daher ... C# == VB.Net von den Möglichkeiten her. VB.NET ist jedoch (für mich zumindest) leichter zu "lesen" als C#. Gibt ja auch noch F#, Python, Ruby und Boo. Und alle sind auf das .net Framework angewiesen und somit in dessen "Grenzen" eingeschränkt. C++ ist das z. b. nicht, da es kein Framework benötigt, um zu funktionieren. Eine C++ Konsolenanwendung, die "Hallo Welt" ausgibt, läuft sogar noch auf einer Windows 95 Neuinstallation ohne extra Frameworks. Versuch mal auf 95 nen .net framework 4 drauf zu ziehen o_O ...

 

;)

 

Ich bleib aber bei vb.net. Ich glaube nämlich nicht, dass ich c++ oder erstmal c# in angemessener Zeit lernen könnte.

Link to comment
Share on other sites

vor 5 Minuten schrieb NeoGriever:

Nicht ganz. Alles, was du mit C# machen kannst, ist auch mit vb.net möglich. Es ist lediglich eine ander darstellung des Sourcecodes, welche auf das .net framework zugreift.

Das beides .net ist, ist mir bewusst. Aber wenn du sagst, das in VB das UI nicht anders möglich ist, bietet C# da schon mehr Möglichkeiten (ändert nix daran das beides .net ist, da hast du schon recht).

Oder aber es ist eben in VB doch möglich. 

Edited by JMDF
Link to comment
Share on other sites

Es IST in .net möglich. Denn alles, was du mit c# machen kannst, kannst du auch mit vb.net machen. Vom Funktionsumfang gibt es da keine Unterschiede. Es ist lediglich eine alternative Programmiersprache. Am Ende komt das selbe raus. Denn die einen können halt besser C++ und somit C# programmieren, die anderen halt besser Visual Basic und somit VB.NET programmieren. Ein wundervolles Beispiel ist, wenn du eine .net anwendung mit dem (inzwischen kostenpflichtigen) RedGate .NET Reflector "decompilierst". Das geht aufgrund des Frameworks relativ einfach. Dort kann man nämlich auswählen, ob der decompilierte Code in C#, Boo oder VB.NET dargestellt werden soll.

 

Du kannst es gern probieren. Schreib mal etwas, was ein Control vollständig "ändert". Also Verhalten, Optik und so weiter. Und dann suche nach der Code-Convertierungs-Funktion von SharpDevelop. Damit kannst du das ganze einfach in vb.net bzw. c# "umwandeln" ;)

Link to comment
Share on other sites

Wenn du vielleicht doch mal auf die kommen solltes, abseits was von .Net zu probieren gebe ich dir mal ein Beispiel wie das mit der API in QT aussehen könnte.

#ifndef BS_API_H
#define BS_API_H

#include <QObject>
#include <QNetworkAccessManager>
#include <QNetworkRequest>
#include <QNetworkReply>
#include <QEventLoop>
#include <QMessageAuthenticationCode>
#include <QUrlQuery>
#include <QJsonDocument>
#include <QJsonObject>
#include <QJsonArray>
#include <QThread>
#include <QDebug>
#include <QDateTime>

class bs_api : public QObject
{
    Q_OBJECT
public:
    explicit bs_api(QObject *parent = 0);
    virtual ~bs_api();

    QString getData(QString url, QUrlQuery send);
    QString base64_encode(QString string);

    QJsonDocument get_series();
    QJsonDocument get_series_genre();
    QJsonDocument get_episode(QString id,QString season,QString user_session);
    QJsonDocument get_episode_info(QString id,QString season,QString episode,QString user_session);
    QJsonDocument get_link(QString linkid,QString user_session);
    QJsonDocument set_unwatch(QString episodeid,QString user_session);

    QJsonDocument get_favorites(QString user_session);
    QJsonDocument set_favorites(QString ids,QString user_session);

    QJsonDocument get_user_session(QString user,QString pass);

public slots:
    void load_finished(QNetworkReply* reply);
private:
    QNetworkAccessManager *manager;
    QNetworkReply *reply;
    QString json_data;
};

#endif // BS_API_H

---------------------------------------------------

#include "bs_api.h"

bs_api::bs_api(QObject *parent) :
    QObject(parent)
{
    manager = new QNetworkAccessManager;
}

bs_api::~bs_api()
{
    manager->deleteLater();
}

QString bs_api::base64_encode(QString string){
    QByteArray ba;
    ba.append(string);
    return ba.toBase64();
}

QString bs_api::getData(QString url, QUrlQuery send)
{
    QString host = "https://bs.to/api";

    qint64 utime(QDateTime::currentMSecsSinceEpoch());
    utime = utime / 1000;

    QString public_key = "***";
    QByteArray secret_key = "***";
    QString msg = QString::number(utime) + "/" + url;
    QByteArray message = msg.toUtf8();
    QMessageAuthenticationCode code(QCryptographicHash::Sha256);
    code.setKey(secret_key);
    code.addData(message);
    QString hmac = code.result().toHex();
    QString full = "{\"public_key\": \"" + public_key + "\", \"hmac\": \"" + hmac + "\", \"timestamp\": \"" + QString::number(utime) + "\"}";

    QString token1 = base64_encode(full);

    QByteArray array = token1.toLocal8Bit();
    char* token = array.data();

    QUrl qurl(host + "/" + url);
    QEventLoop loop;

    QNetworkRequest request;
    request.setUrl(qurl);
    request.setRawHeader( "User-Agent" , "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-GB; rv:1.9.0.3) Gecko/2008092417 Firefox/3.0.3" );
    request.setRawHeader( "BS-Token" , token );
    request.setHeader(QNetworkRequest::ContentTypeHeader, "application/x-www-form-urlencoded");

    reply = manager->post(request,send.toString(QUrl::FullyEncoded).toUtf8());

    connect(reply, SIGNAL(finished()), &loop, SLOT(quit()));
    connect(manager, SIGNAL(finished(QNetworkReply*)),this, SLOT(load_finished(QNetworkReply*)));
    loop.exec();
    QThread::msleep(500);
    return json_data;
}

void bs_api::load_finished(QNetworkReply *reply)
{
    if (reply->error() == QNetworkReply::NoError)
    {
        json_data = reply->readAll();
        qDebug() << "### Data read";
    }
    else
    {
        json_data = "Error";
        qDebug() << "### Error";
    }
}

QJsonDocument bs_api::get_series(){

    QUrlQuery postData;
    QString data = getData("series",postData);
    data = "{\"root\":" + data + "}";
    QJsonDocument jdoc = QJsonDocument::fromJson(data.toUtf8());

    return jdoc;
}

QJsonDocument bs_api::get_series_genre(){

    QUrlQuery postData;
    QString data = getData("series:genre",postData);
    QJsonDocument jdoc = QJsonDocument::fromJson(data.toUtf8());

    return jdoc;
}

QJsonDocument bs_api::get_episode(QString id,QString season,QString user_session){...}
QJsonDocument bs_api::get_episode_info(QString id,QString season,QString episode,QString user_session){...}
QJsonDocument bs_api::get_link(QString linkid,QString user_session){...}
QJsonDocument bs_api::set_unwatch(QString episodeid,QString user_session){...}
QJsonDocument bs_api::get_favorites(QString user_session){...}
QJsonDocument bs_api::set_favorites(QString ids,QString user_session){...}
QJsonDocument bs_api::get_user_session(QString user,QString pass){

    QUrlQuery postData;
    postData.addQueryItem("login[user]",user);
    postData.addQueryItem("login[pass]",pass);
    QString url = "login";
    QString data = getData(url,postData);
    QJsonDocument jdoc = QJsonDocument::fromJson(data.toUtf8());

    return jdoc;
}

Komplizierter als in .Net ist es auf jeden Fall nicht. Mit Java Swing wäre es wahrscheinlich genau so einfach. Vorteil ist natürlich Cross-Plattform inkl. Android.

Link to comment
Share on other sites

Man kann in VB genauso wie in C# und C++ auf ALLE Windows APIs zugreigen, also auch auf GDI, womit sich sämtliche .NET Controls über die Handles beliebig manipulieren lassen. Ist dann halt etwas weniger komfortabel, als über Klasseneigenschaften zuzugreifen, sozusagen eine Ebene tiefer am tatsächlichen Geschehen, und damit natürlich viel flexibler, als mit vorgegebenen Eigenschaften und Methoden zu hantieren.

Link to comment
Share on other sites

  • Fox locked this topic
Guest
This topic is now closed to further replies.
 Share

×
×
  • Create New...