GeovanniMCh / ACO_WUP_DOWNLOADER

9 stars 10 forks source link

Please do not remove credits to original developers. #1

Closed dojafoja closed 5 years ago

dojafoja commented 6 years ago

In the world of free and open source software. It is considered disrespectful to remove the names of the original developers when modifying their work for redistribution under a different name. You can't just replace the icon and logo, translate English strings to Spanish and call it your own work. You took all credit away from me for Funkii-UI and the Funkiiu devs and gave all credits to you and your team. I'm totally fine with you modifying my work but please add credits in the Readme and in the source for the developers who's work you've taken. Thank you

GeovanniMCh commented 5 years ago

I feel embarrassed and embarrassed that we have to shorten it is not because of me it is because of them I pay for my thing a mediafire server that they recommend us so legal

dojafoja commented 5 years ago

Is the new revision working ok now? It should open a internet browser when download is clicked for injects.

GeovanniMCh commented 5 years ago

My colleagues say that the download works well with renvo to the browser but that if you put a proper name of the game does not work only with game 1 and so, they also ask if it will be possible to put categories to make it easier to identify them as nes SNES GBA n64 ds game cube Wii and Wiiu

but that is easier that direct download method was more professional but entering games was complicated

dojafoja commented 5 years ago

That's not true it does not need to be "Game1", "Game 2", etc. I only used those as examples. It should work with any name you want. Make sure you do not run the program from the IDLE editor. Only run the program by double clicking the filee gui.py. Running from the editor may not support certain Spanish encodings.

Please send me a copy of the customsources.json file that is not working for you. I will see why they are not showing up. It should accept any name for the game.

GeovanniMCh commented 5 years ago

customsources.json.zip If this works, it's my friends who were sure they ate it,

dojafoja commented 5 years ago

The file you sent me is corrupted. When trying to extract the .zip archive I received this error: " C:\Users\Owner\Downloads\customsources.zip: The archive is either in unknown format or damaged"

dojafoja commented 5 years ago

I'm almost positive it is some kind of encoding issue. Unicode is tough to deal with in programming. Unicode is the one thing that I've had the most problems with. There are several Unicode encodings and none of them support every single character set. It really is tough sometimes. I really think that is the issue why they arent showing up. I am using utf-8 encoding which supports most character sets but not every single one.

Once you send me the file again I can test my theory.

GeovanniMCh commented 5 years ago

it's not a zip I put it.zip to send rename it removes .zip

dojafoja commented 5 years ago

Oops! I didn't realize! Sorry about that.

dojafoja commented 5 years ago

OK I just pushed some new files. I think I fixed all the Unicode errors this time. You must now provide a "region" and "category" for the entries in the customsources.json file. This is so that they can be filtered by the program.

I also added a new method for doing the themes. There is now a file called themes.py that defines the themes. These theme entries will automatically show up in the program.

dojafoja commented 5 years ago

There is still a ton of unused code in the source now and I will need to clean it up quite a bit. But I think I'm close to being finished with everything.

dojafoja commented 5 years ago

When you are editing files such as customsources.json, I highly recommend that you use a good editor instead of Notepad. An editor such as Sublime Text. The file will look much cleaner and will be easier to understand in an editor like this.

GeovanniMCh commented 5 years ago

my dear friend is that your work is something amazing, it was very nice the pile of topics that you added and everything when I grow up I want to be like you: p

dojafoja commented 5 years ago

Thank you! Do the world a favor and when you "grow up", be BETTER than me! Always do your best to help other people and eventually good things will come your way. The truth is that your team had some excellent ideas for the program and I enjoyed bringing your ideas to life.

I will clean up the source code in the next day or two and then call this project done. In order for this program to update from your Github, there are only a couple of steps to do.

  1. Upload the project to your Github
  2. Make any changes you would like to the project files
  3. Open gui.py and increment the __VERSION__ variable to a higher revision than the current one.
  4. Push your files to Github
  5. Visit your project on Github and click on "releases". Then click on " Draft new release".
  6. Name your release using this exact format: v1.0.1 or v2.1.8. Basically it need to look exactly like vx.x.x
  7. That is all you need to do. The program will see the update and notify you when it opens.
GeovanniMCh commented 5 years ago

thank you very much, really friend, we are immediately grateful, we have more ideas for the project but maybe later I will communicate them and you can help us

GeovanniMCh commented 5 years ago

my friend asks me one of the team that if it is possible to mark the game and click it is sent to the browser to load the shortener, but it is possible that the link was captured without shortener then and downloaded in the same gui? As JDownloader does, it is nothing more than whether it is possible or not, because at the beginning the games were downloaded with a progress bar and everything

GeovanniMCh commented 5 years ago

if it is possible that when clicking on the game there will be the browser after the advertisement appears, capture the link and download it just as jdownloader does ...

GeovanniMCh commented 5 years ago

Bro there is some way to update customsources.json to add more games and that without updating the gui as the tickets are downloaded

dojafoja commented 5 years ago

I've spent the last 5 hours attempting and trying to do this and inspecting the HTML. It was also one of the first things that I tried. As far as I can see, the actual link is never exposed client-side. The download button sends identifying information about the user to the server via JavaScript. The link is resolved server-side and returned back to the function that requested it AFTER it is clicked. It's still never exposed because of their implementation. Their entire system is designed to prevent automatic downloads. I don't know how Jdownloader does it to be honest. My guess is that it is an intelligent design that traverses through the html and interacts with the JavaScript and maybe takes a Man In The Middle approach. Im not sure to be honest but its definitely beyond my abilities.

GeovanniMCh commented 5 years ago

quiet friend just was question but thanks for trying

GeovanniMCh commented 5 years ago

thank you very much for making all our follies come true

dojafoja commented 5 years ago

Ok I think I understand your question but I'm not sure. Are you asking for a way to download the customsources.json from inside the gui? In other words, you want the customsources.json to be downloaded in the same way that titlekeys.json is downloaded. A way to keep the list of Injects up to date without releasing a new version of the gui every time. This wouldn't be hard to do I suppose, I could just download from the master-branch and only extract customsources.json from the archive. I will implement it and report back very soon.

dojafoja commented 5 years ago

I just found a bug that could cause the wrong inject to be downloaded. If the user uses arrow keys to select instead of clicking, it could grab the wrong url. It will be fixed along with the customsources that I'm going to do.

GeovanniMCh commented 5 years ago

perfect Bro we do not realize that we tried clicking, another question you think it is possible at some point to enable even an icon of each game to choose as it was displayed in Wiiu USB helper I know that Python is simpler but not less powerful I know you can do many things with it, I read that it is used a lot in large companies to do their jobs

dojafoja commented 5 years ago

The problem isn't really with Python. The problem is more with the tkinter GUI toolkit. There are other toolkits that can probably do something like that much better than tkinter, such as PyQt or maybe wxPython. It would require some serious tricks to make tkinter display a scrolled list of images that can be selected and managed with callbacks. It may be possible but it would be rather difficult and may not look as pretty as you would like it too.

I am still going to add the feature to update the customsources.json file from within the GUI, I just haven't gotten around to it yet but hopefully very soon.

I did write a small tool that will help you to add, remove, and modify entries in the customsources.json file. It's very easy to use and provides a very clean and easy to read json file. Just download this file and put it in the same directory as your customsources.json file. Run this program and you will see a nice, easy to read view of everything contained in customsources.json. You can add, remove, or modify as much as you want. Just remember to click the Save button when you are done or the changes won't be saved.

Something you should remember when naming the entries: Duplicate names are not allowed. This is to avoid confusing different regions of the same game. It's wise to stick with the naming convention that you are using now. Basically, it's wise to include the category and region in the name.

GeovanniMCh commented 5 years ago

thanks Bro we are connected I was going to ask you for a tool to add games more comfortably and you went ahead, and because of the icons it was just a question. will continue to investigate more thoroughly about features that can be enabled in tkinter thanks for being so attentive with this project, practically super you improved your gui

dojafoja commented 5 years ago

I enjoy being challenged, it inspires me haha! I wanted to point something out to you that might not be very clear about using manage-sources program. Pay attention to the Selected item in the bottom left corner. An item doesn't need to be highlighted to be the Selected item. So for example if you click to remove selected, you will delete the Selected item. Even if it is not highlighted, because it is still the Selected item. I hope this makes sense.

dojafoja commented 5 years ago

This happens when you double click inside of an entry box such as the Name box. The program switches focus and nothing will be highlighted in the selection. But there will still be a selected item even though nothing is highlighted

dojafoja commented 5 years ago

Never mind what I just said. I just found a way so the selection box will never lose it's highlight. Use this version instead to prevent accidents: http://www.mediafire.com/file/ohio568bkn71e38/manage-sources.pyw/file

GeovanniMCh commented 5 years ago

already thoroughly tested the manager of the links works perfect thank you very much the person in charge of putting the games thank you very much

GeovanniMCh commented 5 years ago

https://pypi.org/project/pyshorteners/

dojafoja commented 5 years ago

The shortener that you use is NOT a redirection type of shortener. I tried several python libraries as well as every online service I could find. NONE of them can resolve the download link because it's not the kind of shortener that you might thinking of. It's a short URL that goes to an ad supported landing page. That landing page has a button that WHEN CLICKED runs a JavaScript funtion to get the actual link from their server. It sends identifying information about the user so that the click is counted towards you getting paid. It tracks how many times each IP address clicks the button, etc. Otherwise it would be easy to write a script to simply resolve the link and download the file thousands of times and get paid for it each time. Their service is designed to prevent this and NO simple unshorten tool will do the job. Jdownloader does NOT unshorten your URL, it is basically tricking their server into resolving the link by manipulating the fact that it uses JavaScript to request it. I unfortunately do not know how to trick their servers into giving it to me. It's very complex what Jdownloader is doing. Way beyond what I know. You are confusing what those unshorten tools are capable of. They simply resolve any redirection contained in the Header information. Ad supported "shorteners" are different. They are just pages with ads that have buttons to resolve the link through the server. Even if you found a way to download without clicking on that button, I almost guarantee that it wouldn't count towards you getting paid. If you want the files to be downloaded inside the GUI, you need to provide direct download links. That's all there is to it.

dojafoja commented 5 years ago

Here is the JavaScript for the request:

` var gethash = location.href.split('#'); var gethashvalue = gethash[1]; if (gethashvalue == "" || gethashvalue === undefined) { var gethashvaluelast = ""; } else { var gethashvaluelast = gethashvalue; }

$(document).ready(function (e) {
    $('iframe.fly_fram').height($(document).height() - $('div.fly_head').height() - ($('div.fly_head_bottom').height() * 2));
    IFrameLoaded();
});

function IFrameLoaded() {
    var count = 6;
    var clicked_count = 0;
    var timer = function () {
        count = count - 1;
        if (count <= 0) {
            clearInterval(counter);
            var skip_ad = $('<div class="skip_btt"><a id="skip_btt" href="#' + gethashvaluelast + '">SKIP AD</a></div>');
            $('div.fly_head span#redirectin').parent().css('margin', '6px').html(skip_ad);
            var start_button = new Date().getTime();
            skip_ad.click(function (e) {
                if (clicked_count === 0) {
                    var tsts = new Date().getTime();
                    var po = e.pageX + ',' + e.pageY;
                    var posX = $(this).offset().left;
                    var posY = $(this).offset().top;
                    var pos = (e.pageX - posX)+ ',' + (e.pageY - posY);
                    var tsta_ = tsts - start_button;
                    var time=po+':'+pos+':'+tsta_;

                    clicked_count = clicked_count +1;
                    $.post('http://bc.vc/fly/ajax.php?wds=9dbc2f80835a5f180022a0b280fea6ac&time=' + time, {
                            xdf: {
                                afg: tZ,
                                bfg: cW,
                                cfg: cH,
                                jki: 'gKAdtO9zjHe6duRhlj-_FjNZYNanQ-82-_wBKBvcmbMYHwtBtFeOLKLlWLTrkvT_xk1Q-SObOxxyvKf7E11oRa96lGGZIVkkX5qVZlNpOUDEtAiYDd8j52AL98irfIs-20Q62cDPZGida1Lfa4T-R7xsfMLZdyh_rdCrKrseqKn4SOqrAayKax3s1Tn-IhXVQyrOzJ8iIFbVdT8_QPWzqkYKAI9Z6KAdjwsTR3bJHaa2670PfrjD94pmq8NN1nlsroevSSHtfp5FmiuJyqgtAmWP3Qxrm8rObUsITnyfMjk',
                                dfg: sW,
                                efg: sH
                            },
                            ojk: 'jfhg'
                        },
                        function (rr) {
                            var jj = eval('(' + rr + ')');
                            if (jj.message) {
                                if (gethashvaluelast !== "") {
                                    top.location.href = jj.message.url + '#' + gethashvaluelast;
                                } else {
                                    top.location.href = jj.message.url;
                                }
                            }
                        }
                    );
                }

                skip_ad.html("Loading Page...");
            });

        } else {
            $('span#redirectin').text(count);
        }
    };

    var counter = setInterval(timer, 1000);
}`
GeovanniMCh commented 5 years ago

good friend hehe just wanted to help haha ​​I thought the information was good: v but if you say that you can not can not but as it is already a success we hope the final version to release it

dojafoja commented 5 years ago

I'm trying to decide the best approach for downloading the customsources.json automatically in the gui. There are 2 ways I can do it.

  1. Create a new Github repo just for the customsources.json. This way there could be version numbers and the program can check for new versions of customsources.json. This way the file would only be downloaded if you guys pushed a new version of the file. I could use the Version Parser already implemented into Funkii-UI.

  2. Always download a copy of the file every time the program starts. A new file would be downloaded every time, even if it is already up-do-date. You would just push customsources.json to the master branch of ACO_WUP_DOWNLOADER. This approach wouldn't require any version numbering but it would download the entire repo and only extract a single file every time the program starts.

Let me know and I will get started on it. Shouldn't take too long at all.

dojafoja commented 5 years ago

Any thoughts on your preference? If I don't hear back from you soon then I'm going with option 2. I should have time today to get this done.

GeovanniMCh commented 5 years ago

Excuse me for not answering I thought you had decided haha ​​sorry. my colleagues say that option 1 is more feasible to create another repo and send to update because the Alucardians are people who cost them rice with mango and to avoid silly questions

dojafoja commented 5 years ago

Ok I think option 1 is better too. It just requires a little more work for you guys because you will need to release "versions" of the file. The program is already setup to parse version numbers from the Github repo so it's easy to add this feature.

I will add an option in the customsources manager to increment the version number easily. Then just draft a release on Github with the same version number as the one you set in the customsources.json file.

Simple..... I will get started on it right away.

GeovanniMCh commented 5 years ago

perfect Bro I know that for you nothing is impossible you're a crack in this

GeovanniMCh commented 5 years ago

friend if you notice that it is getting complicated use option 2

dojafoja commented 5 years ago

It's not that. I have been dealing with a medical situation bro! I spent all day Saturday in the hospital with a kidney stone. Sunday I was just exhausted. I started working on it today and have a version that is almostt functional. Something is failing while downloading the customsources.json and I need to look into what's going wrong. Its probably a typo or something. I will look into it tonight.

GeovanniMCh commented 5 years ago

brother that you follow better in the kidneys is fatal hurts a lot give yourself the time you need

dojafoja commented 5 years ago

OK I am done with everything except for cleaning up the source code. I might just leave it how it is for now until I find time in the future to clean up the source code. I created 2 new repos on Github for testing purposes only. Everything seems to be working fine on my end. Here are the working repos: REPO FOR GUI REPO FOR CUSTOMSOURCES Please use the new version of manage-sources.pyw contained in the repo. It has an option to increment the version number of customsources.json The next step for you is to push everything to your Github in 2 separate repos. Do not name them too similar or it can confuse the version parser. I would recommend beginning the customsources repo name with something like "_". For example: " _CustomSources" This will also let everyone who views the repo know that it is used internally by another program.

To update the program OR the customsources, do this:

  1. Make any modifications to the files locally.
  2. Increment the version number on the local file
  3. Commit the changes in git and push the files to Github
  4. Create new release on Github following this convention: Match the Github release name to the version number contained in the file but prefixed with a 'v'. For example if the version number in the file is '0.0.3' you would name the Github release 'v0.0.3'. You must follow this convention or it will not parse the versions proplerly
dojafoja commented 5 years ago

Let me know if you need more help getting everything setup. Don't forget to change the URL's in gui.py to match your repo URL's

GeovanniMCh commented 5 years ago

thank you very much brother. When he arrives at my house he checked it and I have the team try to see if everything is perfect to see if we can also make it work hahaha because it costs us a lot

GeovanniMCh commented 5 years ago

friend we are grateful with your work, but there is a misunderstanding, just revise the revisions but the custom.json is updated with the manager, and we do not want the users to have that because they would add link and it would become a mess we thought would be lowered from the same gui as the tiquet.json that has download button

dojafoja commented 5 years ago

I don't know what you are talking about. Maybe I don't understand the translation. The customsources.json is downloaded automatically from your Github if the version on Github is newer than the existing file on the users computer. The manage-sources.pyw is for you guys. It's NOT for your users. Do NOT include it in your repo. I don't understand why you think it needs to be included. I only included it so that you would have it. Everything is done automatically. If a new customsources.json revision exists on Github, it is automatically downloaded by the program and there is no need to click a button to download it.

GeovanniMCh commented 5 years ago

I understand now everything makes sense hahaha apologize

dojafoja commented 5 years ago

No problem. Just to be clear, manage-sources.pyw does not push any files to your Github. You still have to do that yourself

GeovanniMCh commented 5 years ago

brother really thank you very much for collaborating with us and doing such a wonderful job you are a genius in programming