65.9K
CodeProject 正在变化。 阅读更多。
Home

使用 C# 和 Youtube API 1.6 管理 YouTube

starIconstarIconstarIconstarIcon
emptyStarIcon
starIcon

4.89/5 (18投票s)

2014 年 7 月 30 日

CPOL

6分钟阅读

viewsIcon

34490

downloadIcon

3189

修订版本:“使用 C# 和 Youtube API 1.6 管理 YouTube”

引言

YouTube 是一个非常强大的平台。

这主要是对 Ajit Hegde 的《使用 C# 和 Youtube API 1.6 管理 YouTube》一文的乐趣性修订。 

虽然由于 API 2.3 的关闭,播放列表和下一页的 Feed 大部分已失效(API 2.3 迁移指南),但对于想了解 YouTube API 如何工作的人来说,其中的逻辑和思路仍然存在。

原版本中存在许多小的 bug。例如未链接的按钮和无用的变量,这是一个很可惜的地方,因为这是一个很好的例子。

本次修订

  • 删除了所有未使用的变量/引用。
  • 重新组织了代码。
  • 修复了应用程序布局中的许多格式问题。
  • 将过大的字体更改为合理的大小。
  • 没有使用 shockwave player,我改用了浏览器。
  • 修复了未选择文件上传时会导致应用程序崩溃的 Bug。
  • 修复了大型文件上传后超时并导致应用程序崩溃的 Bug。
  • 许多其他小的改进。

修订过程和思路

参考文献

由于 C# 的特性,您添加到引用列表中的每一个引用都会减慢应用程序的启动时间,并在您的内存中占用未使用的空间。加快应用程序速度的最快方法之一就是删除这些不必要的引用。

.NET Framework 3.5 的引用系统可以在单个应用程序中使用超过 5,000 种功能。虽然这与 System.Windows.Forms 中大约 30,000 种用法相比不算多,但 System 中的大多数用法构成了您应用程序的主体。然而,以 System 为例,.NET Framework 的 System 拥有大约一百个子引用。范围从 System.AddIn 到 System.Xml。其中一些,如 System.Xml,甚至还有子子引用。

对于初学者来说,哪些引用是他们需要的,这可能相当令人困惑。这就是为什么我总是说:“先完成工作,然后再进行清理。”您可以安全地从项目中删除/删除这些引用,如果需要,以后再重新添加。

一个快速提示:如果您有能力使用内置引用(如 System)来替换插件引用(如 ShockwaveFlashObjects),请这样做。虽然您可能需要更改代码以反映这些更改,但根据我的经验,C# 应用程序中插件引用越少,客户计算机上的稳定性和速度就越好。它还确保了您应用程序的独立性。

在这种情况下,我删除了很多引用。

以前

Before

操作后

After

删除引用时,请确保同时删除 .cs 文件顶部的“using [referencename/sub-name];”语句(如果尚未自动删除),否则速度提升将无法实现。

在此项目中,Log-in.cs 文件中有

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using Google.GData.Client;
using Google.GData.Extensions;
using Google.GData.YouTube;
using Google.GData.Extensions.MediaRss;
using Google.YouTube;

在(所有更改后)它**仅需要:**

using System;
using System.Diagnostics;*
using System.Net;*
using System.Windows.Forms;
using Google.GData.YouTube;

          *Added in for link to Create Account. 

这样计算机启动该 .cs 文件所需的工作量就大大减少了。从而使应用程序对用户更加响应。

崩溃修复

这一点怎么强调都不为过。在创建应用程序时,请务必始终考虑用户可能的操作。大多数开发人员在使用应用程序时会遵循一套流程,按照预期的方式进行操作(当然,他们是创建者)。除非他们设计的应用程序确保用户**只能**以某种方式操作,否则用户很可能会采取不同的方式。

这是应用程序崩溃的主要原因。开发人员没有使其可以以其他方式使用,这就是为什么 return 命令如此有用的原因。

举个例子。点击此按钮将获取一个文件位置,并为 Title Textbox 提供一个名称。

        private void btnChoosefile_Click(object sender, EventArgs e)
        {
            string tmp;
            choosefile.ShowDialog();
            tmp  = choosefile.FileName;
            txtFilepath.Text  = tmp ;
            string[] title=tmp.Split('\\');
            int i = title.GetUpperBound(0);
            string temp = title[i];
            string[] title1 = temp.Split('.');
            txtTitle.Text = title1[0];
            filename =tmp.Replace("\\","\\\\");
            filetype = title1[1];
        }

这看起来可能没问题,但有一个问题。如果用户未选择文件怎么办?应用程序将收到一个 null 错误并崩溃。为了避免这种情况,所有开发人员需要做的就是更改一些措辞。

        private void btnChoosefile_Click(object sender, EventArgs e)
        {
            if (choosefile.ShowDialog() != DialogResult.OK) return;
            var tmp = choosefile.FileName;
            txtFilepath.Text = tmp;
            var title = tmp.Split('\\');
            var i = title.GetUpperBound(0);
            var temp = title[i];
            var title1 = temp.Split('.');
            txtTitle.Text = title1[0];
            filename = tmp.Replace("\\", "\\\\");
            filetype = title1[1];
        }

该 if 语句可以防止崩溃。如果用户未选择 OK,则什么也不会发生(return 命令使这成为可能)。ShowDialog() 是一个很好的命令,因为它在没有有效文件的情况下不会退出,所以用户只能到达第二行,前提是选择了一个有效文件并按下了 OK。

这是另一个关于如何从 ShowDialog() 或 MessageBox.Show 中检索响应的例子。

            DialogResult result = MessageBox.Show("Please click yes.", "Just press it.", MessageBoxButtons.YesNo,MessageBoxIcon.Question);

            if (result == DialogResult.Yes)
            {
                MessageBox.Show("I will now take over the world.", "It's the final countdown", MessageBoxButtons.OK,MessageBoxIcon.Warning);
                WorldBoom();
            }

此语句创建一个带有“是”和“否”按钮的消息框。如果用户按下“是”,世界将毁灭(开玩笑)。然而,它确保**只有**正确的预定路径才能被采用。

格式化

您的应用程序的外观和感觉将对用户使用它的时长以及体验的愉快程度产生持久的影响。没有什么比找不到东西更令人沮丧的了。这就是为什么公司如此注重易用性。

然而,更令人沮丧的是,当你按下一个按钮但什么都没发生。后台可能正在发生一些事情,但如果你不让用户知道有事情在发生,他也不会知道。有道理吧?

故事的核心是:确保用户端最终会发生一些事情。如果命令很长,请确保您也有一些起始的提示。您可以使用文本框或标签等来显示正在进行的操作。

如果一个按钮没有链接到命令和/或没有意义,**请删除它**。它是无意义的。如果您计划稍后集成某些内容并想使用该按钮,**请隐藏它**,直到准备好为止。否则,如果您有一个连接到语句的按钮并且它按预期工作,**请显示它**。

开发人员喜欢 MenuStrips。可以理解,因为它们可以轻松地组织事物。您甚至可以在菜单中组织菜单,使一切井井有条。然而,它们也可能是用户的头号敌人。太多的菜单会使导航应用程序变得极其复杂,更不用说管理了。

要解决这个问题,可以使用“在不必要时阻止或隐藏”的方法。在应用程序中执行特定命令时,您可以**禁用或隐藏按钮**。命令完成后,您可以**重新启用或显示按钮**。这可以清理您的应用程序在使用时,并为用户提供更流畅的体验。

禁用按钮

Button.Enabled = false;

隐藏按钮

Button.Visible = false;

只需将 false 改为 true 即可执行相反的操作。

Application

以上所有修订说明是我在此修订版本中所做的工作。修复了小 bug 并改进了布局。

这是它以前的样子

Old- Login page

Old mainpageOld account

old Upload

这是它现在的样子

Sexy Login

Man that text change make's it look soooo much better.How do you like secrets?Did you find it?

总的来说,这次修订给应用程序带来了全新的感觉,代码也更加简洁。

看看并与原始版本进行比较。祝您愉快!

© . All rights reserved.